(searchAndInvoke: boolean)
| 346 | ].join("\n"); |
| 347 | |
| 348 | const createArtifactSkillBody = (searchAndInvoke: boolean): string => |
| 349 | [ |
| 350 | "# create-artifact", |
| 351 | "", |
| 352 | "## Discover accounts and data", |
| 353 | "", |
| 354 | ...(searchAndInvoke |
| 355 | ? [ |
| 356 | "1. Call `integrations({})` to choose an account. Its `integration`, `owner`, and `connection` fields form the artifact binding, joined with dots.", |
| 357 | '2. Call `search({ query: "list issues", integration: "linear", owner: "org", connection: "linearProd" })` using that account. Read the returned inputSchema.', |
| 358 | "3. Call `invoke({ tool: <exact returned id>, arguments: <JSON input> })` to inspect a small sample response. Use search and invoke, not general code execution, to learn the data shape.", |
| 359 | ] |
| 360 | : [ |
| 361 | '1. Use `execute` to call `tools.search({ query: "list issues" })`, then `tools.describe.tool({ path })` to inspect the matched tool.', |
| 362 | "2. Use `tools.executor.coreTools.connections.list({})` for saved accounts. The connection address without its leading `tools.` is the artifact binding.", |
| 363 | "3. Call the discovered tool in `execute` to inspect a small sample response.", |
| 364 | ]), |
| 365 | "", |
| 366 | CREATE_ARTIFACT_SKILL_BODY, |
| 367 | ].join("\n"); |
| 368 | |
| 369 | export const CREATE_ARTIFACT_SKILL: Skill = { |
| 370 | name: "create-artifact", |
no outgoing calls
no test coverage detected