@ghx-dev/core 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +2 -2
- package/README.md +44 -37
- package/dist/cards/issue.assignees.add.yaml +1 -0
- package/dist/cards/issue.assignees.remove.yaml +1 -0
- package/dist/cards/issue.assignees.set.yaml +1 -0
- package/dist/cards/issue.close.yaml +1 -0
- package/dist/cards/issue.comments.create.yaml +1 -0
- package/dist/cards/issue.comments.list.yaml +1 -0
- package/dist/cards/issue.create.yaml +1 -0
- package/dist/cards/issue.delete.yaml +1 -0
- package/dist/cards/issue.labels.add.yaml +1 -0
- package/dist/cards/issue.labels.remove.yaml +1 -0
- package/dist/cards/issue.labels.set.yaml +1 -0
- package/dist/cards/issue.list.yaml +1 -0
- package/dist/cards/issue.milestone.clear.yaml +1 -0
- package/dist/cards/issue.milestone.set.yaml +1 -0
- package/dist/cards/issue.relations.blocked_by.add.yaml +1 -0
- package/dist/cards/issue.relations.blocked_by.remove.yaml +1 -0
- package/dist/cards/issue.relations.parent.remove.yaml +1 -0
- package/dist/cards/issue.relations.parent.set.yaml +1 -0
- package/dist/cards/issue.relations.prs.list.yaml +1 -0
- package/dist/cards/issue.relations.view.yaml +1 -0
- package/dist/cards/issue.reopen.yaml +1 -0
- package/dist/cards/issue.update.yaml +1 -0
- package/dist/cards/issue.view.yaml +1 -0
- package/dist/cards/pr.assignees.add.yaml +6 -2
- package/dist/cards/pr.assignees.remove.yaml +6 -2
- package/dist/cards/pr.branch.update.yaml +6 -2
- package/dist/cards/pr.create.yaml +7 -3
- package/dist/cards/pr.diff.files.yaml +1 -0
- package/dist/cards/pr.list.yaml +1 -0
- package/dist/cards/pr.merge.status.yaml +1 -0
- package/dist/cards/pr.merge.yaml +9 -3
- package/dist/cards/pr.reviews.list.yaml +1 -0
- package/dist/cards/pr.reviews.request.yaml +6 -3
- package/dist/cards/pr.reviews.submit.yaml +1 -0
- package/dist/cards/pr.threads.list.yaml +1 -0
- package/dist/cards/pr.threads.reply.yaml +1 -0
- package/dist/cards/pr.threads.resolve.yaml +1 -0
- package/dist/cards/pr.threads.unresolve.yaml +1 -0
- package/dist/cards/pr.update.yaml +7 -2
- package/dist/cards/pr.view.yaml +1 -0
- package/dist/cards/project_v2.fields.list.yaml +18 -2
- package/dist/cards/project_v2.items.field.update.yaml +8 -5
- package/dist/cards/project_v2.items.issue.add.yaml +9 -5
- package/dist/cards/project_v2.items.issue.remove.yaml +8 -5
- package/dist/cards/project_v2.items.list.yaml +8 -2
- package/dist/cards/project_v2.org.view.yaml +6 -2
- package/dist/cards/project_v2.user.view.yaml +6 -2
- package/dist/cards/release.list.yaml +8 -3
- package/dist/cards/release.view.yaml +8 -4
- package/dist/cards/repo.issue_types.list.yaml +7 -3
- package/dist/cards/repo.labels.list.yaml +7 -2
- package/dist/cards/repo.view.yaml +1 -0
- package/dist/chunk-7HUKYNI2.js +536 -0
- package/dist/chunk-7HUKYNI2.js.map +1 -0
- package/dist/chunk-GQO6BHJV.js +98 -0
- package/dist/chunk-GQO6BHJV.js.map +1 -0
- package/dist/chunk-H7CLZHRO.js +280 -0
- package/dist/chunk-H7CLZHRO.js.map +1 -0
- package/dist/{chunk-3P3KHWFU.js → chunk-M5PJLKL5.js} +1079 -726
- package/dist/chunk-M5PJLKL5.js.map +1 -0
- package/dist/chunk-NQ53ETYV.js +128 -0
- package/dist/chunk-NQ53ETYV.js.map +1 -0
- package/dist/{chunk-BIWBJA2F.js → chunk-OQWLEFAH.js} +220 -12
- package/dist/chunk-OQWLEFAH.js.map +1 -0
- package/dist/{chunk-Q7RCIK2C.js → chunk-Q2NW7DJE.js} +167 -62
- package/dist/chunk-Q2NW7DJE.js.map +1 -0
- package/dist/{pr-queries-UOEOXIJQ.js → chunk-QRHKAMRY.js} +11 -131
- package/dist/chunk-QRHKAMRY.js.map +1 -0
- package/dist/{issue-queries-GRA4MKPD.js → chunk-TGL33GEA.js} +7 -83
- package/dist/chunk-TGL33GEA.js.map +1 -0
- package/dist/chunk-ZGBVX2VG.js +32 -0
- package/dist/chunk-ZGBVX2VG.js.map +1 -0
- package/dist/cli/index.js +79 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/core/registry/cards/issue.assignees.add.yaml +1 -0
- package/dist/core/registry/cards/issue.assignees.remove.yaml +1 -0
- package/dist/core/registry/cards/issue.assignees.set.yaml +1 -0
- package/dist/core/registry/cards/issue.close.yaml +1 -0
- package/dist/core/registry/cards/issue.comments.create.yaml +1 -0
- package/dist/core/registry/cards/issue.comments.list.yaml +1 -0
- package/dist/core/registry/cards/issue.create.yaml +1 -0
- package/dist/core/registry/cards/issue.delete.yaml +1 -0
- package/dist/core/registry/cards/issue.labels.add.yaml +1 -0
- package/dist/core/registry/cards/issue.labels.remove.yaml +1 -0
- package/dist/core/registry/cards/issue.labels.set.yaml +1 -0
- package/dist/core/registry/cards/issue.list.yaml +1 -0
- package/dist/core/registry/cards/issue.milestone.clear.yaml +1 -0
- package/dist/core/registry/cards/issue.milestone.set.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.blocked_by.add.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.blocked_by.remove.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.parent.remove.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.parent.set.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.prs.list.yaml +1 -0
- package/dist/core/registry/cards/issue.relations.view.yaml +1 -0
- package/dist/core/registry/cards/issue.reopen.yaml +1 -0
- package/dist/core/registry/cards/issue.update.yaml +1 -0
- package/dist/core/registry/cards/issue.view.yaml +1 -0
- package/dist/core/registry/cards/pr.assignees.add.yaml +6 -2
- package/dist/core/registry/cards/pr.assignees.remove.yaml +6 -2
- package/dist/core/registry/cards/pr.branch.update.yaml +6 -2
- package/dist/core/registry/cards/pr.create.yaml +7 -3
- package/dist/core/registry/cards/pr.diff.files.yaml +1 -0
- package/dist/core/registry/cards/pr.list.yaml +1 -0
- package/dist/core/registry/cards/pr.merge.status.yaml +1 -0
- package/dist/core/registry/cards/pr.merge.yaml +9 -3
- package/dist/core/registry/cards/pr.reviews.list.yaml +1 -0
- package/dist/core/registry/cards/pr.reviews.request.yaml +6 -3
- package/dist/core/registry/cards/pr.reviews.submit.yaml +1 -0
- package/dist/core/registry/cards/pr.threads.list.yaml +1 -0
- package/dist/core/registry/cards/pr.threads.reply.yaml +1 -0
- package/dist/core/registry/cards/pr.threads.resolve.yaml +1 -0
- package/dist/core/registry/cards/pr.threads.unresolve.yaml +1 -0
- package/dist/core/registry/cards/pr.update.yaml +7 -2
- package/dist/core/registry/cards/pr.view.yaml +1 -0
- package/dist/core/registry/cards/project_v2.fields.list.yaml +18 -2
- package/dist/core/registry/cards/project_v2.items.field.update.yaml +8 -5
- package/dist/core/registry/cards/project_v2.items.issue.add.yaml +9 -5
- package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +8 -5
- package/dist/core/registry/cards/project_v2.items.list.yaml +8 -2
- package/dist/core/registry/cards/project_v2.org.view.yaml +6 -2
- package/dist/core/registry/cards/project_v2.user.view.yaml +6 -2
- package/dist/core/registry/cards/release.list.yaml +8 -3
- package/dist/core/registry/cards/release.view.yaml +8 -4
- package/dist/core/registry/cards/repo.issue_types.list.yaml +7 -3
- package/dist/core/registry/cards/repo.labels.list.yaml +7 -2
- package/dist/core/registry/cards/repo.view.yaml +1 -0
- package/dist/index.d.ts +297 -0
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/{issue-mutations-FJNZW7L5.js → issue-mutations-OW464JP3.js} +97 -120
- package/dist/issue-mutations-OW464JP3.js.map +1 -0
- package/dist/issue-queries-ORG3VPK4.js +93 -0
- package/dist/issue-queries-ORG3VPK4.js.map +1 -0
- package/dist/{pr-mutations-UG67YOF5.js → pr-mutations-WOTG6FAB.js} +234 -94
- package/dist/pr-mutations-WOTG6FAB.js.map +1 -0
- package/dist/pr-queries-6CJJW7BT.js +143 -0
- package/dist/pr-queries-6CJJW7BT.js.map +1 -0
- package/dist/project-QFSCYDDW.js +429 -0
- package/dist/project-QFSCYDDW.js.map +1 -0
- package/dist/release-33236BBA.js +57 -0
- package/dist/release-33236BBA.js.map +1 -0
- package/dist/repo-M6DKCWBG.js +82 -0
- package/dist/repo-M6DKCWBG.js.map +1 -0
- package/package.json +6 -6
- package/skills/using-ghx/SKILL.md +76 -10
- package/dist/chunk-3P3KHWFU.js.map +0 -1
- package/dist/chunk-BIWBJA2F.js.map +0 -1
- package/dist/chunk-Q7RCIK2C.js.map +0 -1
- package/dist/chunk-TDABI6C7.js +0 -167
- package/dist/chunk-TDABI6C7.js.map +0 -1
- package/dist/issue-mutations-FJNZW7L5.js.map +0 -1
- package/dist/issue-queries-GRA4MKPD.js.map +0 -1
- package/dist/pr-mutations-UG67YOF5.js.map +0 -1
- package/dist/pr-queries-UOEOXIJQ.js.map +0 -1
- package/dist/repo-JDUHFPZF.js +0 -66
- package/dist/repo-JDUHFPZF.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/execution/cli/safe-runner.ts","../src/core/registry/index.ts","../src/core/registry/ajv-instance.ts","../src/core/registry/operation-card-schema.ts","../src/core/registry/schema-utils.ts","../src/core/registry/explain-capability.ts","../src/core/registry/list-capabilities.ts","../src/core/routing/resolution-cache.ts","../src/core/errors/codes.ts","../src/core/telemetry/log.ts","../src/core/telemetry/logger.ts","../src/core/errors/map-error.ts","../src/core/routing/engine/assemble.ts","../src/core/execution/normalizer.ts","../src/core/registry/schema-validator.ts","../src/core/execute/execute.ts","../src/core/errors/retryability.ts","../src/core/execution/adapters/cli/helpers.ts","../src/core/execution/adapters/cli/domains/issue.ts","../src/core/execution/adapters/cli/domains/pr.ts","../src/core/execution/adapters/cli/domains/project-v2.ts","../src/core/execution/adapters/cli/domains/release.ts","../src/core/execution/adapters/cli/domains/repo.ts","../src/core/execution/adapters/cli/domains/workflow.ts","../src/core/execution/adapters/cli/capability-registry.ts","../src/core/execution/adapters/cli-capability-adapter.ts","../src/gql/capability-registry.ts","../src/core/execution/adapters/graphql-capability-adapter.ts","../src/core/execution/preflight.ts","../src/core/routing/policy.ts","../src/core/routing/engine/cli-detect.ts","../src/core/routing/engine/single.ts","../src/core/routing/engine/cli-dispatch.ts","../src/gql/batch.ts","../src/gql/operations/issue-assignees-lookup.generated.ts","../src/gql/operations/issue-labels-lookup.generated.ts","../src/gql/operations/issue-milestone-lookup.generated.ts","../src/gql/document-registry.ts","../src/gql/resolve.ts","../src/core/routing/engine/execute.ts","../src/core/routing/engine/preflight.ts","../src/core/routing/engine/resolve.ts","../src/core/routing/engine/batch.ts","../src/core/routing/engine/index.ts","../src/gql/github-client.ts"],"sourcesContent":["import { spawn } from \"node:child_process\"\n\nimport type { CliCommandRunner } from \"../adapters/cli-capability-adapter.js\"\n\nconst DEFAULT_MAX_OUTPUT_BYTES = 1_000_000\n\ntype SafeRunnerOptions = {\n maxOutputBytes?: number\n}\n\nexport function createSafeCliCommandRunner(options?: SafeRunnerOptions): CliCommandRunner {\n const maxOutputBytes = options?.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES\n\n return {\n run(\n command: string,\n args: string[],\n timeoutMs: number,\n ): Promise<{ stdout: string; stderr: string; exitCode: number }> {\n if (timeoutMs <= 0) {\n return Promise.reject(new Error(\"timeoutMs must be a positive number\"))\n }\n\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n shell: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n })\n\n const stdoutChunks: Buffer[] = []\n const stderrChunks: Buffer[] = []\n let stdoutSize = 0\n let stderrSize = 0\n let failureReason: \"timeout\" | \"overflow\" | null = null\n let settled = false\n\n const timer = setTimeout(() => {\n if (failureReason === null) {\n failureReason = \"timeout\"\n }\n child.kill(\"SIGKILL\")\n }, timeoutMs)\n\n function settleError(error: Error): void {\n if (settled) {\n return\n }\n\n settled = true\n clearTimeout(timer)\n reject(error)\n }\n\n function settleSuccess(stdout: string, stderr: string, exitCode: number): void {\n if (settled) {\n return\n }\n\n settled = true\n clearTimeout(timer)\n resolve({ stdout, stderr, exitCode })\n }\n\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n if (failureReason === \"overflow\") {\n return\n }\n\n stdoutSize += chunk.length\n if (stdoutSize + stderrSize > maxOutputBytes) {\n if (failureReason === null) {\n failureReason = \"overflow\"\n clearTimeout(timer)\n child.kill(\"SIGKILL\")\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n child.kill(\"SIGKILL\")\n return\n }\n\n stdoutChunks.push(chunk)\n })\n\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n if (failureReason === \"overflow\") {\n return\n }\n\n stderrSize += chunk.length\n if (stdoutSize + stderrSize > maxOutputBytes) {\n if (failureReason === null) {\n failureReason = \"overflow\"\n clearTimeout(timer)\n child.kill(\"SIGKILL\")\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n child.kill(\"SIGKILL\")\n return\n }\n\n stderrChunks.push(chunk)\n })\n\n child.on(\"error\", (error) => {\n settleError(error)\n })\n\n child.on(\"close\", (code) => {\n if (failureReason === \"timeout\") {\n settleError(new Error(`CLI command timed out after ${timeoutMs}ms`))\n return\n }\n\n if (failureReason === \"overflow\") {\n settleError(new Error(`CLI output exceeded ${maxOutputBytes} bytes`))\n return\n }\n\n settleSuccess(\n Buffer.concat(stdoutChunks).toString(\"utf8\"),\n Buffer.concat(stderrChunks).toString(\"utf8\"),\n code ?? 1,\n )\n })\n })\n },\n }\n}\n","import { readdirSync, readFileSync } from \"node:fs\"\nimport { dirname, extname, join } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\n\nimport { load as parseYaml } from \"js-yaml\"\nimport { ajv } from \"./ajv-instance.js\"\nimport { operationCardSchema } from \"./operation-card-schema.js\"\nimport type { OperationCard } from \"./types.js\"\n\nconst validateCard = ajv.compile(operationCardSchema)\n\nfunction cardDirectory(): string {\n const currentDir = dirname(fileURLToPath(import.meta.url))\n return join(currentDir, \"cards\")\n}\n\nfunction loadCardsFromYaml(): OperationCard[] {\n const directory = cardDirectory()\n const preferredOrder = [\n \"repo.view\",\n \"repo.labels.list\",\n \"repo.issue_types.list\",\n \"issue.view\",\n \"issue.list\",\n \"issue.comments.list\",\n \"issue.create\",\n \"issue.update\",\n \"issue.close\",\n \"issue.reopen\",\n \"issue.delete\",\n \"issue.labels.set\",\n \"issue.labels.add\",\n \"issue.labels.remove\",\n \"issue.assignees.set\",\n \"issue.assignees.add\",\n \"issue.assignees.remove\",\n \"issue.milestone.set\",\n \"issue.milestone.clear\",\n \"issue.comments.create\",\n \"issue.relations.prs.list\",\n \"issue.relations.view\",\n \"issue.relations.parent.set\",\n \"issue.relations.parent.remove\",\n \"issue.relations.blocked_by.add\",\n \"issue.relations.blocked_by.remove\",\n \"pr.view\",\n \"pr.list\",\n \"pr.create\",\n \"pr.update\",\n \"pr.threads.list\",\n \"pr.threads.reply\",\n \"pr.threads.resolve\",\n \"pr.threads.unresolve\",\n \"pr.reviews.list\",\n \"pr.reviews.request\",\n \"pr.reviews.submit\",\n \"pr.diff.files\",\n \"pr.diff.view\",\n \"pr.checks.list\",\n \"pr.checks.rerun.failed\",\n \"pr.checks.rerun.all\",\n \"pr.merge.status\",\n \"pr.merge\",\n \"pr.assignees.add\",\n \"pr.assignees.remove\",\n \"pr.branch.update\",\n \"workflow.list\",\n \"workflow.view\",\n \"project_v2.org.view\",\n \"project_v2.user.view\",\n \"project_v2.fields.list\",\n \"project_v2.items.list\",\n \"project_v2.items.issue.add\",\n \"project_v2.items.issue.remove\",\n \"project_v2.items.field.update\",\n \"release.list\",\n \"release.view\",\n \"release.create\",\n \"release.update\",\n \"release.publish\",\n \"workflow.dispatch\",\n \"workflow.job.logs.view\",\n \"workflow.job.logs.raw\",\n \"workflow.run.artifacts.list\",\n \"workflow.run.cancel\",\n \"workflow.run.rerun.all\",\n \"workflow.run.rerun.failed\",\n \"workflow.run.view\",\n \"workflow.runs.list\",\n ]\n const orderMap = new Map(preferredOrder.map((id, index) => [id, index]))\n\n const entries = readdirSync(directory)\n .filter((entry) => {\n const extension = extname(entry).toLowerCase()\n return extension === \".yaml\" || extension === \".yml\"\n })\n .sort((a, b) => {\n const capabilityA = a.replace(/\\.ya?ml$/i, \"\")\n const capabilityB = b.replace(/\\.ya?ml$/i, \"\")\n const orderA = orderMap.get(capabilityA) ?? Number.MAX_SAFE_INTEGER\n const orderB = orderMap.get(capabilityB) ?? Number.MAX_SAFE_INTEGER\n\n if (orderA !== orderB) {\n return orderA - orderB\n }\n\n return a.localeCompare(b)\n })\n\n return entries.map((entry): OperationCard => {\n const filePath = join(directory, entry)\n const raw = readFileSync(filePath, \"utf8\")\n const parsed = parseYaml(raw)\n const validation = validateOperationCard(parsed)\n if (!validation.ok) {\n throw new Error(`Invalid operation card '${entry}': ${validation.error}`)\n }\n\n return parsed as OperationCard\n })\n}\n\nexport function validateOperationCard(card: unknown): { ok: true } | { ok: false; error: string } {\n const valid = validateCard(card)\n if (!valid) {\n const message = validateCard.errors?.[0]?.message ?? \"Operation card schema validation failed\"\n return { ok: false, error: message }\n }\n\n return { ok: true }\n}\n\nconst operationCards = loadCardsFromYaml()\n\nexport function listOperationCards(): OperationCard[] {\n return [...operationCards]\n}\n\nexport function getOperationCard(capabilityId: string): OperationCard | undefined {\n return operationCards.find((card) => card.capability_id === capabilityId)\n}\n","import { Ajv } from \"ajv\"\n\nexport const ajv = new Ajv({ allErrors: true, strict: false })\n","export const operationCardSchema = {\n $id: \"https://ghx.local/schemas/operation-card.json\",\n type: \"object\",\n required: [\"capability_id\", \"version\", \"description\", \"input_schema\", \"output_schema\", \"routing\"],\n properties: {\n capability_id: { type: \"string\", minLength: 1 },\n version: { type: \"string\", minLength: 1 },\n description: { type: \"string\", minLength: 1 },\n input_schema: { type: \"object\" },\n output_schema: { type: \"object\" },\n routing: {\n type: \"object\",\n required: [\"preferred\", \"fallbacks\"],\n properties: {\n preferred: { enum: [\"cli\", \"graphql\", \"rest\"] },\n fallbacks: {\n type: \"array\",\n items: { enum: [\"cli\", \"graphql\", \"rest\"] },\n },\n suitability: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"when\", \"predicate\", \"reason\"],\n properties: {\n when: { enum: [\"always\", \"env\", \"params\"] },\n predicate: { type: \"string\", minLength: 1 },\n reason: { type: \"string\", minLength: 1 },\n },\n additionalProperties: false,\n },\n },\n notes: {\n type: \"array\",\n items: { type: \"string\" },\n },\n },\n additionalProperties: false,\n },\n graphql: {\n type: \"object\",\n required: [\"operationName\", \"operationType\", \"documentPath\"],\n properties: {\n operationName: { type: \"string\", minLength: 1 },\n operationType: { enum: [\"query\", \"mutation\"] },\n documentPath: { type: \"string\", minLength: 1 },\n variables: { type: \"object\" },\n limits: {\n type: \"object\",\n properties: {\n maxPageSize: { type: \"number\" },\n },\n additionalProperties: false,\n },\n resolution: {\n type: \"object\",\n required: [\"lookup\", \"inject\"],\n properties: {\n lookup: {\n type: \"object\",\n required: [\"operationName\", \"documentPath\", \"vars\"],\n properties: {\n operationName: { type: \"string\", minLength: 1 },\n documentPath: { type: \"string\", minLength: 1 },\n vars: { type: \"object\" },\n },\n additionalProperties: false,\n },\n inject: {\n type: \"array\",\n minItems: 1,\n items: {\n oneOf: [\n {\n type: \"object\",\n required: [\"target\", \"source\", \"path\"],\n properties: {\n target: { type: \"string\", minLength: 1 },\n source: { const: \"scalar\" },\n path: { type: \"string\", minLength: 1 },\n },\n additionalProperties: false,\n },\n {\n type: \"object\",\n required: [\n \"target\",\n \"source\",\n \"from_input\",\n \"nodes_path\",\n \"match_field\",\n \"extract_field\",\n ],\n properties: {\n target: { type: \"string\", minLength: 1 },\n source: { const: \"map_array\" },\n from_input: { type: \"string\", minLength: 1 },\n nodes_path: { type: \"string\", minLength: 1, pattern: \"\\\\.nodes$\" },\n match_field: { type: \"string\", minLength: 1 },\n extract_field: { type: \"string\", minLength: 1 },\n },\n additionalProperties: false,\n },\n {\n type: \"object\",\n required: [\"target\", \"source\", \"from_input\"],\n properties: {\n target: { type: \"string\", minLength: 1 },\n source: { const: \"input\" },\n from_input: { type: \"string\", minLength: 1 },\n },\n additionalProperties: false,\n },\n {\n type: \"object\",\n required: [\"target\", \"source\"],\n properties: {\n target: { type: \"string\", minLength: 1 },\n source: { const: \"null_literal\" },\n },\n additionalProperties: false,\n },\n ],\n },\n },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\n cli: {\n type: \"object\",\n required: [\"command\"],\n properties: {\n command: { type: \"string\", minLength: 1 },\n jsonFields: {\n type: \"array\",\n items: { type: \"string\", minLength: 1 },\n },\n jq: { type: \"string\" },\n limits: {\n type: \"object\",\n properties: {\n maxItemsPerCall: { type: \"number\" },\n },\n additionalProperties: false,\n },\n },\n additionalProperties: false,\n },\n rest: {\n type: \"object\",\n required: [\"endpoints\"],\n properties: {\n endpoints: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"method\", \"path\"],\n properties: {\n method: { type: \"string\" },\n path: { type: \"string\" },\n },\n additionalProperties: false,\n },\n },\n },\n additionalProperties: false,\n },\n examples: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"title\", \"input\"],\n properties: {\n title: { type: \"string\" },\n input: { type: \"object\" },\n },\n additionalProperties: false,\n },\n },\n },\n additionalProperties: false,\n} as const\n","export function extractRequiredInputs(\n inputSchema: Record<string, unknown> | null | undefined,\n): string[] {\n if (!inputSchema || typeof inputSchema !== \"object\") {\n return []\n }\n\n const required = (inputSchema as Record<string, unknown>).required\n if (!Array.isArray(required)) {\n return []\n }\n\n return required.filter((entry): entry is string => typeof entry === \"string\")\n}\n\nexport function extractOptionalInputs(\n inputSchema: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n if (!inputSchema || typeof inputSchema !== \"object\") return {}\n const required = new Set<string>(\n Array.isArray((inputSchema as Record<string, unknown>).required)\n ? ((inputSchema as Record<string, unknown>).required as string[])\n : [],\n )\n const properties = (inputSchema as Record<string, unknown>).properties\n if (!properties || typeof properties !== \"object\") return {}\n const result: Record<string, unknown> = {}\n for (const [key, val] of Object.entries(properties as Record<string, unknown>)) {\n if (!required.has(key)) result[key] = val\n }\n return result\n}\n\n/**\n * For each array-type property in the schema, returns its item field names\n * with required fields listed first, optional fields suffixed with \"?\".\n * Non-array properties are omitted.\n *\n * Example output: { comments: [\"path\", \"body\", \"line\", \"side?\", \"startLine?\", \"startSide?\"] }\n */\nexport function extractArrayItemHints(\n inputSchema: Record<string, unknown> | null | undefined,\n): Record<string, string[]> {\n if (!inputSchema || typeof inputSchema !== \"object\") return {}\n const properties = (inputSchema as Record<string, unknown>).properties\n if (!properties || typeof properties !== \"object\") return {}\n const result: Record<string, string[]> = {}\n for (const [key, val] of Object.entries(properties as Record<string, unknown>)) {\n if (!val || typeof val !== \"object\") continue\n const prop = val as Record<string, unknown>\n if (prop.type !== \"array\") continue\n const items = prop.items\n if (!items || typeof items !== \"object\") continue\n const itemObj = items as Record<string, unknown>\n const itemProps = itemObj.properties\n if (!itemProps || typeof itemProps !== \"object\") continue\n const requiredSet = new Set<string>(\n Array.isArray(itemObj.required) ? (itemObj.required as string[]) : [],\n )\n const requiredFields: string[] = []\n const optionalFields: string[] = []\n for (const fieldName of Object.keys(itemProps as Record<string, unknown>)) {\n if (requiredSet.has(fieldName)) {\n requiredFields.push(fieldName)\n } else {\n optionalFields.push(`${fieldName}?`)\n }\n }\n result[key] = [...requiredFields, ...optionalFields]\n }\n return result\n}\n\nexport function extractOutputFields(\n outputSchema: Record<string, unknown> | null | undefined,\n): string[] {\n if (!outputSchema || typeof outputSchema !== \"object\") {\n return []\n }\n\n const properties = (outputSchema as Record<string, unknown>).properties\n if (!properties || typeof properties !== \"object\") {\n return []\n }\n\n return Object.keys(properties)\n}\n","import { getOperationCard } from \"./index.js\"\nimport {\n extractOptionalInputs,\n extractOutputFields,\n extractRequiredInputs,\n} from \"./schema-utils.js\"\n\nexport type CapabilityExplanation = {\n capability_id: string\n purpose: string\n required_inputs: string[]\n optional_inputs: Record<string, unknown>\n preferred_route: \"cli\" | \"graphql\" | \"rest\"\n fallback_routes: Array<\"cli\" | \"graphql\" | \"rest\">\n output_fields: string[]\n}\n\nexport function explainCapability(capabilityId: string): CapabilityExplanation {\n const card = getOperationCard(capabilityId)\n if (!card) {\n throw new Error(`Unknown capability: ${capabilityId}`)\n }\n\n return {\n capability_id: card.capability_id,\n purpose: card.description,\n required_inputs: extractRequiredInputs(card.input_schema),\n optional_inputs: extractOptionalInputs(card.input_schema),\n preferred_route: card.routing.preferred,\n fallback_routes: [...card.routing.fallbacks],\n output_fields: extractOutputFields(card.output_schema),\n }\n}\n","import { listOperationCards } from \"./index.js\"\nimport { extractOptionalInputs, extractRequiredInputs } from \"./schema-utils.js\"\n\nexport type CapabilityListItem = {\n capability_id: string\n description: string\n required_inputs: string[]\n optional_inputs: string[]\n optional_inputs_detail: Record<string, unknown>\n}\n\nexport function listCapabilities(domain?: string): CapabilityListItem[] {\n let cards = listOperationCards()\n if (domain) {\n cards = cards.filter((card) => card.capability_id.split(\".\")[0] === domain)\n }\n return cards.map((card) => {\n const optionalDetail = extractOptionalInputs(card.input_schema)\n return {\n capability_id: card.capability_id,\n description: card.description,\n required_inputs: extractRequiredInputs(card.input_schema),\n optional_inputs: Object.keys(optionalDetail),\n optional_inputs_detail: optionalDetail,\n }\n })\n}\n","export interface ResolutionCache {\n get(key: string): unknown | undefined\n set(key: string, value: unknown): void\n clear(): void\n /** Current store size; may include expired entries due to lazy eviction. */\n readonly size: number\n}\n\nexport interface ResolutionCacheOptions {\n /** Time-to-live in milliseconds. Default: 60 000 (1 min). */\n ttlMs?: number\n /** Maximum number of cached entries. Default: 200. */\n maxEntries?: number\n}\n\nconst DEFAULT_TTL_MS = 60_000\nconst DEFAULT_MAX_ENTRIES = 200\n\nexport function createResolutionCache(opts?: ResolutionCacheOptions): ResolutionCache {\n const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS\n const maxEntries = opts?.maxEntries ?? DEFAULT_MAX_ENTRIES\n const store = new Map<string, { value: unknown; expiresAt: number }>()\n\n return {\n get(key: string): unknown | undefined {\n const entry = store.get(key)\n if (!entry) return undefined\n if (Date.now() > entry.expiresAt) {\n store.delete(key)\n return undefined\n }\n return entry.value\n },\n\n set(key: string, value: unknown): void {\n if (!store.has(key) && store.size >= maxEntries) {\n // Sweep expired entries before falling back to FIFO eviction\n const now = Date.now()\n const expired: string[] = []\n for (const [k, entry] of store) {\n if (now > entry.expiresAt) expired.push(k)\n }\n for (const k of expired) store.delete(k)\n // FIFO eviction if still at capacity after sweep\n if (store.size >= maxEntries) {\n const oldest = store.keys().next()\n if (!oldest.done) {\n store.delete(oldest.value)\n }\n }\n }\n store.set(key, { value, expiresAt: Date.now() + ttlMs })\n },\n\n clear(): void {\n store.clear()\n },\n\n get size(): number {\n return store.size\n },\n }\n}\n\nexport function buildCacheKey(operationName: string, variables: Record<string, unknown>): string {\n const sortedKeys = Object.keys(variables).sort()\n const sorted: Record<string, unknown> = {}\n for (const k of sortedKeys) {\n sorted[k] = variables[k]\n }\n return `${operationName}:${JSON.stringify(sorted)}`\n}\n","export const errorCodes = {\n Auth: \"AUTH\",\n NotFound: \"NOT_FOUND\",\n Validation: \"VALIDATION\",\n RateLimit: \"RATE_LIMIT\",\n Network: \"NETWORK\",\n Server: \"SERVER\",\n AdapterUnsupported: \"ADAPTER_UNSUPPORTED\",\n Unknown: \"UNKNOWN\",\n} as const\n\nexport type ErrorCode = (typeof errorCodes)[keyof typeof errorCodes]\n","import * as fs from \"node:fs\"\nimport * as os from \"node:os\"\nimport * as path from \"node:path\"\nimport { sanitizeTelemetryContext } from \"./logger.js\"\n\ndeclare const __GHX_VERSION__: string\n\nconst LOG_LEVELS = [\"debug\", \"info\", \"warn\", \"error\"] as const\ntype LogLevel = (typeof LOG_LEVELS)[number]\n\ntype LoggerConfig = {\n level: LogLevel | \"off\"\n dir: string\n pid: number\n ppid: number\n}\n\ninterface Logger {\n debug(msg: string, ctx?: Record<string, unknown>): void\n info(msg: string, ctx?: Record<string, unknown>): void\n warn(msg: string, ctx?: Record<string, unknown>): void\n error(msg: string, ctx?: Record<string, unknown>): void\n}\n\nfunction resolveLevel(raw: string | undefined): LogLevel | \"off\" {\n if (!raw) return \"off\"\n const normalized = raw.toLowerCase()\n if ((LOG_LEVELS as readonly string[]).includes(normalized)) {\n return normalized as LogLevel\n }\n return \"info\"\n}\n\nexport function buildLogFilePath(dir: string, date: Date): string {\n const yyyy = date.getUTCFullYear()\n const mm = String(date.getUTCMonth() + 1).padStart(2, \"0\")\n const dd = String(date.getUTCDate()).padStart(2, \"0\")\n return path.join(dir, `ghx-${yyyy}-${mm}-${dd}.jsonl`)\n}\n\nexport function createLoggerConfig(): LoggerConfig {\n const rawDir = process.env.GHX_LOG_DIR ?? path.join(os.homedir(), \".ghx\", \"logs\")\n return {\n level: resolveLevel(process.env.GHX_LOG_LEVEL),\n dir: rawDir,\n pid: process.pid,\n ppid: process.ppid,\n }\n}\n\nfunction levelIndex(level: LogLevel | \"off\"): number {\n if (level === \"off\") return LOG_LEVELS.length\n return LOG_LEVELS.indexOf(level)\n}\n\nexport function createLogger(config: LoggerConfig): Logger {\n if (config.level === \"off\") {\n return {\n debug: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n }\n }\n\n const minIndex = levelIndex(config.level)\n let dirReady: Promise<void> | null = null\n\n function ensureDir(): Promise<void> {\n if (dirReady !== null) return dirReady\n // Errors are swallowed intentionally: this is fire-and-forget telemetry;\n // if the directory can't be created, subsequent writes will fail silently too.\n dirReady = fs.promises\n .mkdir(config.dir, { recursive: true })\n .then(() => undefined)\n .catch(() => undefined)\n return dirReady\n }\n\n function write(level: LogLevel, msg: string, ctx?: Record<string, unknown>): void {\n if (levelIndex(level) < minIndex) return\n\n const version = typeof __GHX_VERSION__ !== \"undefined\" ? __GHX_VERSION__ : \"unknown\"\n\n const entry: Record<string, unknown> = {\n ts: new Date().toISOString(),\n pid: config.pid,\n ppid: config.ppid,\n level,\n version,\n msg,\n ...(ctx\n ? sanitizeTelemetryContext(ctx as Parameters<typeof sanitizeTelemetryContext>[0])\n : {}),\n }\n\n const line = `${JSON.stringify(entry)}\\n`\n const filePath = buildLogFilePath(config.dir, new Date())\n\n // fire-and-forget — never block execution\n ensureDir().then(() => {\n fs.appendFile(filePath, line, () => undefined)\n })\n }\n\n return {\n debug: (msg, ctx) => write(\"debug\", msg, ctx),\n info: (msg, ctx) => write(\"info\", msg, ctx),\n warn: (msg, ctx) => write(\"warn\", msg, ctx),\n error: (msg, ctx) => write(\"error\", msg, ctx),\n }\n}\n\nexport const logger: Logger = createLogger(createLoggerConfig())\n","type Primitive = string | number | boolean | null\n\ntype LogValue = Primitive | LogValue[] | { [key: string]: LogValue }\n\nconst SENSITIVE_KEY_PATTERN = /(token|authorization|cookie|secret|password|api[_-]?key)/i\n\nfunction redactValue(value: LogValue): LogValue {\n if (Array.isArray(value)) {\n return value.map(redactValue)\n }\n\n if (value && typeof value === \"object\") {\n const redacted: Record<string, LogValue> = {}\n for (const [key, nested] of Object.entries(value)) {\n redacted[key] = SENSITIVE_KEY_PATTERN.test(key) ? \"[REDACTED]\" : redactValue(nested)\n }\n return redacted\n }\n\n return value\n}\n\nexport function sanitizeTelemetryContext(\n context: Record<string, LogValue>,\n): Record<string, LogValue> {\n return redactValue(context) as Record<string, LogValue>\n}\n\nexport function logMetric(\n name: string,\n value: number,\n context: Record<string, LogValue> = {},\n): void {\n if (process.env.GHX_TELEMETRY_STDOUT !== \"1\") {\n return\n }\n\n const payload = {\n timestamp: new Date().toISOString(),\n metric: name,\n value,\n context: sanitizeTelemetryContext(context),\n }\n\n process.stdout.write(`${JSON.stringify(payload)}\\n`)\n}\n","import type { ErrorCode } from \"./codes.js\"\nimport { errorCodes } from \"./codes.js\"\n\nfunction toMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message\n }\n\n return String(error)\n}\n\nexport function mapErrorToCode(error: unknown): ErrorCode {\n const message = toMessage(error).toLowerCase()\n\n if (\n message.includes(\"rate limit\") ||\n /\\b429\\b/.test(message) ||\n message.includes(\"too many requests\")\n ) {\n return errorCodes.RateLimit\n }\n\n if (/\\b(500|502|503|504)\\b/.test(message)) {\n return errorCodes.Server\n }\n\n if (message.includes(\"timeout\")) {\n return errorCodes.Network\n }\n\n if (\n message.includes(\"econn\") ||\n message.includes(\"enotfound\") ||\n message.includes(\"eai_again\") ||\n message.includes(\"network\") ||\n message.includes(\"connection reset\")\n ) {\n return errorCodes.Network\n }\n\n if (message.includes(\"not found\") || /\\b404\\b/.test(message)) {\n return errorCodes.NotFound\n }\n\n if (message.includes(\"operation not available\")) {\n return errorCodes.AdapterUnsupported\n }\n\n if (\n message.includes(\"auth\") ||\n message.includes(\"forbidden\") ||\n message.includes(\"unauthorized\")\n ) {\n return errorCodes.Auth\n }\n\n if (\n message.includes(\"validation\") ||\n message.includes(\"invalid\") ||\n message.includes(\"required\") ||\n message.includes(\"positive integer\")\n ) {\n return errorCodes.Validation\n }\n\n return errorCodes.Unknown\n}\n","import type {\n ChainResultEnvelope,\n ChainStatus,\n ChainStepResult,\n ResultEnvelope,\n ResultError,\n RouteSource,\n} from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport type { ClassifiedStep } from \"./types.js\"\n\nexport function isRetryableCode(code: string): boolean {\n return code === errorCodes.RateLimit || code === errorCodes.Network || code === errorCodes.Server\n}\n\nexport type AssembleInput = {\n steps: ClassifiedStep[]\n requests: Array<{ task: string; input: Record<string, unknown> }>\n // Raw mutation batch result keyed by alias (e.g. \"step0\", \"step2\")\n mutationRawResult: Record<string, unknown>\n // Raw query batch result keyed by alias\n queryRawResult: Record<string, unknown>\n // Per-step GQL errors from batch responses, keyed by alias\n stepErrors: Map<string, string>\n // CLI step results keyed by step index\n cliResults: Map<number, ResultEnvelope>\n // How many steps were CLI-only (used to determine route_used in meta)\n cliStepCount: number\n batchStartMs: number\n}\n\nexport function assembleChainResult(input: AssembleInput): ChainResultEnvelope {\n const {\n steps,\n requests,\n mutationRawResult,\n queryRawResult,\n stepErrors,\n cliResults,\n cliStepCount,\n batchStartMs,\n } = input\n\n // Build a set of mutation step indices for better error messages\n const mutationStepIndices = new Set(\n steps.filter((s) => s.route === \"gql-mutation\").map((s) => s.index),\n )\n\n const results: ChainStepResult[] = requests.map((req, stepIndex) => {\n if (req === undefined) {\n throw new Error(`invariant violated: request at index ${stepIndex} is undefined`)\n }\n\n // CLI-only step\n const cliResult = cliResults.get(stepIndex)\n if (cliResult !== undefined) {\n return cliResult.ok\n ? { task: req.task, ok: true, data: cliResult.data }\n : {\n task: req.task,\n ok: false,\n error: cliResult.error ?? {\n code: errorCodes.Unknown,\n message: \"CLI step failed\",\n retryable: false,\n },\n }\n }\n\n // GQL step — alias is \"step<index>\"\n const alias = `step${stepIndex}`\n\n // Check for per-step GraphQL errors\n const stepError = stepErrors.get(alias)\n if (stepError !== undefined) {\n const code = mapErrorToCode(stepError)\n return {\n task: req.task,\n ok: false,\n error: {\n code,\n message: stepError,\n retryable: isRetryableCode(code),\n },\n }\n }\n\n // Look up the alias in mutation or query raw result\n if (alias in mutationRawResult) {\n return { task: req.task, ok: true, data: mutationRawResult[alias] }\n }\n\n if (alias in queryRawResult) {\n return { task: req.task, ok: true, data: queryRawResult[alias] }\n }\n\n // Determine context-appropriate error message\n const missingMsg = mutationStepIndices.has(stepIndex)\n ? `missing mutation result for alias ${alias}`\n : `missing result for alias ${alias}`\n\n return {\n task: req.task,\n ok: false,\n error: {\n code: errorCodes.Unknown,\n message: missingMsg,\n retryable: false,\n },\n }\n })\n\n const succeeded = results.filter((r) => r.ok).length\n const status: ChainStatus =\n succeeded === results.length ? \"success\" : succeeded === 0 ? \"failed\" : \"partial\"\n\n logger.info(\"execute_batch.complete\", {\n ok: status !== \"failed\",\n status,\n total: results.length,\n succeeded,\n failed: results.length - succeeded,\n duration_ms: Date.now() - batchStartMs,\n })\n\n // \"cli\" only when every step was CLI-only. Mixed chains report \"graphql\" because\n // GraphQL is the primary coordination mechanism even when some steps used the CLI adapter.\n const routeUsed: RouteSource = cliStepCount === requests.length ? \"cli\" : \"graphql\"\n\n return {\n status,\n results,\n meta: {\n route_used: routeUsed,\n total: results.length,\n succeeded,\n failed: results.length - succeeded,\n },\n }\n}\n\nexport function assembleResolutionFailure(\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n steps: ClassifiedStep[],\n phase1Error: ResultError,\n cliResults: Map<number, ResultEnvelope>,\n): ChainResultEnvelope {\n const cliStepCount = steps.filter((s) => s.route === \"cli\").length\n\n const results: ChainStepResult[] = requests.map((req, i): ChainStepResult => {\n if (req === undefined) {\n throw new Error(`invariant violated: request at index ${i} is undefined`)\n }\n const cliResult = cliResults.get(i)\n if (cliResult !== undefined) {\n return cliResult.ok\n ? { task: req.task, ok: true, data: cliResult.data }\n : {\n task: req.task,\n ok: false,\n error: cliResult.error ?? {\n code: errorCodes.Unknown,\n message: \"CLI step failed\",\n retryable: false,\n },\n }\n }\n return { task: req.task, ok: false, error: phase1Error }\n })\n\n const succeeded = results.filter((r) => r.ok).length\n const total = results.length\n const status: ChainStatus =\n succeeded === total ? \"success\" : succeeded === 0 ? \"failed\" : \"partial\"\n const routeUsed: RouteSource = cliStepCount === requests.length ? \"cli\" : \"graphql\"\n\n return {\n status,\n results,\n meta: { route_used: routeUsed, total, succeeded, failed: total - succeeded },\n }\n}\n","import type { ResultEnvelope } from \"../contracts/envelope.js\"\nimport type { RouteReasonCode } from \"../routing/reason-codes.js\"\n\ntype MetaInput = {\n capabilityId: string\n reason: RouteReasonCode | undefined\n pagination?: ResultEnvelope[\"meta\"][\"pagination\"]\n}\n\nfunction buildMeta(route: \"cli\" | \"rest\" | \"graphql\", options: MetaInput): ResultEnvelope[\"meta\"] {\n const meta: ResultEnvelope[\"meta\"] = {\n capability_id: options.capabilityId,\n route_used: route,\n }\n\n if (options.reason !== undefined) {\n meta.reason = options.reason\n }\n\n if (options.pagination !== undefined) {\n meta.pagination = options.pagination\n }\n\n return meta\n}\n\nexport function normalizeResult<TData>(\n data: TData,\n route: \"cli\" | \"rest\" | \"graphql\",\n options: MetaInput,\n): ResultEnvelope<TData> {\n return {\n ok: true,\n data,\n meta: buildMeta(route, options),\n }\n}\n\nexport function normalizeError<TData = unknown>(\n error: NonNullable<ResultEnvelope[\"error\"]>,\n route: \"cli\" | \"rest\" | \"graphql\",\n options: MetaInput,\n): ResultEnvelope<TData> {\n return {\n ok: false,\n error,\n meta: buildMeta(route, options),\n }\n}\n","import type { ErrorObject, ValidateFunction } from \"ajv\"\nimport { ajv } from \"./ajv-instance.js\"\n\ntype SchemaValidationError = {\n instancePath: string\n message: string\n keyword: string\n params: Record<string, unknown>\n}\n\ntype SchemaValidationResult =\n | { ok: true }\n | {\n ok: false\n errors: SchemaValidationError[]\n }\n\nconst validatorCache = new WeakMap<Record<string, unknown>, ValidateFunction>()\n\nfunction mapAjvErrors(errors: ErrorObject[] | null | undefined): SchemaValidationError[] {\n if (!errors) {\n return []\n }\n\n return errors.map((error) => ({\n instancePath: error.instancePath,\n message: error.message ?? \"schema validation failed\",\n keyword: error.keyword,\n params: error.params,\n }))\n}\n\nfunction getValidator(schema: Record<string, unknown>): ValidateFunction {\n const cached = validatorCache.get(schema)\n if (cached) {\n return cached\n }\n\n const validator = ajv.compile(schema)\n validatorCache.set(schema, validator)\n return validator\n}\n\nfunction validate(schema: Record<string, unknown>, payload: unknown): SchemaValidationResult {\n const validator = getValidator(schema)\n const ok = validator(payload)\n\n if (ok) {\n return { ok: true }\n }\n\n return {\n ok: false,\n errors: mapAjvErrors(validator.errors),\n }\n}\n\nexport function validateInput(\n inputSchema: Record<string, unknown>,\n params: Record<string, unknown>,\n): SchemaValidationResult {\n return validate(inputSchema, params)\n}\n\nexport function validateOutput(\n outputSchema: Record<string, unknown>,\n data: unknown,\n): SchemaValidationResult {\n return validate(outputSchema, data)\n}\n","import type { ResultEnvelope, RouteSource } from \"../contracts/envelope.js\"\nimport type { ErrorCode } from \"../errors/codes.js\"\nimport { errorCodes } from \"../errors/codes.js\"\nimport { normalizeError } from \"../execution/normalizer.js\"\nimport { validateInput, validateOutput } from \"../registry/schema-validator.js\"\nimport type { OperationCard } from \"../registry/types.js\"\nimport { logger } from \"../telemetry/log.js\"\nimport { logMetric } from \"../telemetry/logger.js\"\n\ntype PreflightResult =\n | { ok: true }\n | {\n ok: false\n code: ErrorCode\n message: string\n retryable: boolean\n details?: Record<string, unknown>\n }\n\ntype ExecuteOptions = {\n card: OperationCard\n params: Record<string, unknown>\n routingContext?: Record<string, unknown>\n trace?: boolean\n retry?: {\n maxAttemptsPerRoute?: number\n }\n preflight: (route: RouteSource) => Promise<PreflightResult>\n routes: Record<RouteSource, (params: Record<string, unknown>) => Promise<ResultEnvelope>>\n}\n\nfunction parsePredicateValue(raw: string): unknown {\n const value = raw.trim()\n if (value === \"true\") {\n return true\n }\n if (value === \"false\") {\n return false\n }\n if (value === \"null\") {\n return null\n }\n\n const numeric = Number(value)\n if (!Number.isNaN(numeric) && value.length > 0) {\n return numeric\n }\n\n return value.replace(/^['\"]|['\"]$/g, \"\")\n}\n\nfunction resolvePathValue(source: Record<string, unknown>, path: string): unknown {\n const segments = path.split(\".\").filter((segment) => segment.length > 0)\n let current: unknown = source\n\n for (const segment of segments) {\n if (typeof current !== \"object\" || current === null || Array.isArray(current)) {\n return undefined\n }\n\n current = (current as Record<string, unknown>)[segment]\n }\n\n return current\n}\n\nfunction evaluateSuitabilityPreferred(\n card: OperationCard,\n params: Record<string, unknown>,\n routingContext: Record<string, unknown>,\n): RouteSource {\n const rules = card.routing.suitability ?? []\n\n for (const rule of rules) {\n const alwaysMatch = /^(cli|graphql|rest)$/i.exec(rule.predicate.trim())\n const alwaysRoute = alwaysMatch?.[1]\n if (rule.when === \"always\" && alwaysRoute) {\n return alwaysRoute.toLowerCase() as RouteSource\n }\n\n const conditionalMatch = /^(cli|graphql|rest)\\s+if\\s+([a-zA-Z0-9_.]+)\\s*(==|!=)\\s*(.+)$/i.exec(\n rule.predicate.trim(),\n )\n\n if (!conditionalMatch) {\n continue\n }\n\n const [, targetRouteRaw = \"\", rawPath = \"\", operator = \"==\", rawExpected = \"\"] =\n conditionalMatch\n const targetRoute = targetRouteRaw.toLowerCase() as RouteSource\n const source = rule.when === \"env\" ? routingContext : params\n const path =\n rawPath.startsWith(\"params.\") || rawPath.startsWith(\"env.\")\n ? rawPath.split(\".\").slice(1).join(\".\")\n : rawPath\n const actual = resolvePathValue(source, path)\n const expected = parsePredicateValue(rawExpected)\n const matches = operator === \"==\" ? actual === expected : actual !== expected\n\n if (matches) {\n return targetRoute\n }\n }\n\n return card.routing.preferred\n}\n\nfunction routePlan(\n card: OperationCard,\n params: Record<string, unknown>,\n routingContext: Record<string, unknown>,\n): RouteSource[] {\n const preferred = evaluateSuitabilityPreferred(card, params, routingContext)\n const planned = new Set<RouteSource>([preferred, ...card.routing.fallbacks])\n return [...planned]\n}\n\nexport async function execute(options: ExecuteOptions): Promise<ResultEnvelope> {\n const inputValidation = validateInput(options.card.input_schema, options.params)\n if (!inputValidation.ok) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: \"Input schema validation failed\",\n retryable: false,\n details: { ajvErrors: inputValidation.errors },\n },\n options.card.routing.preferred,\n {\n capabilityId: options.card.capability_id,\n reason: \"INPUT_VALIDATION\",\n },\n )\n }\n\n const attempts: NonNullable<ResultEnvelope[\"meta\"][\"attempts\"]> = []\n const maxAttemptsPerRoute = Math.max(1, options.retry?.maxAttemptsPerRoute ?? 1)\n let lastError: ResultEnvelope[\"error\"]\n let firstError: ResultEnvelope[\"error\"]\n\n const routingContext = options.routingContext ?? {}\n\n for (const route of routePlan(options.card, options.params, routingContext)) {\n logMetric(\"route.plan\", 1, {\n capability_id: options.card.capability_id,\n route,\n })\n logger.debug(\"route.plan\", {\n capability_id: options.card.capability_id,\n route,\n })\n\n const preflight = await options.preflight(route)\n if (!preflight.ok) {\n logMetric(\"route.preflight_skipped\", 1, {\n capability_id: options.card.capability_id,\n route,\n error_code: preflight.code,\n })\n logger.warn(\"route.preflight_skipped\", {\n capability_id: options.card.capability_id,\n route,\n error_code: preflight.code,\n })\n attempts.push({ route, status: \"skipped\", error_code: preflight.code })\n lastError = {\n code: preflight.code,\n message: preflight.message,\n retryable: preflight.retryable,\n ...(preflight.details ? { details: preflight.details } : {}),\n }\n firstError ??= lastError\n continue\n }\n\n const routeHandler = options.routes[route]\n if (typeof routeHandler !== \"function\") {\n logMetric(\"route.missing_handler\", 1, {\n capability_id: options.card.capability_id,\n route,\n })\n logger.warn(\"route.missing_handler\", {\n capability_id: options.card.capability_id,\n route,\n })\n\n const handlerError = {\n code: errorCodes.AdapterUnsupported,\n message: `No route handler configured for '${route}'`,\n retryable: false,\n details: { route },\n }\n\n attempts.push({\n route,\n status: \"skipped\",\n error_code: errorCodes.AdapterUnsupported,\n })\n lastError = handlerError\n firstError ??= handlerError\n continue\n }\n\n for (let attempt = 0; attempt < maxAttemptsPerRoute; attempt += 1) {\n const result = await routeHandler(options.params)\n logMetric(\"route.attempt\", 1, {\n capability_id: options.card.capability_id,\n route,\n ok: result.ok,\n })\n logger.debug(\"route.attempt\", {\n capability_id: options.card.capability_id,\n route,\n ok: result.ok,\n attempt,\n })\n const attemptRecord: {\n route: RouteSource\n status: \"success\" | \"error\"\n error_code?: ErrorCode\n } = {\n route,\n status: result.ok ? \"success\" : \"error\",\n }\n if (result.error?.code) {\n attemptRecord.error_code = result.error.code\n }\n attempts.push(attemptRecord)\n\n if (result.ok) {\n const outputValidation = validateOutput(options.card.output_schema, result.data)\n if (!outputValidation.ok) {\n const envelope = normalizeError(\n {\n code: errorCodes.Server,\n message: \"Output schema validation failed\",\n retryable: false,\n details: { ajvErrors: outputValidation.errors },\n },\n route,\n {\n capabilityId: options.card.capability_id,\n reason: \"OUTPUT_VALIDATION\",\n },\n )\n\n if (options.trace) {\n envelope.meta.attempts = attempts\n }\n\n return envelope\n }\n\n if (options.trace) {\n result.meta.attempts = attempts\n }\n return result\n }\n\n lastError = result.error\n firstError ??= result.error\n if (!result.ok && result.error) {\n logger.debug(\"route.attempt_failed\", {\n capability_id: options.card.capability_id,\n route,\n attempt,\n error_code: result.error.code,\n retryable: result.error.retryable,\n })\n }\n if (!result.error?.retryable) {\n if (result.error?.code !== errorCodes.AdapterUnsupported) {\n if (options.trace) {\n result.meta.attempts = attempts\n }\n return result\n }\n break\n }\n }\n }\n\n const finalError = lastError ??\n firstError ?? {\n code: errorCodes.Unknown,\n message: \"No route produced a result\",\n retryable: false,\n }\n\n const envelope = normalizeError(finalError, options.card.routing.preferred, {\n capabilityId: options.card.capability_id,\n reason: \"CARD_FALLBACK\",\n })\n\n if (options.trace) {\n envelope.meta.attempts = attempts\n }\n\n return envelope\n}\n","import { errorCodes } from \"./codes.js\"\n\nconst retryableCodes = new Set<string>([\n errorCodes.Network,\n errorCodes.RateLimit,\n errorCodes.Server,\n])\n\nexport function isRetryableErrorCode(code: string): boolean {\n return retryableCodes.has(code)\n}\n","import type { ResultEnvelope } from \"@core/core/contracts/envelope.js\"\nimport type { OperationCard } from \"@core/core/registry/types.js\"\nimport type { CliCommandRunner } from \"../cli-adapter.js\"\n\nexport type { CliCommandRunner }\n\nexport type CliHandler = (\n runner: CliCommandRunner,\n params: Record<string, unknown>,\n card: OperationCard | undefined,\n) => Promise<ResultEnvelope>\n\nexport const DEFAULT_TIMEOUT_MS = 10_000\nexport const DEFAULT_LIST_FIRST = 30\nexport const MAX_WORKFLOW_JOB_LOG_CHARS = 50_000\nexport const REDACTED_CLI_ERROR_MESSAGE = \"gh command failed; stderr redacted for safety\"\nexport const REPO_ISSUE_TYPES_GRAPHQL_QUERY =\n \"query($owner:String!,$name:String!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issueTypes(first:$first,after:$after){nodes{id name color isEnabled} pageInfo{hasNextPage endCursor}}}}\"\nexport const ISSUE_COMMENTS_GRAPHQL_QUERY =\n \"query($owner:String!,$name:String!,$issueNumber:Int!,$first:Int!,$after:String){repository(owner:$owner,name:$name){issue(number:$issueNumber){comments(first:$first,after:$after){nodes{id body createdAt url author{login}} pageInfo{hasNextPage endCursor}}}}}\"\n\nexport function containsSensitiveText(value: string): boolean {\n return /(gh[pousr]_[A-Za-z0-9_]+|github_pat_[A-Za-z0-9_]+|authorization:\\s*bearer\\s+\\S+|bearer\\s+[A-Za-z0-9._-]{20,}|(?:api[_-]?key|token|secret|password)\\s*[=:]\\s*\\S+)/i.test(\n value,\n )\n}\n\nexport function sanitizeCliErrorMessage(stderr: string, exitCode: number): string {\n const trimmed = stderr.trim()\n if (!trimmed) {\n return `gh exited with code ${exitCode}`\n }\n\n if (containsSensitiveText(trimmed)) {\n return REDACTED_CLI_ERROR_MESSAGE\n }\n\n return trimmed\n}\n\nexport function shouldFallbackRerunFailedToAll(stderr: string): boolean {\n const normalized = stderr.toLowerCase()\n return normalized.includes(\"cannot be rerun\") && normalized.includes(\"cannot be retried\")\n}\n\nexport function parseStrictPositiveInt(value: unknown): number | null {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0 ? value : null\n}\n\nexport function parseListFirst(value: unknown): number | null {\n if (value === undefined) {\n return DEFAULT_LIST_FIRST\n }\n\n return parseStrictPositiveInt(value)\n}\n\nexport function parseNonEmptyString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null\n }\n\n const trimmed = value.trim()\n return trimmed.length > 0 ? trimmed : null\n}\n\nexport function requireRepo(owner: string, name: string, capabilityId: string): void {\n if (!owner || !name) {\n throw new Error(`Missing owner/name for ${capabilityId}`)\n }\n}\n\nexport function commandTokens(card: OperationCard | undefined, fallbackCommand: string): string[] {\n const fromCard = card?.cli?.command\n const command =\n typeof fromCard === \"string\" && fromCard.trim().length > 0 ? fromCard : fallbackCommand\n return command.trim().split(/\\s+/)\n}\n\nexport function jsonFieldsFromCard(\n card: OperationCard | undefined,\n fallbackFields: string,\n): string {\n const fields = card?.cli?.jsonFields\n if (Array.isArray(fields) && fields.length > 0) {\n return fields.join(\",\")\n }\n\n return fallbackFields\n}\n\nexport function parseCliData(stdout: string): unknown {\n const trimmed = stdout.trim()\n if (!trimmed) {\n return {}\n }\n\n return JSON.parse(trimmed)\n}\n\nexport function normalizeListItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {}\n }\n\n const input = item as Record<string, unknown>\n return {\n id: input.id,\n number: input.number,\n title: input.title,\n state: input.state,\n url: input.url,\n }\n}\n\nexport function normalizeWorkflowItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {\n id: 0,\n name: null,\n path: null,\n state: null,\n }\n }\n\n const input = item as Record<string, unknown>\n return {\n id: typeof input.id === \"number\" ? input.id : 0,\n name: typeof input.name === \"string\" ? input.name : null,\n path: typeof input.path === \"string\" ? input.path : null,\n state: typeof input.state === \"string\" ? input.state : null,\n }\n}\n\nexport function normalizeProjectV2Summary(data: unknown): Record<string, unknown> {\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n return {\n id: typeof input.id === \"string\" ? input.id : null,\n title: typeof input.title === \"string\" ? input.title : null,\n shortDescription: typeof input.shortDescription === \"string\" ? input.shortDescription : null,\n public: typeof input.public === \"boolean\" ? input.public : null,\n closed: typeof input.closed === \"boolean\" ? input.closed : null,\n url: typeof input.url === \"string\" ? input.url : null,\n }\n}\n\nexport function normalizeCheckItem(item: unknown): Record<string, unknown> {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return {\n name: null,\n state: null,\n bucket: null,\n workflow: null,\n link: null,\n }\n }\n\n const input = item as Record<string, unknown>\n return {\n name: typeof input.name === \"string\" ? input.name : null,\n state: typeof input.state === \"string\" ? input.state : null,\n bucket: typeof input.bucket === \"string\" ? input.bucket : null,\n workflow: typeof input.workflow === \"string\" ? input.workflow : null,\n link: typeof input.link === \"string\" ? input.link : null,\n }\n}\n\nexport function normalizeCheckBucket(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null\n }\n\n return value.trim().toLowerCase()\n}\n\nexport function isCheckFailureBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"fail\" || normalized === \"cancel\"\n}\n\nexport function isCheckPendingBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"pending\"\n}\n\nexport function isCheckPassBucket(bucket: unknown): boolean {\n const normalized = normalizeCheckBucket(bucket)\n if (!normalized) {\n return false\n }\n\n return normalized === \"pass\"\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n commandTokens,\n DEFAULT_TIMEOUT_MS,\n ISSUE_COMMENTS_GRAPHQL_QUERY,\n jsonFieldsFromCard,\n normalizeListItem,\n parseCliData,\n parseListFirst,\n parseStrictPositiveInt,\n sanitizeCliErrorMessage,\n} from \"../helpers.js\"\n\nexport const handleIssueView: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.view\")\n }\n\n const args = [...commandTokens(card, \"issue view\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,number,title,state,url,body,labels\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const item = normalizeListItem(data)\n const raw =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n const normalized = {\n ...item,\n body: typeof raw.body === \"string\" ? raw.body : \"\",\n labels: Array.isArray(raw.labels)\n ? (raw.labels as unknown[])\n .map((l) =>\n typeof l === \"object\" && l !== null ? (l as Record<string, unknown>).name : undefined,\n )\n .filter((n): n is string => typeof n === \"string\")\n : [],\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"issue.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"issue.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for issue.list\")\n }\n\n const args = commandTokens(card, \"issue list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,number,title,state,url\"),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const items = Array.isArray(data) ? data.map((entry) => normalizeListItem(entry)) : []\n\n return normalizeResult({ items, pageInfo: { hasNextPage: false, endCursor: null } }, \"cli\", {\n capabilityId: \"issue.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"issue.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueCommentsList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n if (!owner || !name) {\n throw new Error(\"Missing owner/name for issue.comments.list\")\n }\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.comments.list\")\n }\n\n const first = parseStrictPositiveInt(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for issue.comments.list\")\n }\n\n const after = params.after\n if (!(after === undefined || after === null || typeof after === \"string\")) {\n throw new Error(\"Invalid after cursor for issue.comments.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api graphql\"),\n \"-f\",\n `query=${ISSUE_COMMENTS_GRAPHQL_QUERY}`,\n \"-f\",\n `owner=${owner}`,\n \"-f\",\n `name=${name}`,\n \"-F\",\n `issueNumber=${issueNumber}`,\n \"-F\",\n `first=${first}`,\n ]\n\n if (typeof after === \"string\" && after.length > 0) {\n args.push(\"-f\", `after=${after}`)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.comments.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const commentsConnection =\n typeof input.data === \"object\" && input.data !== null && !Array.isArray(input.data)\n ? (input.data as Record<string, unknown>).repository\n : null\n const repository =\n typeof commentsConnection === \"object\" &&\n commentsConnection !== null &&\n !Array.isArray(commentsConnection)\n ? (commentsConnection as Record<string, unknown>)\n : null\n const issue =\n typeof repository?.issue === \"object\" &&\n repository.issue !== null &&\n !Array.isArray(repository.issue)\n ? (repository.issue as Record<string, unknown>)\n : null\n const comments =\n typeof issue?.comments === \"object\" &&\n issue.comments !== null &&\n !Array.isArray(issue.comments)\n ? (issue.comments as Record<string, unknown>)\n : null\n const nodes = Array.isArray(comments?.nodes) ? comments.nodes : null\n const pageInfo =\n typeof comments?.pageInfo === \"object\" &&\n comments.pageInfo !== null &&\n !Array.isArray(comments.pageInfo)\n ? (comments.pageInfo as Record<string, unknown>)\n : null\n\n if (nodes === null || pageInfo === null || typeof pageInfo.hasNextPage !== \"boolean\") {\n throw new Error(\"Invalid CLI payload: comments connection is malformed\")\n }\n\n const normalizedItems = nodes.flatMap((comment) => {\n if (typeof comment !== \"object\" || comment === null || Array.isArray(comment)) {\n throw new Error(\"Invalid CLI payload: comment item must be an object\")\n }\n\n const commentRecord = comment as Record<string, unknown>\n const author =\n typeof commentRecord.author === \"object\" && commentRecord.author !== null\n ? (commentRecord.author as Record<string, unknown>)\n : null\n\n if (\n typeof commentRecord.id !== \"string\" ||\n typeof commentRecord.body !== \"string\" ||\n typeof commentRecord.url !== \"string\" ||\n typeof commentRecord.createdAt !== \"string\"\n ) {\n throw new Error(\"Invalid CLI payload: comment item has invalid field types\")\n }\n\n return [\n {\n id: commentRecord.id,\n body: commentRecord.body,\n authorLogin: typeof author?.login === \"string\" ? author.login : null,\n url: commentRecord.url,\n createdAt: commentRecord.createdAt,\n },\n ]\n })\n\n return normalizeResult(\n {\n items: normalizedItems,\n pageInfo: {\n hasNextPage: pageInfo.hasNextPage,\n endCursor: typeof pageInfo.endCursor === \"string\" ? pageInfo.endCursor : null,\n },\n },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.toLowerCase().includes(\"invalid cli payload\")) {\n return normalizeError(\n { code: errorCodes.Server, message: error.message, retryable: false },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.toLowerCase().includes(\"invalid after cursor\")) {\n return normalizeError(\n { code: errorCodes.Validation, message: error.message, retryable: false },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.comments.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueLabelsRemove: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.labels.remove\")\n }\n\n const labels = Array.isArray(params.labels)\n ? params.labels.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (labels.length === 0) {\n throw new Error(\"Missing or invalid labels for issue.labels.remove\")\n }\n\n const args = [...commandTokens(card, \"issue edit\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\"--remove-label\", labels.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.labels.remove\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.labels.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ issueNumber, removed: labels }, \"cli\", {\n capabilityId: \"issue.labels.remove\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.labels.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueAssigneesAdd: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.assignees.add\")\n }\n\n const assignees = Array.isArray(params.assignees)\n ? params.assignees.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (assignees.length === 0) {\n throw new Error(\"Missing or invalid assignees for issue.assignees.add\")\n }\n\n const args = [...commandTokens(card, \"issue edit\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\"--add-assignee\", assignees.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.assignees.add\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.assignees.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ issueNumber, added: assignees }, \"cli\", {\n capabilityId: \"issue.assignees.add\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.assignees.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueAssigneesRemove: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.assignees.remove\")\n }\n\n const assignees = Array.isArray(params.assignees)\n ? params.assignees.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (assignees.length === 0) {\n throw new Error(\"Missing or invalid assignees for issue.assignees.remove\")\n }\n\n const args = [...commandTokens(card, \"issue edit\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\"--remove-assignee\", assignees.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.assignees.remove\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.assignees.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ issueNumber, removed: assignees }, \"cli\", {\n capabilityId: \"issue.assignees.remove\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.assignees.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleIssueMilestoneClear: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const issueNumber = parseStrictPositiveInt(params.issueNumber)\n if (issueNumber === null) {\n throw new Error(\"Missing or invalid issueNumber for issue.milestone.clear\")\n }\n\n const args = [...commandTokens(card, \"issue edit\"), String(issueNumber)]\n if (repo) {\n args.push(\"--repo\", repo)\n }\n args.push(\"--milestone\", \"\")\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"issue.milestone.clear\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"issue.milestone.clear\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ issueNumber, cleared: true }, \"cli\", {\n capabilityId: \"issue.milestone.clear\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"issue.milestone.clear\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"issue.view\": handleIssueView,\n \"issue.list\": handleIssueList,\n \"issue.comments.list\": handleIssueCommentsList,\n \"issue.labels.remove\": handleIssueLabelsRemove,\n \"issue.assignees.add\": handleIssueAssigneesAdd,\n \"issue.assignees.remove\": handleIssueAssigneesRemove,\n \"issue.milestone.clear\": handleIssueMilestoneClear,\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n commandTokens,\n DEFAULT_TIMEOUT_MS,\n isCheckFailureBucket,\n isCheckPassBucket,\n isCheckPendingBucket,\n jsonFieldsFromCard,\n normalizeCheckItem,\n normalizeListItem,\n parseCliData,\n parseListFirst,\n parseNonEmptyString,\n parseStrictPositiveInt,\n sanitizeCliErrorMessage,\n shouldFallbackRerunFailedToAll,\n} from \"../helpers.js\"\n\nconst handlePrView: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.view\")\n\n const args = [...commandTokens(card, \"pr view\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,number,title,state,url,body,labels\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const item = normalizeListItem(data)\n const raw =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n return normalizeResult(\n {\n ...item,\n body: typeof raw.body === \"string\" ? raw.body : \"\",\n labels: Array.isArray(raw.labels)\n ? (raw.labels as unknown[])\n .map((l) =>\n typeof l === \"object\" && l !== null\n ? (l as Record<string, unknown>).name\n : undefined,\n )\n .filter((n): n is string => typeof n === \"string\")\n : [],\n },\n \"cli\",\n { capabilityId: \"pr.view\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n if (error instanceof SyntaxError)\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"pr.view\", reason: \"CARD_FALLBACK\" },\n )\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const first = parseListFirst(params.first)\n if (first === null) throw new Error(\"Missing or invalid first for pr.list\")\n\n const args = commandTokens(card, \"pr list\")\n if (repo) args.push(\"--repo\", repo)\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,number,title,state,url\"),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const items = Array.isArray(data) ? data.map((entry) => normalizeListItem(entry)) : []\n return normalizeResult({ items, pageInfo: { hasNextPage: false, endCursor: null } }, \"cli\", {\n capabilityId: \"pr.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError)\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"pr.list\", reason: \"CARD_FALLBACK\" },\n )\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrCreate: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const title = parseNonEmptyString(params.title)\n if (title === null) throw new Error(\"Missing or invalid title for pr.create\")\n const head = parseNonEmptyString(params.head)\n if (head === null) throw new Error(\"Missing or invalid head for pr.create\")\n\n const args = [...commandTokens(card, \"pr create\"), \"--title\", title, \"--head\", head]\n if (repo) args.push(\"--repo\", repo)\n const body = parseNonEmptyString(params.body)\n if (body) args.push(\"--body\", body)\n const base = parseNonEmptyString(params.base)\n if (base) args.push(\"--base\", base)\n if (params.draft === true) args.push(\"--draft\")\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.create\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.create\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const stdout = result.stdout\n const urlMatch = stdout.match(/https:\\/\\/github\\.com\\/[^/]+\\/[^/]+\\/pull\\/(\\d+)/)\n return normalizeResult(\n {\n number: urlMatch ? Number(urlMatch[1]) : Number(params.prNumber) || 1,\n url: urlMatch\n ? urlMatch[0]\n : stdout.trim() || `https://github.com/${params.owner}/${params.name}/pull/0`,\n title: typeof params.title === \"string\" ? params.title : \"\",\n state: \"OPEN\",\n draft: params.draft === true,\n },\n \"cli\",\n { capabilityId: \"pr.create\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.create\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrUpdate: CliHandler = async (runner, params, _card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.update\")\n\n const title = parseNonEmptyString(params.title)\n const body = typeof params.body === \"string\" ? params.body : null\n const hasDraft = typeof params.draft === \"boolean\"\n const hasEditFields = title !== null || body !== null\n\n if (!hasEditFields && !hasDraft) throw new Error(\"Missing title, body, or draft for pr.update\")\n\n if (hasEditFields) {\n const editArgs = [\"pr\", \"edit\", String(prNumber)]\n if (repo) editArgs.push(\"--repo\", repo)\n if (title !== null) editArgs.push(\"--title\", title)\n if (body !== null) editArgs.push(\"--body\", body)\n const editResult = await runner.run(\"gh\", editArgs, DEFAULT_TIMEOUT_MS)\n if (editResult.exitCode !== 0) {\n const code = mapErrorToCode(editResult.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(editResult.stderr, editResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.update\", exitCode: editResult.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n }\n\n if (hasDraft) {\n const readyArgs = [\"pr\", \"ready\", String(prNumber)]\n if (repo) readyArgs.push(\"--repo\", repo)\n if (params.draft === true) readyArgs.push(\"--undo\")\n const readyResult = await runner.run(\"gh\", readyArgs, DEFAULT_TIMEOUT_MS)\n if (readyResult.exitCode !== 0) {\n const code = mapErrorToCode(readyResult.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(readyResult.stderr, readyResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.update\", exitCode: readyResult.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n }\n\n const fallbackUrl = `https://github.com/${params.owner}/${params.name}/pull/${prNumber}`\n return normalizeResult(\n {\n number: prNumber,\n url: fallbackUrl,\n title: \"\",\n state: \"OPEN\",\n draft: typeof params.draft === \"boolean\" ? params.draft : false,\n },\n \"cli\",\n { capabilityId: \"pr.update\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrChecksList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.checks.list\")\n\n const args = [...commandTokens(card, \"pr checks\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--json\", jsonFieldsFromCard(card, \"name,state,bucket,workflow,link\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.checks.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.checks.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const checks = Array.isArray(data) ? data.map((entry) => normalizeCheckItem(entry)) : []\n const failed = checks.filter((entry) => isCheckFailureBucket(entry.bucket))\n const pending = checks.filter((entry) => isCheckPendingBucket(entry.bucket))\n const passed = checks.filter((entry) => isCheckPassBucket(entry.bucket))\n\n const state = typeof params.state === \"string\" ? params.state : undefined\n const filteredItems =\n state === \"failed\"\n ? failed\n : state === \"pending\"\n ? pending\n : state === \"passed\"\n ? passed\n : checks\n const itemsWithAnnotations = filteredItems.map(({ bucket: _bucket, ...rest }) => ({\n ...rest,\n annotations: [],\n }))\n\n return normalizeResult(\n {\n items: itemsWithAnnotations,\n summary: {\n total: checks.length,\n failed: failed.length,\n pending: pending.length,\n passed: passed.length,\n },\n },\n \"cli\",\n { capabilityId: \"pr.checks.list\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n if (error instanceof SyntaxError)\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"pr.checks.list\", reason: \"CARD_FALLBACK\" },\n )\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.checks.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrMergeStatus: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.merge.status\")\n\n const args = [...commandTokens(card, \"pr view\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\n \"--json\",\n jsonFieldsFromCard(card, \"mergeable,mergeStateStatus,reviewDecision,isDraft,state\"),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.merge.status\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.merge.status\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n return normalizeResult(\n {\n mergeable: typeof input.mergeable === \"string\" ? input.mergeable : null,\n mergeStateStatus:\n typeof input.mergeStateStatus === \"string\" ? input.mergeStateStatus : null,\n reviewDecision: typeof input.reviewDecision === \"string\" ? input.reviewDecision : null,\n isDraft: Boolean(input.isDraft),\n state: typeof input.state === \"string\" ? input.state : \"UNKNOWN\",\n },\n \"cli\",\n { capabilityId: \"pr.merge.status\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n if (error instanceof SyntaxError)\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"pr.merge.status\", reason: \"CARD_FALLBACK\" },\n )\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.merge.status\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrReviewSubmit: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.reviews.submit\")\n const event = params.event\n if (event !== \"APPROVE\" && event !== \"COMMENT\" && event !== \"REQUEST_CHANGES\")\n throw new Error(\"Missing or invalid event for pr.reviews.submit\")\n\n const args = [...commandTokens(card, \"pr review\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n\n if (event === \"APPROVE\") {\n args.push(\"--approve\")\n const body = parseNonEmptyString(params.body)\n if (body) args.push(\"--body\", body)\n } else {\n const body = parseNonEmptyString(params.body)\n if (body === null) throw new Error(\"Missing or invalid body for pr.review.submit\")\n if (event === \"REQUEST_CHANGES\") args.push(\"--request-changes\", \"--body\", body)\n else args.push(\"--comment\", \"--body\", body)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.reviews.submit\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.reviews.submit\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult(\n {\n prNumber: Number(params.prNumber),\n event: String(params.event),\n submitted: true,\n body: typeof params.body === \"string\" ? params.body : null,\n },\n \"cli\",\n { capabilityId: \"pr.reviews.submit\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.reviews.submit\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrMerge: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.merge\")\n const method = params.method === undefined ? \"merge\" : params.method\n if (method !== \"merge\" && method !== \"squash\" && method !== \"rebase\")\n throw new Error(\"Missing or invalid method for pr.merge\")\n if (params.deleteBranch !== undefined && typeof params.deleteBranch !== \"boolean\")\n throw new Error(\"Missing or invalid deleteBranch for pr.merge\")\n\n const args = [...commandTokens(card, \"pr merge\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(`--${method}`)\n if (params.deleteBranch === true) args.push(\"--delete-branch\")\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.merge\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.merge\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult(\n {\n prNumber: Number(params.prNumber),\n method: method === \"squash\" || method === \"rebase\" ? method : \"merge\",\n isMethodAssumed: params.method === undefined,\n queued: true,\n deleteBranch: params.deleteBranch === true,\n },\n \"cli\",\n { capabilityId: \"pr.merge\", reason: \"CARD_FALLBACK\" },\n )\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.merge\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrChecksRerunFailed: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.checks.rerun.failed\")\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) throw new Error(\"Missing or invalid runId for pr.checks.rerun.failed\")\n\n const args = [...commandTokens(card, \"run rerun\"), String(runId)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--failed\")\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n if (shouldFallbackRerunFailedToAll(result.stderr)) {\n const rerunAllArgs = [...commandTokens(card, \"run rerun\"), String(runId)]\n if (repo) rerunAllArgs.push(\"--repo\", repo)\n const rerunAllResult = await runner.run(\"gh\", rerunAllArgs, DEFAULT_TIMEOUT_MS)\n if (rerunAllResult.exitCode === 0) {\n return normalizeResult({ runId, queued: true }, \"cli\", {\n capabilityId: \"pr.checks.rerun.failed\",\n reason: \"CARD_FALLBACK\",\n })\n }\n const failureStderr = rerunAllResult.stderr || rerunAllResult.stdout || result.stderr\n const code = mapErrorToCode(failureStderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(failureStderr, rerunAllResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.checks.rerun.failed\", exitCode: rerunAllResult.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.checks.rerun.failed\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.checks.rerun.failed\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.checks.rerun.failed\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ runId, queued: true }, \"cli\", {\n capabilityId: \"pr.checks.rerun.failed\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.checks.rerun.failed\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrChecksRerunAll: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.checks.rerun.all\")\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) throw new Error(\"Missing or invalid runId for pr.checks.rerun.all\")\n\n const args = [...commandTokens(card, \"run rerun\"), String(runId)]\n if (repo) args.push(\"--repo\", repo)\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.checks.rerun.all\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.checks.rerun.all\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ runId, queued: true }, \"cli\", {\n capabilityId: \"pr.checks.rerun.all\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.checks.rerun.all\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrReviewRequest: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.reviews.request\")\n const reviewers = Array.isArray(params.reviewers)\n ? params.reviewers.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (reviewers.length === 0)\n throw new Error(\"Missing or invalid reviewers for pr.reviews.request\")\n\n const args = [...commandTokens(card, \"pr edit\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--add-reviewer\", reviewers.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.reviews.request\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.reviews.request\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ prNumber: Number(params.prNumber), reviewers, updated: true }, \"cli\", {\n capabilityId: \"pr.reviews.request\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.reviews.request\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrBranchUpdate: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.branch.update\")\n\n const args = [...commandTokens(card, \"pr update-branch\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.branch.update\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.branch.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ prNumber: Number(params.prNumber), updated: true }, \"cli\", {\n capabilityId: \"pr.branch.update\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.branch.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrDiffView: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.diff.view\")\n\n const args = [...commandTokens(card, \"pr diff\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.diff.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.diff.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ diff: result.stdout }, \"cli\", {\n capabilityId: \"pr.diff.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.diff.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrDiffFiles: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.diff.files\")\n const first = parseListFirst(params.first)\n if (first === null) throw new Error(\"Missing or invalid first for pr.diff.files\")\n\n const args = [...commandTokens(card, \"pr view\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--json\", jsonFieldsFromCard(card, \"files\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.diff.files\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.diff.files\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n return normalizeResult(data, \"cli\", {\n capabilityId: \"pr.diff.files\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError)\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"pr.diff.files\", reason: \"CARD_FALLBACK\" },\n )\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.diff.files\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrAssigneesAdd: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.assignees.add\")\n const assignees = Array.isArray(params.assignees)\n ? params.assignees.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (assignees.length === 0) throw new Error(\"Missing or invalid assignees for pr.assignees.add\")\n\n const args = [...commandTokens(card, \"pr edit\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--add-assignee\", assignees.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.assignees.add\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.assignees.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ prNumber: Number(params.prNumber), added: assignees }, \"cli\", {\n capabilityId: \"pr.assignees.add\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.assignees.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handlePrAssigneesRemove: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n const prNumber = parseStrictPositiveInt(params.prNumber)\n if (prNumber === null) throw new Error(\"Missing or invalid prNumber for pr.assignees.remove\")\n const assignees = Array.isArray(params.assignees)\n ? params.assignees.filter(\n (value): value is string => typeof value === \"string\" && value.trim().length > 0,\n )\n : []\n if (assignees.length === 0)\n throw new Error(\"Missing or invalid assignees for pr.assignees.remove\")\n\n const args = [...commandTokens(card, \"pr edit\"), String(prNumber)]\n if (repo) args.push(\"--repo\", repo)\n args.push(\"--remove-assignee\", assignees.join(\",\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"pr.assignees.remove\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"pr.assignees.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n return normalizeResult({ prNumber: Number(params.prNumber), removed: assignees }, \"cli\", {\n capabilityId: \"pr.assignees.remove\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"pr.assignees.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"pr.view\": handlePrView,\n \"pr.list\": handlePrList,\n \"pr.create\": handlePrCreate,\n \"pr.update\": handlePrUpdate,\n \"pr.checks.list\": handlePrChecksList,\n \"pr.merge.status\": handlePrMergeStatus,\n \"pr.reviews.submit\": handlePrReviewSubmit,\n \"pr.merge\": handlePrMerge,\n \"pr.checks.rerun.failed\": handlePrChecksRerunFailed,\n \"pr.checks.rerun.all\": handlePrChecksRerunAll,\n \"pr.reviews.request\": handlePrReviewRequest,\n \"pr.assignees.add\": handlePrAssigneesAdd,\n \"pr.assignees.remove\": handlePrAssigneesRemove,\n \"pr.branch.update\": handlePrBranchUpdate,\n \"pr.diff.view\": handlePrDiffView,\n \"pr.diff.files\": handlePrDiffFiles,\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n DEFAULT_TIMEOUT_MS,\n normalizeProjectV2Summary,\n parseCliData,\n parseListFirst,\n parseNonEmptyString,\n parseStrictPositiveInt,\n sanitizeCliErrorMessage,\n} from \"../helpers.js\"\n\nconst handleProjectV2OrgGet: CliHandler = async (runner, params, _card) => {\n try {\n const owner = parseNonEmptyString(params.org)\n if (owner === null) {\n throw new Error(\"Missing or invalid org for project_v2.org.view\")\n }\n\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n if (projectNumber === null) {\n throw new Error(\"Missing or invalid projectNumber for project_v2.org.view\")\n }\n\n const args = [\"project\", \"view\", String(projectNumber), \"--owner\", owner, \"--format\", \"json\"]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.org.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.org.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const normalized = normalizeProjectV2Summary(data)\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.org.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"project_v2.org.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.org.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2UserGet: CliHandler = async (runner, params, _card) => {\n try {\n const user = parseNonEmptyString(params.user)\n if (user === null) {\n throw new Error(\"Missing or invalid user for project_v2.user.view\")\n }\n\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n if (projectNumber === null) {\n throw new Error(\"Missing or invalid projectNumber for project_v2.user.view\")\n }\n\n const args = [\"project\", \"view\", String(projectNumber), \"--owner\", user, \"--format\", \"json\"]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.user.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.user.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const normalized = normalizeProjectV2Summary(data)\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.user.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"project_v2.user.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.user.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2FieldsList: CliHandler = async (runner, params, _card) => {\n try {\n const projectOwner = parseNonEmptyString(params.owner)\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n if (projectOwner === null || projectNumber === null) {\n throw new Error(\"Missing or invalid owner/projectNumber for project_v2.fields.list\")\n }\n\n const args = [\n \"project\",\n \"field-list\",\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--format\",\n \"json\",\n ]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.fields.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.fields.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const fields = Array.isArray(root.fields) ? root.fields : []\n\n const normalized = {\n items: fields.map((field) => {\n if (typeof field !== \"object\" || field === null || Array.isArray(field)) {\n return { id: null, name: null, dataType: null }\n }\n const record = field as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n dataType: typeof record.dataType === \"string\" ? record.dataType : null,\n }\n }),\n pageInfo: { hasNextPage: false, endCursor: null },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.fields.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"project_v2.fields.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.fields.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2ItemsList: CliHandler = async (runner, params, _card) => {\n try {\n const projectOwner = parseNonEmptyString(params.owner)\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const first = parseListFirst(params.first)\n if (projectOwner === null || projectNumber === null || first === null) {\n throw new Error(\"Missing or invalid owner/projectNumber/first for project_v2.items.list\")\n }\n\n const args = [\n \"project\",\n \"item-list\",\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--format\",\n \"json\",\n \"--limit\",\n String(first),\n ]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.items.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.items.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const items = Array.isArray(root.items) ? root.items : []\n\n const normalized = {\n items: items.map((item) => {\n if (typeof item !== \"object\" || item === null || Array.isArray(item)) {\n return { id: null, contentType: null, contentNumber: null, contentTitle: null }\n }\n const record = item as Record<string, unknown>\n const content =\n typeof record.content === \"object\" &&\n record.content !== null &&\n !Array.isArray(record.content)\n ? (record.content as Record<string, unknown>)\n : {}\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n contentType: typeof content.type === \"string\" ? content.type : null,\n contentNumber: typeof content.number === \"number\" ? content.number : null,\n contentTitle: typeof content.title === \"string\" ? content.title : null,\n }\n }),\n pageInfo: { hasNextPage: false, endCursor: null },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.items.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"project_v2.items.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.items.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2ItemAddIssue: CliHandler = async (runner, params, _card) => {\n try {\n const projectOwner = parseNonEmptyString(params.owner)\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const issueUrl = parseNonEmptyString(params.issueUrl)\n if (projectOwner === null || projectNumber === null || issueUrl === null) {\n throw new Error(\n \"Missing or invalid owner/projectNumber/issueUrl for project_v2.items.issue.add\",\n )\n }\n\n const args = [\n \"project\",\n \"item-add\",\n String(projectNumber),\n \"--owner\",\n projectOwner,\n \"--url\",\n issueUrl,\n \"--format\",\n \"json\",\n ]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.items.issue.add\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.items.issue.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n const normalized = { itemId: typeof root.id === \"string\" ? root.id : null, itemType: null }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.items.issue.add\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"project_v2.items.issue.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.items.issue.add\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2ItemFieldUpdate: CliHandler = async (runner, params, _card) => {\n try {\n const projectId = parseNonEmptyString(params.projectId)\n const itemId = parseNonEmptyString(params.itemId)\n const fieldId = parseNonEmptyString(params.fieldId)\n if (projectId === null || itemId === null || fieldId === null) {\n throw new Error(\n \"Missing or invalid projectId/itemId/fieldId for project_v2.items.field.update\",\n )\n }\n\n const args = [\n \"project\",\n \"item-edit\",\n \"--project-id\",\n projectId,\n \"--id\",\n itemId,\n \"--field-id\",\n fieldId,\n ]\n\n // Priority: valueText > valueNumber (finite) > valueDate > valueSingleSelectOptionId > valueIterationId > clear===true\n const valueText = parseNonEmptyString(params.valueText)\n if (valueText !== null) {\n args.push(\"--text\", valueText)\n } else {\n const valueNumber = params.valueNumber\n if (typeof valueNumber === \"number\" && Number.isFinite(valueNumber)) {\n args.push(\"--number\", String(valueNumber))\n } else {\n const valueDate = parseNonEmptyString(params.valueDate)\n if (valueDate !== null) {\n args.push(\"--date\", valueDate)\n } else {\n const valueSingleSelectOptionId = parseNonEmptyString(params.valueSingleSelectOptionId)\n if (valueSingleSelectOptionId !== null) {\n args.push(\"--single-select-option-id\", valueSingleSelectOptionId)\n } else {\n const valueIterationId = parseNonEmptyString(params.valueIterationId)\n if (valueIterationId !== null) {\n args.push(\"--iteration-id\", valueIterationId)\n } else {\n const clear = params.clear === true\n if (clear) {\n args.push(\"--clear\")\n } else {\n throw new Error(\"Missing field value update for project_v2.items.field.update\")\n }\n }\n }\n }\n }\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.items.field.update\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.items.field.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = { itemId }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.items.field.update\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.items.field.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nconst handleProjectV2ItemsIssueRemove: CliHandler = async (runner, params, _card) => {\n try {\n const owner = parseNonEmptyString(params.owner)\n const projectNumber = parseStrictPositiveInt(params.projectNumber)\n const itemId = parseNonEmptyString(params.itemId)\n if (owner === null || projectNumber === null || itemId === null) {\n throw new Error(\n \"Missing or invalid owner/projectNumber/itemId for project_v2.items.issue.remove\",\n )\n }\n\n const args = [\"project\", \"item-delete\", String(projectNumber), \"--owner\", owner, \"--id\", itemId]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"project_v2.items.issue.remove\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"project_v2.items.issue.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = { deletedItemId: itemId }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"project_v2.items.issue.remove\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"project_v2.items.issue.remove\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"project_v2.org.view\": handleProjectV2OrgGet,\n \"project_v2.user.view\": handleProjectV2UserGet,\n \"project_v2.fields.list\": handleProjectV2FieldsList,\n \"project_v2.items.list\": handleProjectV2ItemsList,\n \"project_v2.items.issue.add\": handleProjectV2ItemAddIssue,\n \"project_v2.items.field.update\": handleProjectV2ItemFieldUpdate,\n \"project_v2.items.issue.remove\": handleProjectV2ItemsIssueRemove,\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n commandTokens,\n DEFAULT_TIMEOUT_MS,\n parseCliData,\n parseListFirst,\n parseNonEmptyString,\n parseStrictPositiveInt,\n requireRepo,\n sanitizeCliErrorMessage,\n} from \"../helpers.js\"\n\nfunction normalizeRelease(input: unknown): Record<string, unknown> {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return {\n id: 0,\n tagName: null,\n name: null,\n isDraft: false,\n isPrerelease: false,\n url: null,\n targetCommitish: null,\n createdAt: null,\n publishedAt: null,\n }\n }\n\n const record = input as Record<string, unknown>\n return {\n id: typeof record.id === \"number\" ? record.id : 0,\n tagName: typeof record.tag_name === \"string\" ? record.tag_name : null,\n name: typeof record.name === \"string\" ? record.name : null,\n isDraft: typeof record.draft === \"boolean\" ? record.draft : false,\n isPrerelease: typeof record.prerelease === \"boolean\" ? record.prerelease : false,\n url: typeof record.html_url === \"string\" ? record.html_url : null,\n targetCommitish: typeof record.target_commitish === \"string\" ? record.target_commitish : null,\n createdAt: typeof record.created_at === \"string\" ? record.created_at : null,\n publishedAt: typeof record.published_at === \"string\" ? record.published_at : null,\n }\n}\n\nexport const handleReleaseList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"release.list\")\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for release.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases`,\n \"-F\",\n `per_page=${first}`,\n ]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const items = Array.isArray(data) ? data.map((entry) => normalizeRelease(entry)) : []\n\n return normalizeResult({ items, pageInfo: { hasNextPage: false, endCursor: null } }, \"cli\", {\n capabilityId: \"release.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"release.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"release.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleReleaseGet: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"release.view\")\n\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName === null) {\n throw new Error(\"Missing or invalid tagName for release.view\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/tags/${encodeURIComponent(tagName)}`,\n ]\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const normalized = normalizeRelease(data)\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"release.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"release.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"release.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleReleaseCreateDraft: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"release.create\")\n\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName === null) {\n throw new Error(\"Missing or invalid tagName for release.create\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases`,\n \"--method\",\n \"POST\",\n \"-f\",\n `tag_name=${tagName}`,\n \"-F\",\n \"draft=true\",\n ]\n\n const title = parseNonEmptyString(params.title)\n if (title !== null) {\n args.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes !== null) {\n args.push(\"-f\", `body=${notes}`)\n }\n\n const targetCommitish = parseNonEmptyString(params.targetCommitish)\n if (targetCommitish !== null) {\n args.push(\"-f\", `target_commitish=${targetCommitish}`)\n }\n\n const prerelease = params.prerelease\n if (typeof prerelease === \"boolean\") {\n args.push(\"-F\", `prerelease=${prerelease}`)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.create\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.create\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const normalized = normalizeRelease(data)\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"release.create\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"release.create\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"release.create\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleReleaseUpdate: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"release.update\")\n\n const releaseId = parseStrictPositiveInt(params.releaseId)\n if (releaseId === null) {\n throw new Error(\"Missing or invalid releaseId for release.update\")\n }\n\n if (params.draft !== undefined && params.draft !== true) {\n throw new Error(\"release.update only supports draft=true; use release.publish to publish\")\n }\n\n const args = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/${releaseId}`,\n \"--method\",\n \"PATCH\",\n \"-F\",\n \"draft=true\",\n ]\n\n const tagName = parseNonEmptyString(params.tagName)\n if (tagName !== null) {\n args.push(\"-f\", `tag_name=${tagName}`)\n }\n\n const title = parseNonEmptyString(params.title)\n if (title !== null) {\n args.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes !== null) {\n args.push(\"-f\", `body=${notes}`)\n }\n\n const targetCommitish = parseNonEmptyString(params.targetCommitish)\n if (targetCommitish !== null) {\n args.push(\"-f\", `target_commitish=${targetCommitish}`)\n }\n\n const prerelease = params.prerelease\n if (typeof prerelease === \"boolean\") {\n args.push(\"-F\", `prerelease=${prerelease}`)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.update\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const normalized = normalizeRelease(data)\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"release.update\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"release.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.includes(\"only supports draft=true\")) {\n return normalizeError(\n { code: errorCodes.Validation, message: error.message, retryable: false },\n \"cli\",\n { capabilityId: \"release.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"release.update\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleReleasePublishDraft: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"release.publish\")\n\n const releaseId = parseStrictPositiveInt(params.releaseId)\n if (releaseId === null) {\n throw new Error(\"Missing or invalid releaseId for release.publish\")\n }\n\n const readArgs = [...commandTokens(card, \"api\"), `repos/${owner}/${name}/releases/${releaseId}`]\n\n const readResult = await runner.run(\"gh\", readArgs, DEFAULT_TIMEOUT_MS)\n\n if (readResult.exitCode !== 0) {\n const code = mapErrorToCode(readResult.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(readResult.stderr, readResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.publish\", exitCode: readResult.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.publish\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const readData = parseCliData(readResult.stdout)\n const readRecord =\n typeof readData === \"object\" && readData !== null && !Array.isArray(readData)\n ? (readData as Record<string, unknown>)\n : {}\n\n const isDraft = readRecord.draft === true\n if (!isDraft) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: \"release.publish requires an existing draft release\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"release.publish\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const publishArgs = [\n ...commandTokens(card, \"api\"),\n `repos/${owner}/${name}/releases/${releaseId}`,\n \"--method\",\n \"PATCH\",\n \"-F\",\n \"draft=false\",\n ]\n\n const title = parseNonEmptyString(params.title)\n if (title !== null) {\n publishArgs.push(\"-f\", `name=${title}`)\n }\n\n const notes = parseNonEmptyString(params.notes)\n if (notes !== null) {\n publishArgs.push(\"-f\", `body=${notes}`)\n }\n\n const prerelease = params.prerelease\n if (typeof prerelease === \"boolean\") {\n publishArgs.push(\"-F\", `prerelease=${prerelease}`)\n }\n\n const publishResult = await runner.run(\"gh\", publishArgs, DEFAULT_TIMEOUT_MS)\n\n if (publishResult.exitCode !== 0) {\n const code = mapErrorToCode(publishResult.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(publishResult.stderr, publishResult.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"release.publish\", exitCode: publishResult.exitCode },\n },\n \"cli\",\n { capabilityId: \"release.publish\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const publishData = parseCliData(publishResult.stdout)\n const normalized = normalizeRelease(publishData)\n const withWasDraft = { ...normalized, wasDraft: true }\n\n return normalizeResult(withWasDraft, \"cli\", {\n capabilityId: \"release.publish\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n { code: errorCodes.Server, message: \"Failed to parse CLI JSON output\", retryable: false },\n \"cli\",\n { capabilityId: \"release.publish\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"release.publish\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"release.list\": handleReleaseList,\n \"release.view\": handleReleaseGet,\n \"release.create\": handleReleaseCreateDraft,\n \"release.update\": handleReleaseUpdate,\n \"release.publish\": handleReleasePublishDraft,\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n commandTokens,\n DEFAULT_TIMEOUT_MS,\n jsonFieldsFromCard,\n parseCliData,\n parseListFirst,\n REPO_ISSUE_TYPES_GRAPHQL_QUERY,\n sanitizeCliErrorMessage,\n} from \"../helpers.js\"\n\nexport const handleRepoView: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const args = commandTokens(card, \"repo view\")\n if (repo) {\n args.push(repo)\n }\n\n args.push(\n \"--json\",\n jsonFieldsFromCard(\n card,\n \"id,name,nameWithOwner,isPrivate,stargazerCount,forkCount,url,defaultBranchRef\",\n ),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"repo.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"repo.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const input =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const defaultBranchRef =\n typeof input.defaultBranchRef === \"object\" && input.defaultBranchRef !== null\n ? (input.defaultBranchRef as Record<string, unknown>)\n : null\n\n const normalized = {\n id: input.id,\n name: input.name,\n nameWithOwner: input.nameWithOwner,\n isPrivate: input.isPrivate,\n stargazerCount: input.stargazerCount,\n forkCount: input.forkCount,\n url: input.url,\n defaultBranch: typeof defaultBranchRef?.name === \"string\" ? defaultBranchRef.name : null,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"repo.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"repo.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"repo.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleRepoLabelsList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for repo.labels.list\")\n }\n\n const args = commandTokens(card, \"label list\")\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"id,name,description,color,isDefault\"),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"repo.labels.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"repo.labels.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const labels = Array.isArray(data) ? data : []\n\n const normalized = {\n items: labels.map((label) => {\n if (typeof label !== \"object\" || label === null || Array.isArray(label)) {\n return {\n id: null,\n name: null,\n description: null,\n color: null,\n isDefault: null,\n }\n }\n\n const record = label as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n description: typeof record.description === \"string\" ? record.description : null,\n color: typeof record.color === \"string\" ? record.color : null,\n isDefault: typeof record.isDefault === \"boolean\" ? record.isDefault : null,\n }\n }),\n pageInfo: {\n hasNextPage: false,\n endCursor: null,\n },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"repo.labels.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"repo.labels.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"repo.labels.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleRepoIssueTypesList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for repo.issue_types.list\")\n }\n\n const after = params.after\n if (!(after === undefined || after === null || typeof after === \"string\")) {\n throw new Error(\"Invalid after cursor for repo.issue_types.list\")\n }\n\n if (!owner || !name) {\n throw new Error(\"Missing owner/name for repo.issue_types.list\")\n }\n\n const args = [\n ...commandTokens(card, \"api graphql\"),\n \"-f\",\n `query=${REPO_ISSUE_TYPES_GRAPHQL_QUERY}`,\n \"-f\",\n `owner=${owner}`,\n \"-f\",\n `name=${name}`,\n \"-F\",\n `first=${first}`,\n ]\n\n if (typeof after === \"string\" && after.length > 0) {\n args.push(\"-f\", `after=${after}`)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"repo.issue_types.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"repo.issue_types.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n const payload =\n typeof root.data === \"object\" && root.data !== null && !Array.isArray(root.data)\n ? (root.data as Record<string, unknown>)\n : {}\n const repository =\n typeof payload.repository === \"object\" &&\n payload.repository !== null &&\n !Array.isArray(payload.repository)\n ? (payload.repository as Record<string, unknown>)\n : {}\n const connection =\n typeof repository.issueTypes === \"object\" &&\n repository.issueTypes !== null &&\n !Array.isArray(repository.issueTypes)\n ? (repository.issueTypes as Record<string, unknown>)\n : {}\n const nodes = Array.isArray(connection.nodes) ? connection.nodes : []\n const pageInfo =\n typeof connection.pageInfo === \"object\" &&\n connection.pageInfo !== null &&\n !Array.isArray(connection.pageInfo)\n ? (connection.pageInfo as Record<string, unknown>)\n : {}\n\n const normalized = {\n items: nodes.map((node) => {\n if (typeof node !== \"object\" || node === null || Array.isArray(node)) {\n return {\n id: null,\n name: null,\n color: null,\n isEnabled: null,\n }\n }\n\n const record = node as Record<string, unknown>\n return {\n id: typeof record.id === \"string\" ? record.id : null,\n name: typeof record.name === \"string\" ? record.name : null,\n color: typeof record.color === \"string\" ? record.color : null,\n isEnabled: typeof record.isEnabled === \"boolean\" ? record.isEnabled : null,\n }\n }),\n pageInfo: {\n hasNextPage: typeof pageInfo.hasNextPage === \"boolean\" ? pageInfo.hasNextPage : false,\n endCursor: typeof pageInfo.endCursor === \"string\" ? pageInfo.endCursor : null,\n },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"repo.issue_types.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"repo.issue_types.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n if (error instanceof Error && error.message.toLowerCase().includes(\"invalid after cursor\")) {\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: error.message,\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"repo.issue_types.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"repo.issue_types.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"repo.view\": handleRepoView,\n \"repo.labels.list\": handleRepoLabelsList,\n \"repo.issue_types.list\": handleRepoIssueTypesList,\n}\n","import { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"../../../normalizer.js\"\nimport type { CliHandler } from \"../helpers.js\"\nimport {\n commandTokens,\n DEFAULT_TIMEOUT_MS,\n jsonFieldsFromCard,\n MAX_WORKFLOW_JOB_LOG_CHARS,\n normalizeWorkflowItem,\n parseCliData,\n parseListFirst,\n parseNonEmptyString,\n parseStrictPositiveInt,\n requireRepo,\n sanitizeCliErrorMessage,\n} from \"../helpers.js\"\n\nexport const handleWorkflowRunsList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n if (!repo) {\n throw new Error(\"Missing owner/name for workflow.runs.list\")\n }\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for workflow.runs.list\")\n }\n\n const args = commandTokens(card, \"run list\")\n args.push(\"--repo\", repo)\n\n const branch = parseNonEmptyString(params.branch)\n if (branch) {\n args.push(\"--branch\", branch)\n }\n\n const event = parseNonEmptyString(params.event)\n if (event) {\n args.push(\"--event\", event)\n }\n\n const status = parseNonEmptyString(params.status)\n if (status) {\n args.push(\"--status\", status)\n }\n\n args.push(\n \"--limit\",\n String(first),\n \"--json\",\n jsonFieldsFromCard(card, \"databaseId,workflowName,status,conclusion,headBranch,url\"),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.runs.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.runs.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const runs = Array.isArray(data) ? data : []\n\n const normalized = {\n items: runs.map((run) => {\n if (typeof run !== \"object\" || run === null || Array.isArray(run)) {\n return {\n id: 0,\n workflowName: null,\n status: null,\n conclusion: null,\n headBranch: null,\n url: null,\n }\n }\n\n const input = run as Record<string, unknown>\n return {\n id: typeof input.databaseId === \"number\" ? input.databaseId : 0,\n workflowName: typeof input.workflowName === \"string\" ? input.workflowName : null,\n status: typeof input.status === \"string\" ? input.status : null,\n conclusion: typeof input.conclusion === \"string\" ? input.conclusion : null,\n headBranch: typeof input.headBranch === \"string\" ? input.headBranch : null,\n url: typeof input.url === \"string\" ? input.url : null,\n }\n }),\n pageInfo: { hasNextPage: false, endCursor: null },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.runs.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"workflow.runs.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.runs.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowJobLogsRaw: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const jobId = parseStrictPositiveInt(params.jobId)\n if (jobId === null) {\n throw new Error(\"Missing or invalid jobId for workflow.job.logs.raw\")\n }\n\n const args = commandTokens(card, \"run view\")\n args.push(\"--job\", String(jobId), \"--log\")\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.job.logs.raw\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.job.logs.raw\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const rawLog = result.stdout\n const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS\n const logContent = rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS)\n\n const normalized = {\n jobId,\n log: logContent,\n truncated,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.job.logs.raw\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.job.logs.raw\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowJobLogsGet: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const jobId = parseStrictPositiveInt(params.jobId)\n if (jobId === null) {\n throw new Error(\"Missing or invalid jobId for workflow.job.logs.view\")\n }\n\n const args = commandTokens(card, \"run view\")\n args.push(\"--job\", String(jobId), \"--log\")\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.job.logs.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.job.logs.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const rawLog = result.stdout\n const truncated = rawLog.length > MAX_WORKFLOW_JOB_LOG_CHARS\n const logContent = rawLog.slice(0, MAX_WORKFLOW_JOB_LOG_CHARS)\n\n const lines = logContent.split(/\\r?\\n/)\n const errorLines: string[] = []\n const warningLines: string[] = []\n let totalErrorCount = 0\n let totalWarningCount = 0\n\n for (const line of lines) {\n if (/\\berror\\b/i.test(line)) {\n totalErrorCount++\n if (errorLines.length < 10) {\n errorLines.push(line)\n }\n }\n if (/\\bwarn(ing)?\\b/i.test(line)) {\n totalWarningCount++\n if (warningLines.length < 10) {\n warningLines.push(line)\n }\n }\n }\n\n const normalized = {\n jobId,\n truncated,\n summary: {\n errorCount: totalErrorCount,\n warningCount: totalWarningCount,\n topErrorLines: errorLines.slice(0, 10),\n },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.job.logs.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.job.logs.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n if (!repo) {\n throw new Error(\"Missing owner/name for workflow.list\")\n }\n\n const first = parseListFirst(params.first)\n if (first === null) {\n throw new Error(\"Missing or invalid first for workflow.list\")\n }\n\n const args = commandTokens(card, \"workflow list\")\n args.push(\"--repo\", repo)\n args.push(\"--limit\", String(first), \"--json\", jsonFieldsFromCard(card, \"id,name,path,state\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const workflows = Array.isArray(data) ? data : []\n\n const normalized = {\n items: workflows.map((workflow) => normalizeWorkflowItem(workflow)),\n pageInfo: { hasNextPage: false, endCursor: null },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"workflow.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowGet: CliHandler = async (runner, params, card) => {\n try {\n const workflowId =\n parseNonEmptyString(params.workflowId) ??\n (typeof params.workflowId === \"number\" ? String(params.workflowId) : null)\n\n if (!workflowId) {\n throw new Error(\"Missing or invalid workflowId for workflow.view\")\n }\n\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const args = commandTokens(card, \"workflow view\")\n args.push(workflowId)\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"id,name,path,state,url\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n const item = normalizeWorkflowItem(root)\n const normalized = {\n ...item,\n url: typeof root.url === \"string\" ? root.url : null,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"workflow.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowRunView: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow.run.view\")\n }\n\n const args = commandTokens(card, \"run view\")\n args.push(String(runId))\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\n \"--json\",\n jsonFieldsFromCard(\n card,\n \"databaseId,workflowName,status,conclusion,headBranch,headSha,url,event,createdAt,updatedAt,startedAt,jobs\",\n ),\n )\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.run.view\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.run.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n const jobsArray = Array.isArray(root.jobs) ? root.jobs : []\n\n const normalized = {\n id: typeof root.databaseId === \"number\" ? root.databaseId : 0,\n workflowName: typeof root.workflowName === \"string\" ? root.workflowName : null,\n status: typeof root.status === \"string\" ? root.status : null,\n conclusion: typeof root.conclusion === \"string\" ? root.conclusion : null,\n headBranch: typeof root.headBranch === \"string\" ? root.headBranch : null,\n headSha: typeof root.headSha === \"string\" ? root.headSha : null,\n event: typeof root.event === \"string\" ? root.event : null,\n createdAt: typeof root.createdAt === \"string\" ? root.createdAt : null,\n updatedAt: typeof root.updatedAt === \"string\" ? root.updatedAt : null,\n startedAt: typeof root.startedAt === \"string\" ? root.startedAt : null,\n url: typeof root.url === \"string\" ? root.url : null,\n attempt: typeof root.attempt === \"number\" ? root.attempt : 1,\n jobs: jobsArray.map((job) => {\n if (typeof job !== \"object\" || job === null || Array.isArray(job)) {\n return {\n id: 0,\n name: null,\n status: null,\n conclusion: null,\n startedAt: null,\n completedAt: null,\n url: null,\n }\n }\n\n const input = job as Record<string, unknown>\n return {\n id: typeof input.databaseId === \"number\" ? input.databaseId : 0,\n name: typeof input.name === \"string\" ? input.name : null,\n status: typeof input.status === \"string\" ? input.status : null,\n conclusion: typeof input.conclusion === \"string\" ? input.conclusion : null,\n startedAt: typeof input.startedAt === \"string\" ? input.startedAt : null,\n completedAt: typeof input.completedAt === \"string\" ? input.completedAt : null,\n url: typeof input.url === \"string\" ? input.url : null,\n }\n }),\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.run.view\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"workflow.run.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.run.view\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowRunRerunAll: CliHandler = async (runner, params, card) => {\n try {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow.run.rerun.all\")\n }\n\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const args = commandTokens(card, \"run rerun\")\n args.push(String(runId))\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.run.rerun.all\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.run.rerun.all\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = {\n runId,\n queued: true,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.run.rerun.all\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.run.rerun.all\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowRunCancel: CliHandler = async (runner, params, card) => {\n try {\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow.run.cancel\")\n }\n\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const args = commandTokens(card, \"run cancel\")\n args.push(String(runId))\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.run.cancel\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.run.cancel\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = {\n runId,\n status: \"cancel_requested\",\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.run.cancel\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.run.cancel\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowRunArtifactsList: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n const repo = owner && name ? `${owner}/${name}` : \"\"\n\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow.run.artifacts.list\")\n }\n\n const args = commandTokens(card, \"run view\")\n args.push(String(runId))\n\n if (repo) {\n args.push(\"--repo\", repo)\n }\n\n args.push(\"--json\", jsonFieldsFromCard(card, \"artifacts\"))\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.run.artifacts.list\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.run.artifacts.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const data = parseCliData(result.stdout)\n const root =\n typeof data === \"object\" && data !== null && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {}\n\n const artifactsArray = Array.isArray(root.artifacts) ? root.artifacts : []\n\n const normalized = {\n items: artifactsArray.map((artifact) => {\n if (typeof artifact !== \"object\" || artifact === null || Array.isArray(artifact)) {\n return {\n id: null,\n name: null,\n sizeInBytes: null,\n archiveDownloadUrl: null,\n }\n }\n\n const input = artifact as Record<string, unknown>\n return {\n id: typeof input.id === \"string\" || typeof input.id === \"number\" ? input.id : null,\n name: typeof input.name === \"string\" ? input.name : null,\n sizeInBytes: typeof input.sizeInBytes === \"number\" ? input.sizeInBytes : null,\n archiveDownloadUrl:\n typeof input.archiveDownloadUrl === \"string\" ? input.archiveDownloadUrl : null,\n }\n }),\n pageInfo: { hasNextPage: false, endCursor: null },\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.run.artifacts.list\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n if (error instanceof SyntaxError) {\n return normalizeError(\n {\n code: errorCodes.Server,\n message: \"Failed to parse CLI JSON output\",\n retryable: false,\n },\n \"cli\",\n { capabilityId: \"workflow.run.artifacts.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.run.artifacts.list\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowDispatchRun: CliHandler = async (runner, params, card) => {\n try {\n const workflowId = parseNonEmptyString(params.workflowId)\n if (!workflowId) {\n throw new Error(\"Missing or invalid workflowId for workflow.dispatch\")\n }\n\n const ref = parseNonEmptyString(params.ref)\n if (!ref) {\n throw new Error(\"Missing or invalid ref for workflow.dispatch\")\n }\n\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"workflow.dispatch\")\n\n const encodedWorkflowId = encodeURIComponent(workflowId)\n const args = commandTokens(card, \"api\")\n args.push(`repos/${owner}/${name}/actions/workflows/${encodedWorkflowId}/dispatches`)\n args.push(\"--method\", \"POST\")\n args.push(\"-f\", `ref=${ref}`)\n\n if (params.inputs !== undefined) {\n const inputs = params.inputs\n if (typeof inputs !== \"object\" || inputs === null || Array.isArray(inputs)) {\n throw new Error(\"Missing or invalid inputs for workflow.dispatch\")\n }\n const inputsObj = inputs as Record<string, unknown>\n for (const [key, value] of Object.entries(inputsObj)) {\n if (key.trim() === \"\") {\n throw new Error(\"Missing or invalid inputs for workflow.dispatch\")\n }\n if (typeof value !== \"string\" && typeof value !== \"number\" && typeof value !== \"boolean\") {\n throw new Error(\"Missing or invalid inputs for workflow.dispatch\")\n }\n args.push(\"-f\", `inputs[${key}]=${String(value)}`)\n }\n }\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.dispatch\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.dispatch\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = {\n workflowId: String(workflowId),\n ref: String(ref),\n dispatched: true,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.dispatch\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.dispatch\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handleWorkflowRunRerunFailed: CliHandler = async (runner, params, card) => {\n try {\n const owner = String(params.owner ?? \"\")\n const name = String(params.name ?? \"\")\n\n requireRepo(owner, name, \"workflow.run.rerun.failed\")\n\n const runId = parseStrictPositiveInt(params.runId)\n if (runId === null) {\n throw new Error(\"Missing or invalid runId for workflow.run.rerun.failed\")\n }\n\n const args = commandTokens(card, \"api\")\n args.push(`repos/${owner}/${name}/actions/runs/${runId}/rerun-failed-jobs`)\n args.push(\"--method\", \"POST\")\n\n const result = await runner.run(\"gh\", args, DEFAULT_TIMEOUT_MS)\n\n if (result.exitCode !== 0) {\n const code = mapErrorToCode(result.stderr)\n return normalizeError(\n {\n code,\n message: sanitizeCliErrorMessage(result.stderr, result.exitCode),\n retryable: isRetryableErrorCode(code),\n details: { capabilityId: \"workflow.run.rerun.failed\", exitCode: result.exitCode },\n },\n \"cli\",\n { capabilityId: \"workflow.run.rerun.failed\", reason: \"CARD_FALLBACK\" },\n )\n }\n\n const normalized = {\n runId,\n queued: true,\n }\n\n return normalizeResult(normalized, \"cli\", {\n capabilityId: \"workflow.run.rerun.failed\",\n reason: \"CARD_FALLBACK\",\n })\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n return normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"cli\",\n { capabilityId: \"workflow.run.rerun.failed\", reason: \"CARD_FALLBACK\" },\n )\n }\n}\n\nexport const handlers: Record<string, CliHandler> = {\n \"workflow.runs.list\": handleWorkflowRunsList,\n \"workflow.job.logs.raw\": handleWorkflowJobLogsRaw,\n \"workflow.job.logs.view\": handleWorkflowJobLogsGet,\n \"workflow.list\": handleWorkflowList,\n \"workflow.view\": handleWorkflowGet,\n \"workflow.run.view\": handleWorkflowRunView,\n \"workflow.run.rerun.all\": handleWorkflowRunRerunAll,\n \"workflow.run.cancel\": handleWorkflowRunCancel,\n \"workflow.run.artifacts.list\": handleWorkflowRunArtifactsList,\n \"workflow.dispatch\": handleWorkflowDispatchRun,\n \"workflow.run.rerun.failed\": handleWorkflowRunRerunFailed,\n}\n","import { handlers as issueHandlers } from \"./domains/issue.js\"\nimport { handlers as prHandlers } from \"./domains/pr.js\"\nimport { handlers as projectV2Handlers } from \"./domains/project-v2.js\"\nimport { handlers as releaseHandlers } from \"./domains/release.js\"\nimport { handlers as repoHandlers } from \"./domains/repo.js\"\nimport { handlers as workflowHandlers } from \"./domains/workflow.js\"\nimport type { CliHandler } from \"./helpers.js\"\n\nconst ALL_HANDLERS: Record<string, CliHandler> = {\n ...repoHandlers,\n ...issueHandlers,\n ...prHandlers,\n ...workflowHandlers,\n ...projectV2Handlers,\n ...releaseHandlers,\n}\n\nexport function getCliHandler(capabilityId: string): CliHandler | undefined {\n return ALL_HANDLERS[capabilityId]\n}\n\nexport function listCliCapabilities(): string[] {\n return Object.keys(ALL_HANDLERS)\n}\n","import type { ResultEnvelope } from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport type { OperationCard } from \"@core/core/registry/types.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { normalizeError } from \"../normalizer.js\"\nimport { getCliHandler } from \"./cli/capability-registry.js\"\nimport type { CliCommandRunner } from \"./cli-adapter.js\"\n\nexport type { CliCommandRunner }\n\nexport type CliCapabilityId =\n | \"repo.view\"\n | \"repo.labels.list\"\n | \"repo.issue_types.list\"\n | \"issue.view\"\n | \"issue.list\"\n | \"issue.comments.list\"\n | \"issue.labels.remove\"\n | \"issue.assignees.add\"\n | \"issue.assignees.remove\"\n | \"issue.milestone.clear\"\n | \"pr.view\"\n | \"pr.list\"\n | \"pr.create\"\n | \"pr.update\"\n | \"pr.checks.list\"\n | \"pr.checks.rerun.failed\"\n | \"pr.checks.rerun.all\"\n | \"pr.merge.status\"\n | \"pr.reviews.submit\"\n | \"pr.merge\"\n | \"pr.reviews.request\"\n | \"pr.assignees.add\"\n | \"pr.assignees.remove\"\n | \"pr.branch.update\"\n | \"pr.diff.view\"\n | \"pr.diff.files\"\n | \"workflow.runs.list\"\n | \"workflow.job.logs.raw\"\n | \"workflow.job.logs.view\"\n | \"workflow.list\"\n | \"workflow.view\"\n | \"workflow.run.view\"\n | \"workflow.run.rerun.all\"\n | \"workflow.run.cancel\"\n | \"workflow.run.artifacts.list\"\n | \"workflow.dispatch\"\n | \"workflow.run.rerun.failed\"\n | \"project_v2.org.view\"\n | \"project_v2.user.view\"\n | \"project_v2.fields.list\"\n | \"project_v2.items.list\"\n | \"project_v2.items.issue.add\"\n | \"project_v2.items.issue.remove\"\n | \"project_v2.items.field.update\"\n | \"release.list\"\n | \"release.view\"\n | \"release.create\"\n | \"release.update\"\n | \"release.publish\"\n\nexport async function runCliCapability(\n runner: CliCommandRunner,\n capabilityId: CliCapabilityId,\n params: Record<string, unknown>,\n card?: OperationCard,\n): Promise<ResultEnvelope> {\n logger.debug(\"cli.start\", { capability_id: capabilityId })\n const handler = getCliHandler(capabilityId)\n if (handler === undefined) {\n const result = normalizeError(\n {\n code: errorCodes.NotFound,\n message: `No CLI handler registered for capability: ${capabilityId}`,\n retryable: false,\n },\n \"cli\",\n { capabilityId, reason: \"CARD_FALLBACK\" },\n )\n logger.debug(\"cli.complete\", {\n capability_id: capabilityId,\n ok: result.ok,\n })\n return result\n }\n const result = await handler(runner, params, card)\n logger.debug(\"cli.complete\", { capability_id: capabilityId, ok: result.ok })\n return result\n}\n","import type { GithubClient } from \"./github-client.js\"\nimport type {\n IssueAssigneesAddInput,\n IssueAssigneesRemoveInput,\n IssueAssigneesUpdateInput,\n IssueBlockedByInput,\n IssueCommentCreateInput,\n IssueCommentsListInput,\n IssueCreateInput,\n IssueLabelsAddInput,\n IssueLabelsRemoveInput,\n IssueLabelsUpdateInput,\n IssueLinkedPrsListInput,\n IssueListInput,\n IssueMilestoneClearInput,\n IssueMilestoneSetInput,\n IssueMutationInput,\n IssueParentRemoveInput,\n IssueParentSetInput,\n IssueRelationsGetInput,\n IssueUpdateInput,\n IssueViewInput,\n PrAssigneesAddInput,\n PrAssigneesRemoveInput,\n PrBranchUpdateInput,\n PrCommentsListInput,\n PrDiffListFilesInput,\n PrListInput,\n PrMergeStatusInput,\n ProjectV2FieldsListInput,\n ProjectV2ItemAddInput,\n ProjectV2ItemFieldUpdateInput,\n ProjectV2ItemRemoveInput,\n ProjectV2ItemsListInput,\n ProjectV2OrgViewInput,\n ProjectV2UserViewInput,\n PrReviewSubmitInput,\n PrReviewsListInput,\n PrReviewsRequestInput,\n PrUpdateInput,\n PrViewInput,\n ReleaseListInput,\n ReleaseViewInput,\n RepoIssueTypesListInput,\n RepoLabelsListInput,\n RepoViewInput,\n} from \"./types.js\"\n\nexport type GraphqlHandler = (\n client: GithubClient,\n params: Record<string, unknown>,\n) => Promise<unknown>\n\nconst DEFAULT_LIST_FIRST = 30\n\nfunction withDefaultFirst(params: Record<string, unknown>): Record<string, unknown> {\n if (params.first === undefined) {\n return { ...params, first: DEFAULT_LIST_FIRST }\n }\n return params\n}\n\nfunction requireNonEmptyString(\n params: Record<string, unknown>,\n field: string,\n capabilityId: string,\n): string {\n const value = params[field]\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`Missing or invalid ${field} for ${capabilityId}`)\n }\n return value\n}\n\nconst handlers = new Map<string, GraphqlHandler>([\n // Repo\n [\"repo.view\", (c, p) => c.fetchRepoView(p as RepoViewInput)],\n\n // Issue queries\n [\"issue.view\", (c, p) => c.fetchIssueView(p as IssueViewInput)],\n [\"issue.list\", (c, p) => c.fetchIssueList(withDefaultFirst(p) as IssueListInput)],\n [\"issue.comments.list\", (c, p) => c.fetchIssueCommentsList(p as IssueCommentsListInput)],\n\n // Issue mutations\n [\n \"issue.create\",\n (c, p) => {\n if (!c.createIssue) {\n throw new Error(\"createIssue operation not available\")\n }\n return c.createIssue(p as IssueCreateInput)\n },\n ],\n [\n \"issue.update\",\n (c, p) => {\n if (!c.updateIssue) {\n throw new Error(\"updateIssue operation not available\")\n }\n return c.updateIssue(p as IssueUpdateInput)\n },\n ],\n [\n \"issue.close\",\n (c, p) => {\n if (!c.closeIssue) {\n throw new Error(\"closeIssue operation not available\")\n }\n return c.closeIssue(p as IssueMutationInput)\n },\n ],\n [\n \"issue.reopen\",\n (c, p) => {\n if (!c.reopenIssue) {\n throw new Error(\"reopenIssue operation not available\")\n }\n return c.reopenIssue(p as IssueMutationInput)\n },\n ],\n [\n \"issue.delete\",\n (c, p) => {\n if (!c.deleteIssue) {\n throw new Error(\"deleteIssue operation not available\")\n }\n return c.deleteIssue(p as IssueMutationInput)\n },\n ],\n [\n \"issue.labels.add\",\n (c, p) => {\n if (!c.addIssueLabels) {\n throw new Error(\"addIssueLabels operation not available\")\n }\n return c.addIssueLabels(p as IssueLabelsAddInput)\n },\n ],\n [\n \"issue.labels.set\",\n (c, p) => {\n if (!c.updateIssueLabels) {\n throw new Error(\"updateIssueLabels operation not available\")\n }\n return c.updateIssueLabels(p as IssueLabelsUpdateInput)\n },\n ],\n [\n \"issue.labels.remove\",\n (c, p) => {\n if (!c.removeIssueLabels) {\n throw new Error(\"removeIssueLabels operation not available\")\n }\n return c.removeIssueLabels(p as IssueLabelsRemoveInput)\n },\n ],\n [\n \"issue.assignees.set\",\n (c, p) => {\n if (!c.updateIssueAssignees) {\n throw new Error(\"updateIssueAssignees operation not available\")\n }\n return c.updateIssueAssignees(p as IssueAssigneesUpdateInput)\n },\n ],\n [\n \"issue.assignees.add\",\n (c, p) => {\n if (!c.addIssueAssignees) {\n throw new Error(\"addIssueAssignees operation not available\")\n }\n return c.addIssueAssignees(p as IssueAssigneesAddInput)\n },\n ],\n [\n \"issue.assignees.remove\",\n (c, p) => {\n if (!c.removeIssueAssignees) {\n throw new Error(\"removeIssueAssignees operation not available\")\n }\n return c.removeIssueAssignees(p as IssueAssigneesRemoveInput)\n },\n ],\n [\n \"issue.milestone.set\",\n (c, p) => {\n if (!c.setIssueMilestone) {\n throw new Error(\"setIssueMilestone operation not available\")\n }\n return c.setIssueMilestone(p as IssueMilestoneSetInput)\n },\n ],\n [\n \"issue.milestone.clear\",\n (c, p) => {\n if (!c.clearIssueMilestone) {\n throw new Error(\"clearIssueMilestone operation not available\")\n }\n return c.clearIssueMilestone(p as IssueMilestoneClearInput)\n },\n ],\n [\n \"issue.comments.create\",\n (c, p) => {\n if (!c.createIssueComment) {\n throw new Error(\"createIssueComment operation not available\")\n }\n return c.createIssueComment(p as IssueCommentCreateInput)\n },\n ],\n [\n \"issue.relations.prs.list\",\n (c, p) => {\n if (!c.fetchIssueLinkedPrs) {\n throw new Error(\"fetchIssueLinkedPrs operation not available\")\n }\n return c.fetchIssueLinkedPrs(p as IssueLinkedPrsListInput)\n },\n ],\n [\n \"issue.relations.view\",\n (c, p) => {\n if (!c.fetchIssueRelations) {\n throw new Error(\"fetchIssueRelations operation not available\")\n }\n return c.fetchIssueRelations(p as IssueRelationsGetInput)\n },\n ],\n [\n \"issue.relations.parent.set\",\n (c, p) => {\n if (!c.setIssueParent) {\n throw new Error(\"setIssueParent operation not available\")\n }\n return c.setIssueParent(p as IssueParentSetInput)\n },\n ],\n [\n \"issue.relations.parent.remove\",\n (c, p) => {\n if (!c.removeIssueParent) {\n throw new Error(\"removeIssueParent operation not available\")\n }\n return c.removeIssueParent(p as IssueParentRemoveInput)\n },\n ],\n [\n \"issue.relations.blocked_by.add\",\n (c, p) => {\n if (!c.addIssueBlockedBy) {\n throw new Error(\"addIssueBlockedBy operation not available\")\n }\n return c.addIssueBlockedBy(p as IssueBlockedByInput)\n },\n ],\n [\n \"issue.relations.blocked_by.remove\",\n (c, p) => {\n if (!c.removeIssueBlockedBy) {\n throw new Error(\"removeIssueBlockedBy operation not available\")\n }\n return c.removeIssueBlockedBy(p as IssueBlockedByInput)\n },\n ],\n\n // PR queries\n [\"pr.view\", (c, p) => c.fetchPrView(p as PrViewInput)],\n [\"pr.list\", (c, p) => c.fetchPrList(withDefaultFirst(p) as PrListInput)],\n [\"pr.reviews.list\", (c, p) => c.fetchPrReviewsList(withDefaultFirst(p) as PrReviewsListInput)],\n [\"pr.diff.files\", (c, p) => c.fetchPrDiffListFiles(withDefaultFirst(p) as PrDiffListFilesInput)],\n [\"pr.merge.status\", (c, p) => c.fetchPrMergeStatus(p as PrMergeStatusInput)],\n [\"pr.threads.list\", (c, p) => c.fetchPrCommentsList(withDefaultFirst(p) as PrCommentsListInput)],\n\n // PR mutations\n [\n \"pr.threads.reply\",\n (c, p) => {\n const threadId = requireNonEmptyString(p, \"threadId\", \"pr.threads.reply\")\n const body = requireNonEmptyString(p, \"body\", \"pr.threads.reply\")\n return c.replyToReviewThread({ threadId, body })\n },\n ],\n [\n \"pr.threads.resolve\",\n (c, p) => {\n const threadId = requireNonEmptyString(p, \"threadId\", \"pr.threads.resolve\")\n return c.resolveReviewThread({ threadId })\n },\n ],\n [\n \"pr.threads.unresolve\",\n (c, p) => {\n const threadId = requireNonEmptyString(p, \"threadId\", \"pr.threads.unresolve\")\n return c.unresolveReviewThread({ threadId })\n },\n ],\n [\n \"pr.reviews.submit\",\n (c, p) => {\n if (!c.submitPrReview) {\n throw new Error(\"submitPrReview operation not available\")\n }\n return c.submitPrReview(p as PrReviewSubmitInput)\n },\n ],\n [\"repo.labels.list\", (c, p) => c.fetchRepoLabelsList(withDefaultFirst(p) as RepoLabelsListInput)],\n [\n \"repo.issue_types.list\",\n (c, p) => c.fetchRepoIssueTypesList(withDefaultFirst(p) as RepoIssueTypesListInput),\n ],\n // Release\n [\"release.view\", (c, p) => c.fetchReleaseView(p as ReleaseViewInput)],\n [\"release.list\", (c, p) => c.fetchReleaseList(withDefaultFirst(p) as ReleaseListInput)],\n\n // Project V2\n [\"project_v2.org.view\", (c, p) => c.fetchProjectV2OrgView(p as ProjectV2OrgViewInput)],\n [\"project_v2.user.view\", (c, p) => c.fetchProjectV2UserView(p as ProjectV2UserViewInput)],\n [\n \"project_v2.fields.list\",\n (c, p) => c.fetchProjectV2FieldsList(withDefaultFirst(p) as ProjectV2FieldsListInput),\n ],\n [\n \"project_v2.items.list\",\n (c, p) => c.fetchProjectV2ItemsList(withDefaultFirst(p) as ProjectV2ItemsListInput),\n ],\n\n // PR mutations (Phase 2)\n [\n \"pr.create\",\n (c, p) => {\n const raw = p as {\n owner: string\n name: string\n title: string\n head: string\n base: string\n body?: string\n draft?: boolean\n }\n return c.createPr({\n owner: raw.owner,\n name: raw.name,\n title: raw.title,\n headRefName: raw.head,\n baseRefName: raw.base,\n ...(raw.body !== undefined ? { body: raw.body } : {}),\n ...(raw.draft !== undefined ? { draft: raw.draft } : {}),\n })\n },\n ],\n [\"pr.update\", (c, p) => c.updatePr(p as PrUpdateInput)],\n [\n \"pr.merge\",\n (c, p) => {\n const raw = p as {\n owner: string\n name: string\n prNumber: number\n method?: string\n deleteBranch?: boolean\n }\n const methodMap: Record<string, string> = {\n merge: \"MERGE\",\n squash: \"SQUASH\",\n rebase: \"REBASE\",\n }\n if (raw.method !== undefined && typeof raw.method !== \"string\") {\n throw new Error(`method must be a string for pr.merge, got ${typeof raw.method}`)\n }\n const mergeMethod = raw.method !== undefined ? methodMap[raw.method.toLowerCase()] : undefined\n if (raw.method !== undefined && !mergeMethod) {\n throw new Error(\n `Unsupported merge method \"${raw.method}\" for pr.merge. Expected one of: merge, squash, rebase.`,\n )\n }\n return c.mergePr({\n owner: raw.owner,\n name: raw.name,\n prNumber: raw.prNumber,\n ...(mergeMethod !== undefined ? { mergeMethod } : {}),\n ...(raw.deleteBranch !== undefined ? { deleteBranch: raw.deleteBranch } : {}),\n })\n },\n ],\n [\"pr.branch.update\", (c, p) => c.updatePrBranch(p as PrBranchUpdateInput)],\n [\"pr.assignees.add\", (c, p) => c.addPrAssignees(p as PrAssigneesAddInput)],\n [\"pr.assignees.remove\", (c, p) => c.removePrAssignees(p as PrAssigneesRemoveInput)],\n [\"pr.reviews.request\", (c, p) => c.requestPrReviews(p as PrReviewsRequestInput)],\n\n // Project V2 mutations (Phase 2)\n [\"project_v2.items.issue.add\", (c, p) => c.addProjectV2Item(p as ProjectV2ItemAddInput)],\n [\"project_v2.items.issue.remove\", (c, p) => c.removeProjectV2Item(p as ProjectV2ItemRemoveInput)],\n [\n \"project_v2.items.field.update\",\n (c, p) => c.updateProjectV2ItemField(p as ProjectV2ItemFieldUpdateInput),\n ],\n])\n\nexport function getGraphqlHandler(capabilityId: string): GraphqlHandler | undefined {\n return handlers.get(capabilityId)\n}\n\nexport function listGraphqlCapabilities(): string[] {\n return [...handlers.keys()]\n}\n","import type { ResultEnvelope } from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { isRetryableErrorCode } from \"@core/core/errors/retryability.js\"\nimport { normalizeError, normalizeResult } from \"@core/core/execution/normalizer.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { getGraphqlHandler } from \"@core/gql/capability-registry.js\"\nimport type { GithubClient } from \"@core/gql/github-client.js\"\n\nexport async function runGraphqlCapability(\n client: GithubClient,\n capabilityId: string,\n params: Record<string, unknown>,\n): Promise<ResultEnvelope> {\n logger.debug(\"graphql.start\", { capability_id: capabilityId })\n try {\n const handler = getGraphqlHandler(capabilityId)\n if (!handler) {\n const result = normalizeError(\n {\n code: errorCodes.AdapterUnsupported,\n message: `Unsupported GraphQL capability: ${capabilityId}`,\n retryable: false,\n },\n \"graphql\",\n { capabilityId, reason: \"CAPABILITY_LIMIT\" },\n )\n logger.debug(\"graphql.complete\", {\n capability_id: capabilityId,\n ok: result.ok,\n })\n return result\n }\n const data = await handler(client, params)\n const result = normalizeResult(data, \"graphql\", {\n capabilityId,\n reason: \"CARD_PREFERRED\",\n })\n logger.debug(\"graphql.complete\", {\n capability_id: capabilityId,\n ok: result.ok,\n })\n return result\n } catch (error: unknown) {\n const code = mapErrorToCode(error)\n const reason = code === errorCodes.AdapterUnsupported ? \"CAPABILITY_LIMIT\" : \"CARD_PREFERRED\"\n const result = normalizeError(\n {\n code,\n message: error instanceof Error ? error.message : String(error),\n retryable: isRetryableErrorCode(code),\n },\n \"graphql\",\n { capabilityId, reason },\n )\n logger.debug(\"graphql.complete\", { capability_id: capabilityId, ok: result.ok })\n return result\n }\n}\n","import type { RouteSource } from \"../contracts/envelope.js\"\nimport type { ErrorCode } from \"../errors/codes.js\"\nimport { errorCodes } from \"../errors/codes.js\"\nimport { logger } from \"../telemetry/log.js\"\n\nexport type PreflightInput = {\n route: RouteSource\n githubToken?: string | null\n ghCliAvailable?: boolean\n ghAuthenticated?: boolean\n}\n\nexport type PreflightResult =\n | { ok: true }\n | {\n ok: false\n code: ErrorCode\n message: string\n retryable: boolean\n details: { route: RouteSource }\n }\n\nexport function preflightCheck(input: PreflightInput): PreflightResult {\n function fail(code: ErrorCode, message: string): Extract<PreflightResult, { ok: false }> {\n logger.debug(\"preflight.failed\", { route: input.route, code, message })\n return {\n ok: false,\n code,\n message,\n retryable: false,\n details: { route: input.route },\n }\n }\n\n if (input.route === \"rest\") {\n return fail(errorCodes.AdapterUnsupported, \"REST route is planned but not implemented in v1\")\n }\n\n if (input.route === \"cli\" && input.ghCliAvailable === false) {\n return fail(errorCodes.AdapterUnsupported, \"GitHub CLI is required for cli route\")\n }\n\n if (input.route === \"cli\" && input.ghAuthenticated === false) {\n return fail(errorCodes.Auth, \"GitHub CLI authentication is required for cli route\")\n }\n\n if (input.route === \"graphql\") {\n const token = input.githubToken?.trim()\n if (!token) {\n return fail(errorCodes.Auth, \"GitHub token is required for graphql route\")\n }\n }\n\n logger.debug(\"preflight.ok\", { route: input.route })\n return { ok: true }\n}\n","export const routePreferenceOrder = [\"cli\", \"graphql\"] as const\n","import type { CliCommandRunner } from \"@core/core/execution/adapters/cli-capability-adapter.js\"\nimport { createSafeCliCommandRunner } from \"@core/core/execution/cli/safe-runner.js\"\n\nexport type { CliCommandRunner }\n\nexport type CliEnvironmentState = {\n ghCliAvailable: boolean\n ghAuthenticated: boolean\n}\n\nconst CLI_ENV_CACHE_TTL_MS = 30_000\nconst cliEnvironmentCache = new WeakMap<\n CliCommandRunner,\n { value: CliEnvironmentState; expiresAt: number }\n>()\nconst cliEnvironmentInFlight = new WeakMap<CliCommandRunner, Promise<CliEnvironmentState>>()\n\nexport const defaultCliRunner = createSafeCliCommandRunner()\n\nasync function detectCliEnvironment(runner: CliCommandRunner): Promise<CliEnvironmentState> {\n const version = await runner.run(\"gh\", [\"--version\"], 1_500).catch(() => null)\n if (!version || version.exitCode !== 0) {\n return { ghCliAvailable: false, ghAuthenticated: false }\n }\n\n const auth = await runner.run(\"gh\", [\"auth\", \"status\"], 2_500).catch(() => null)\n return { ghCliAvailable: true, ghAuthenticated: auth?.exitCode === 0 }\n}\n\nexport async function detectCliEnvironmentCached(\n runner: CliCommandRunner,\n): Promise<CliEnvironmentState> {\n const now = Date.now()\n const cached = cliEnvironmentCache.get(runner)\n if (cached && cached.expiresAt > now) {\n return cached.value\n }\n\n const inFlight = cliEnvironmentInFlight.get(runner)\n if (inFlight) {\n return inFlight\n }\n\n const probePromise = detectCliEnvironment(runner)\n .then((value) => {\n cliEnvironmentCache.set(runner, {\n value,\n expiresAt: Date.now() + CLI_ENV_CACHE_TTL_MS,\n })\n cliEnvironmentInFlight.delete(runner)\n return value\n })\n .catch((error) => {\n cliEnvironmentInFlight.delete(runner)\n throw error\n })\n\n cliEnvironmentInFlight.set(runner, probePromise)\n return probePromise\n}\n","import type { ResultEnvelope, RouteSource } from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { execute } from \"@core/core/execute/execute.js\"\nimport {\n type CliCapabilityId,\n runCliCapability,\n} from \"@core/core/execution/adapters/cli-capability-adapter.js\"\nimport { runGraphqlCapability } from \"@core/core/execution/adapters/graphql-capability-adapter.js\"\nimport { normalizeError } from \"@core/core/execution/normalizer.js\"\nimport { preflightCheck } from \"@core/core/execution/preflight.js\"\nimport { getOperationCard } from \"@core/core/registry/index.js\"\nimport { routePreferenceOrder } from \"@core/core/routing/policy.js\"\nimport type { RouteReasonCode } from \"@core/core/routing/reason-codes.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { defaultCliRunner, detectCliEnvironmentCached } from \"./cli-detect.js\"\nimport type { ExecutionDeps } from \"./types.js\"\n\nconst DEFAULT_REASON: RouteReasonCode = \"DEFAULT_POLICY\"\n\nexport async function runSingleTask(\n task: string,\n input: Record<string, unknown>,\n deps: ExecutionDeps,\n): Promise<ResultEnvelope> {\n const reason = deps.reason ?? DEFAULT_REASON\n const card = getOperationCard(task)\n if (!card) {\n logger.error(\"execute.unsupported_task\", { task })\n return normalizeError(\n {\n code: errorCodes.Validation,\n message: `Unsupported task: ${task}`,\n retryable: false,\n },\n routePreferenceOrder[0],\n { capabilityId: task, reason },\n )\n }\n\n logger.debug(\"execute.start\", { capability_id: task })\n const startMs = Date.now()\n\n const cliRunner = deps.cliRunner ?? defaultCliRunner\n\n const result = await execute({\n card,\n params: input,\n routingContext: {\n ghCliAvailable: deps.ghCliAvailable,\n ghAuthenticated: deps.ghAuthenticated,\n githubTokenPresent: Boolean(deps.githubToken),\n },\n retry: {\n maxAttemptsPerRoute: 2,\n },\n preflight: async (route: RouteSource) => {\n const preflightInput: Parameters<typeof preflightCheck>[0] = { route }\n if (deps.githubToken !== undefined) {\n preflightInput.githubToken = deps.githubToken\n }\n\n if (route === \"cli\") {\n if (deps.ghCliAvailable !== undefined) {\n preflightInput.ghCliAvailable = deps.ghCliAvailable\n }\n\n if (deps.ghAuthenticated !== undefined) {\n preflightInput.ghAuthenticated = deps.ghAuthenticated\n }\n\n if (\n preflightInput.ghCliAvailable === undefined ||\n preflightInput.ghAuthenticated === undefined\n ) {\n if (deps.skipGhPreflight === true) {\n if (preflightInput.ghCliAvailable === undefined) {\n preflightInput.ghCliAvailable = true\n }\n\n if (preflightInput.ghAuthenticated === undefined) {\n preflightInput.ghAuthenticated = true\n }\n } else {\n const detected = await detectCliEnvironmentCached(cliRunner)\n\n if (preflightInput.ghCliAvailable === undefined) {\n preflightInput.ghCliAvailable = detected.ghCliAvailable\n }\n\n if (preflightInput.ghAuthenticated === undefined) {\n preflightInput.ghAuthenticated = detected.ghAuthenticated\n }\n }\n }\n }\n\n return preflightCheck(preflightInput)\n },\n routes: {\n graphql: async () => {\n return runGraphqlCapability(deps.githubClient, task, input)\n },\n cli: async () => {\n return runCliCapability(cliRunner, task as CliCapabilityId, input, card)\n },\n rest: async () =>\n normalizeError(\n {\n code: errorCodes.AdapterUnsupported,\n message: `Route 'rest' is not implemented for task '${task}'`,\n retryable: false,\n details: { route: \"rest\", task },\n },\n \"rest\",\n { capabilityId: task, reason },\n ),\n },\n })\n\n logger.info(\"execute.complete\", {\n capability_id: task,\n ok: result.ok,\n route_used: result.meta?.route_used ?? null,\n duration_ms: Date.now() - startMs,\n error_code: result.error?.code ?? null,\n })\n\n return result\n}\n","import type { ResultEnvelope } from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { runSingleTask } from \"./single.js\"\nimport type { ClassifiedStep, ExecutionDeps } from \"./types.js\"\n\nexport function startCliSteps(\n steps: ReadonlyArray<ClassifiedStep>,\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n deps: ExecutionDeps,\n): Array<Promise<[number, ResultEnvelope]>> {\n return steps\n .filter((s) => s.route === \"cli\")\n .map((step) => {\n const req = requests[step.index]\n if (req === undefined) {\n return Promise.resolve<[number, ResultEnvelope]>([\n step.index,\n {\n ok: false,\n error: { code: errorCodes.Unknown, message: \"missing request\", retryable: false },\n meta: { capability_id: step.card.capability_id, route_used: \"cli\" },\n },\n ])\n }\n return runSingleTask(req.task, req.input, deps)\n .then((result): [number, ResultEnvelope] => [step.index, result])\n .catch((err: unknown): [number, ResultEnvelope] => [\n step.index,\n {\n ok: false,\n error: {\n code: errorCodes.Unknown,\n message: err instanceof Error ? err.message : String(err),\n retryable: false,\n },\n meta: { capability_id: req.task, route_used: \"cli\" },\n },\n ])\n })\n}\n\nexport async function collectCliResults(\n cliPromises: Array<Promise<[number, ResultEnvelope]>>,\n cliSteps: ReadonlyArray<ClassifiedStep>,\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n): Promise<Map<number, ResultEnvelope>> {\n const cliResults = new Map<number, ResultEnvelope>()\n const outcomes = await Promise.allSettled(cliPromises)\n\n for (let j = 0; j < cliSteps.length; j += 1) {\n const step = cliSteps[j]\n const outcome = outcomes[j]\n if (step === undefined || outcome === undefined) continue\n\n if (outcome.status === \"fulfilled\") {\n const [resolvedIndex, result] = outcome.value\n cliResults.set(resolvedIndex, result)\n } else {\n const msg = outcome.reason instanceof Error ? outcome.reason.message : String(outcome.reason)\n const req = requests[step.index]\n cliResults.set(step.index, {\n ok: false,\n error: { code: errorCodes.Unknown, message: msg, retryable: false },\n meta: { capability_id: req?.task ?? \"unknown\", route_used: \"cli\" },\n })\n }\n }\n\n return cliResults\n}\n","import type { GraphqlVariables } from \"./transport.js\"\n\nexport type BatchOperationInput = {\n alias: string\n mutation: string\n variables: GraphqlVariables\n}\n\nexport type BatchMutationResult = {\n document: string\n variables: GraphqlVariables\n}\n\nexport type BatchQueryInput = {\n alias: string\n query: string\n variables: GraphqlVariables\n}\n\nexport type BatchQueryResult = {\n document: string\n variables: GraphqlVariables\n}\n\n/** Assumes no literal '{' appears before the operation body (true for all generated operations). */\nexport function extractRootFieldName(query: string): string | null {\n const headerEnd = query.indexOf(\"{\")\n if (headerEnd === -1) return null\n const body = query.slice(headerEnd + 1)\n const match = body.match(/^\\s*(\\w+)/)\n return match?.[1] ?? null\n}\n\nexport function buildBatchMutation(operations: BatchOperationInput[]): BatchMutationResult {\n if (operations.length === 0) {\n throw new Error(\"buildBatchMutation requires at least one operation\")\n }\n\n const allVarDeclarations: string[] = []\n const allSelections: string[] = []\n const mergedVariables: GraphqlVariables = {}\n const allFragments = new Map<string, string>()\n\n for (const op of operations) {\n const parsed = parseOperation(op.mutation)\n\n // Collect unique fragment definitions\n for (const [name, text] of parsed.fragments) {\n if (!allFragments.has(name)) {\n allFragments.set(name, text)\n }\n }\n\n // Prefix variable declarations\n for (const varDecl of parsed.variableDeclarations) {\n allVarDeclarations.push(`$${op.alias}_${varDecl.name}: ${varDecl.type}`)\n }\n\n // Prefix variable references in body and add alias\n let body = parsed.body\n const sortedDeclarations = [...parsed.variableDeclarations].sort(\n (a, b) => b.name.length - a.name.length,\n )\n for (const varDecl of sortedDeclarations) {\n body = body.replaceAll(\n new RegExp(`\\\\$${escapeRegex(varDecl.name)}\\\\b`, \"g\"),\n `$${op.alias}_${varDecl.name}`,\n )\n }\n\n // Add alias prefix to the top-level field\n const aliasedBody = body.replace(/^\\s*(\\w+)/, `${op.alias}: $1`)\n allSelections.push(aliasedBody)\n\n // Prefix variable values\n for (const [key, value] of Object.entries(op.variables)) {\n mergedVariables[`${op.alias}_${key}`] = value\n }\n }\n\n const fragmentBlock = allFragments.size > 0 ? \"\\n\" + [...allFragments.values()].join(\"\\n\") : \"\"\n const document = `mutation BatchComposite(${allVarDeclarations.join(\", \")}) {\\n${allSelections.join(\"\\n\")}\\n}${fragmentBlock}`\n\n return { document, variables: mergedVariables }\n}\n\ntype VariableDeclaration = { name: string; type: string }\ntype ParsedOperation = {\n variableDeclarations: VariableDeclaration[]\n body: string\n fragments: Map<string, string>\n}\n\nfunction escapeRegex(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\nfunction parseOperation(document: string): ParsedOperation {\n // Extract variable declarations from header: query|mutation Name($var1: Type!, $var2: Type!)\n const headerMatch = document.match(/(query|mutation)\\s+\\w+\\s*\\(([^)]*)\\)/)\n const variableDeclarations: VariableDeclaration[] = []\n\n if (headerMatch && headerMatch[2]) {\n const varString = headerMatch[2]\n const varMatches = varString.matchAll(/\\$(\\w+)\\s*:\\s*([^,)]+)/g)\n for (const match of varMatches) {\n const name = match[1]\n const type = match[2]\n if (name && type) {\n variableDeclarations.push({\n name,\n type: type.trim(),\n })\n }\n }\n }\n\n // Extract body: everything between the outermost { } after the header\n const headerEnd = document.indexOf(\"{\")\n if (headerEnd === -1) {\n throw new Error(\"Invalid mutation: no opening brace found\")\n }\n\n let depth = 0\n let bodyStart = -1\n let bodyEnd = -1\n for (let i = headerEnd; i < document.length; i++) {\n if (document[i] === \"{\") {\n if (depth === 0) bodyStart = i + 1\n depth++\n } else if (document[i] === \"}\") {\n depth--\n if (depth === 0) {\n bodyEnd = i\n break\n }\n }\n }\n\n if (bodyStart === -1 || bodyEnd === -1) {\n throw new Error(\"Invalid mutation: unbalanced braces\")\n }\n\n const body = document.slice(bodyStart, bodyEnd).trim()\n\n // Extract fragment definitions that appear after the operation's closing brace.\n // Use brace-depth counting to correctly handle nested selections like `labels { nodes { id } }`.\n const fragments = new Map<string, string>()\n const remainder = document.slice(bodyEnd + 1)\n const fragHeaderRe = /fragment\\s+(\\w+)\\s+on\\s+\\w+\\s*\\{/g\n let fragMatch: RegExpExecArray | null\n while ((fragMatch = fragHeaderRe.exec(remainder)) !== null) {\n const fragName = fragMatch[1]\n if (!fragName || fragments.has(fragName)) continue\n const openIdx = fragMatch.index + fragMatch[0].length - 1\n let d = 0\n let fragEnd = -1\n for (let i = openIdx; i < remainder.length; i++) {\n if (remainder[i] === \"{\") d++\n else if (remainder[i] === \"}\") {\n d--\n if (d === 0) {\n fragEnd = i\n break\n }\n }\n }\n if (fragEnd !== -1) {\n fragments.set(fragName, remainder.slice(fragMatch.index, fragEnd + 1).trim())\n }\n }\n\n return { variableDeclarations, body, fragments }\n}\n\nexport function buildBatchQuery(operations: BatchQueryInput[]): BatchQueryResult {\n if (operations.length === 0) {\n throw new Error(\"buildBatchQuery requires at least one operation\")\n }\n\n const allVarDeclarations: string[] = []\n const allSelections: string[] = []\n const mergedVariables: GraphqlVariables = {}\n const allFragments = new Map<string, string>()\n\n for (const op of operations) {\n const parsed = parseOperation(op.query)\n\n // Collect unique fragment definitions\n for (const [name, text] of parsed.fragments) {\n if (!allFragments.has(name)) allFragments.set(name, text)\n }\n\n for (const varDecl of parsed.variableDeclarations) {\n allVarDeclarations.push(`$${op.alias}_${varDecl.name}: ${varDecl.type}`)\n }\n\n let body = parsed.body\n const sortedDeclarations = [...parsed.variableDeclarations].sort(\n (a, b) => b.name.length - a.name.length,\n )\n for (const varDecl of sortedDeclarations) {\n body = body.replaceAll(\n new RegExp(`\\\\$${escapeRegex(varDecl.name)}\\\\b`, \"g\"),\n `$${op.alias}_${varDecl.name}`,\n )\n }\n\n const aliasedBody = body.replace(/^\\s*(\\w+)/, `${op.alias}: $1`)\n allSelections.push(aliasedBody)\n\n for (const [key, value] of Object.entries(op.variables)) {\n mergedVariables[`${op.alias}_${key}`] = value\n }\n }\n\n const varList = allVarDeclarations.length > 0 ? `(${allVarDeclarations.join(\", \")})` : \"\"\n const fragmentBlock = allFragments.size > 0 ? \"\\n\" + [...allFragments.values()].join(\"\\n\") : \"\"\n const document = `query BatchChain${varList} {\\n${allSelections.join(\"\\n\")}\\n}${fragmentBlock}`\n\n return { document, variables: mergedVariables }\n}\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueAssigneesLookupQueryVariables = Types.Exact<{\n issueId: Types.Scalars[\"ID\"][\"input\"]\n}>\n\nexport type IssueAssigneesLookupQuery = {\n __typename?: \"Query\"\n node?:\n | { __typename?: \"AddedToMergeQueueEvent\" }\n | { __typename?: \"AddedToProjectEvent\" }\n | { __typename?: \"AddedToProjectV2Event\" }\n | { __typename?: \"App\" }\n | { __typename?: \"AssignedEvent\" }\n | { __typename?: \"AutoMergeDisabledEvent\" }\n | { __typename?: \"AutoMergeEnabledEvent\" }\n | { __typename?: \"AutoRebaseEnabledEvent\" }\n | { __typename?: \"AutoSquashEnabledEvent\" }\n | { __typename?: \"AutomaticBaseChangeFailedEvent\" }\n | { __typename?: \"AutomaticBaseChangeSucceededEvent\" }\n | { __typename?: \"BaseRefChangedEvent\" }\n | { __typename?: \"BaseRefDeletedEvent\" }\n | { __typename?: \"BaseRefForcePushedEvent\" }\n | { __typename?: \"Blob\" }\n | { __typename?: \"BlockedByAddedEvent\" }\n | { __typename?: \"BlockedByRemovedEvent\" }\n | { __typename?: \"BlockingAddedEvent\" }\n | { __typename?: \"BlockingRemovedEvent\" }\n | { __typename?: \"Bot\" }\n | { __typename?: \"BranchProtectionRule\" }\n | { __typename?: \"BypassForcePushAllowance\" }\n | { __typename?: \"BypassPullRequestAllowance\" }\n | { __typename?: \"CWE\" }\n | { __typename?: \"CheckRun\" }\n | { __typename?: \"CheckSuite\" }\n | { __typename?: \"ClosedEvent\" }\n | { __typename?: \"CodeOfConduct\" }\n | { __typename?: \"CommentDeletedEvent\" }\n | { __typename?: \"Commit\" }\n | { __typename?: \"CommitComment\" }\n | { __typename?: \"CommitCommentThread\" }\n | { __typename?: \"Comparison\" }\n | { __typename?: \"ConnectedEvent\" }\n | { __typename?: \"ConvertToDraftEvent\" }\n | { __typename?: \"ConvertedFromDraftEvent\" }\n | { __typename?: \"ConvertedNoteToIssueEvent\" }\n | { __typename?: \"ConvertedToDiscussionEvent\" }\n | { __typename?: \"CrossReferencedEvent\" }\n | { __typename?: \"DemilestonedEvent\" }\n | { __typename?: \"DependencyGraphManifest\" }\n | { __typename?: \"DeployKey\" }\n | { __typename?: \"DeployedEvent\" }\n | { __typename?: \"Deployment\" }\n | { __typename?: \"DeploymentEnvironmentChangedEvent\" }\n | { __typename?: \"DeploymentReview\" }\n | { __typename?: \"DeploymentStatus\" }\n | { __typename?: \"DisconnectedEvent\" }\n | { __typename?: \"Discussion\" }\n | { __typename?: \"DiscussionCategory\" }\n | { __typename?: \"DiscussionComment\" }\n | { __typename?: \"DiscussionPoll\" }\n | { __typename?: \"DiscussionPollOption\" }\n | { __typename?: \"DraftIssue\" }\n | { __typename?: \"Enterprise\" }\n | { __typename?: \"EnterpriseAdministratorInvitation\" }\n | { __typename?: \"EnterpriseIdentityProvider\" }\n | { __typename?: \"EnterpriseMemberInvitation\" }\n | { __typename?: \"EnterpriseRepositoryInfo\" }\n | { __typename?: \"EnterpriseServerInstallation\" }\n | { __typename?: \"EnterpriseServerUserAccount\" }\n | { __typename?: \"EnterpriseServerUserAccountEmail\" }\n | { __typename?: \"EnterpriseServerUserAccountsUpload\" }\n | { __typename?: \"EnterpriseUserAccount\" }\n | { __typename?: \"Environment\" }\n | { __typename?: \"ExternalIdentity\" }\n | { __typename?: \"Gist\" }\n | { __typename?: \"GistComment\" }\n | { __typename?: \"HeadRefDeletedEvent\" }\n | { __typename?: \"HeadRefForcePushedEvent\" }\n | { __typename?: \"HeadRefRestoredEvent\" }\n | { __typename?: \"IpAllowListEntry\" }\n | {\n __typename?: \"Issue\"\n repository: {\n __typename?: \"Repository\"\n assignableUsers: {\n __typename?: \"UserConnection\"\n pageInfo: { __typename?: \"PageInfo\"; hasNextPage: boolean; endCursor?: string | null }\n nodes?: Array<{ __typename?: \"User\"; id: string; login: string } | null> | null\n }\n }\n }\n | { __typename?: \"IssueComment\" }\n | { __typename?: \"IssueType\" }\n | { __typename?: \"IssueTypeAddedEvent\" }\n | { __typename?: \"IssueTypeChangedEvent\" }\n | { __typename?: \"IssueTypeRemovedEvent\" }\n | { __typename?: \"Label\" }\n | { __typename?: \"LabeledEvent\" }\n | { __typename?: \"Language\" }\n | { __typename?: \"License\" }\n | { __typename?: \"LinkedBranch\" }\n | { __typename?: \"LockedEvent\" }\n | { __typename?: \"Mannequin\" }\n | { __typename?: \"MarkedAsDuplicateEvent\" }\n | { __typename?: \"MarketplaceCategory\" }\n | { __typename?: \"MarketplaceListing\" }\n | { __typename?: \"MemberFeatureRequestNotification\" }\n | { __typename?: \"MembersCanDeleteReposClearAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposDisableAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposEnableAuditEntry\" }\n | { __typename?: \"MentionedEvent\" }\n | { __typename?: \"MergeQueue\" }\n | { __typename?: \"MergeQueueEntry\" }\n | { __typename?: \"MergedEvent\" }\n | { __typename?: \"MigrationSource\" }\n | { __typename?: \"Milestone\" }\n | { __typename?: \"MilestonedEvent\" }\n | { __typename?: \"MovedColumnsInProjectEvent\" }\n | { __typename?: \"OIDCProvider\" }\n | { __typename?: \"OauthApplicationCreateAuditEntry\" }\n | { __typename?: \"OrgAddBillingManagerAuditEntry\" }\n | { __typename?: \"OrgAddMemberAuditEntry\" }\n | { __typename?: \"OrgBlockUserAuditEntry\" }\n | { __typename?: \"OrgConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgCreateAuditEntry\" }\n | { __typename?: \"OrgDisableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgDisableSamlAuditEntry\" }\n | { __typename?: \"OrgDisableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgEnableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgEnableSamlAuditEntry\" }\n | { __typename?: \"OrgEnableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgInviteMemberAuditEntry\" }\n | { __typename?: \"OrgInviteToBusinessAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessApprovedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessBlockedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessDeniedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessRequestedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessUnblockedAuditEntry\" }\n | { __typename?: \"OrgRemoveBillingManagerAuditEntry\" }\n | { __typename?: \"OrgRemoveMemberAuditEntry\" }\n | { __typename?: \"OrgRemoveOutsideCollaboratorAuditEntry\" }\n | { __typename?: \"OrgRestoreMemberAuditEntry\" }\n | { __typename?: \"OrgUnblockUserAuditEntry\" }\n | { __typename?: \"OrgUpdateDefaultRepositoryPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\" }\n | { __typename?: \"Organization\" }\n | { __typename?: \"OrganizationIdentityProvider\" }\n | { __typename?: \"OrganizationInvitation\" }\n | { __typename?: \"OrganizationMigration\" }\n | { __typename?: \"Package\" }\n | { __typename?: \"PackageFile\" }\n | { __typename?: \"PackageTag\" }\n | { __typename?: \"PackageVersion\" }\n | { __typename?: \"ParentIssueAddedEvent\" }\n | { __typename?: \"ParentIssueRemovedEvent\" }\n | { __typename?: \"PinnedDiscussion\" }\n | { __typename?: \"PinnedEnvironment\" }\n | { __typename?: \"PinnedEvent\" }\n | { __typename?: \"PinnedIssue\" }\n | { __typename?: \"PrivateRepositoryForkingDisableAuditEntry\" }\n | { __typename?: \"PrivateRepositoryForkingEnableAuditEntry\" }\n | { __typename?: \"Project\" }\n | { __typename?: \"ProjectCard\" }\n | { __typename?: \"ProjectColumn\" }\n | { __typename?: \"ProjectV2\" }\n | { __typename?: \"ProjectV2Field\" }\n | { __typename?: \"ProjectV2Item\" }\n | { __typename?: \"ProjectV2ItemFieldDateValue\" }\n | { __typename?: \"ProjectV2ItemFieldIterationValue\" }\n | { __typename?: \"ProjectV2ItemFieldNumberValue\" }\n | { __typename?: \"ProjectV2ItemFieldSingleSelectValue\" }\n | { __typename?: \"ProjectV2ItemFieldTextValue\" }\n | { __typename?: \"ProjectV2ItemStatusChangedEvent\" }\n | { __typename?: \"ProjectV2IterationField\" }\n | { __typename?: \"ProjectV2SingleSelectField\" }\n | { __typename?: \"ProjectV2StatusUpdate\" }\n | { __typename?: \"ProjectV2View\" }\n | { __typename?: \"ProjectV2Workflow\" }\n | { __typename?: \"PublicKey\" }\n | { __typename?: \"PullRequest\" }\n | { __typename?: \"PullRequestCommit\" }\n | { __typename?: \"PullRequestCommitCommentThread\" }\n | { __typename?: \"PullRequestReview\" }\n | { __typename?: \"PullRequestReviewComment\" }\n | { __typename?: \"PullRequestReviewThread\" }\n | { __typename?: \"PullRequestThread\" }\n | { __typename?: \"Push\" }\n | { __typename?: \"PushAllowance\" }\n | { __typename?: \"Query\" }\n | { __typename?: \"Reaction\" }\n | { __typename?: \"ReadyForReviewEvent\" }\n | { __typename?: \"Ref\" }\n | { __typename?: \"ReferencedEvent\" }\n | { __typename?: \"Release\" }\n | { __typename?: \"ReleaseAsset\" }\n | { __typename?: \"RemovedFromMergeQueueEvent\" }\n | { __typename?: \"RemovedFromProjectEvent\" }\n | { __typename?: \"RemovedFromProjectV2Event\" }\n | { __typename?: \"RenamedTitleEvent\" }\n | { __typename?: \"ReopenedEvent\" }\n | { __typename?: \"RepoAccessAuditEntry\" }\n | { __typename?: \"RepoAddMemberAuditEntry\" }\n | { __typename?: \"RepoAddTopicAuditEntry\" }\n | { __typename?: \"RepoArchivedAuditEntry\" }\n | { __typename?: \"RepoChangeMergeSettingAuditEntry\" }\n | { __typename?: \"RepoConfigDisableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigEnableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigLockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigUnlockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoCreateAuditEntry\" }\n | { __typename?: \"RepoDestroyAuditEntry\" }\n | { __typename?: \"RepoRemoveMemberAuditEntry\" }\n | { __typename?: \"RepoRemoveTopicAuditEntry\" }\n | { __typename?: \"Repository\" }\n | { __typename?: \"RepositoryCustomProperty\" }\n | { __typename?: \"RepositoryInvitation\" }\n | { __typename?: \"RepositoryMigration\" }\n | { __typename?: \"RepositoryRule\" }\n | { __typename?: \"RepositoryRuleset\" }\n | { __typename?: \"RepositoryRulesetBypassActor\" }\n | { __typename?: \"RepositoryTopic\" }\n | { __typename?: \"RepositoryVisibilityChangeDisableAuditEntry\" }\n | { __typename?: \"RepositoryVisibilityChangeEnableAuditEntry\" }\n | { __typename?: \"RepositoryVulnerabilityAlert\" }\n | { __typename?: \"ReviewDismissalAllowance\" }\n | { __typename?: \"ReviewDismissedEvent\" }\n | { __typename?: \"ReviewRequest\" }\n | { __typename?: \"ReviewRequestRemovedEvent\" }\n | { __typename?: \"ReviewRequestedEvent\" }\n | { __typename?: \"SavedReply\" }\n | { __typename?: \"SecurityAdvisory\" }\n | { __typename?: \"SponsorsActivity\" }\n | { __typename?: \"SponsorsListing\" }\n | { __typename?: \"SponsorsListingFeaturedItem\" }\n | { __typename?: \"SponsorsTier\" }\n | { __typename?: \"Sponsorship\" }\n | { __typename?: \"SponsorshipNewsletter\" }\n | { __typename?: \"Status\" }\n | { __typename?: \"StatusCheckRollup\" }\n | { __typename?: \"StatusContext\" }\n | { __typename?: \"SubIssueAddedEvent\" }\n | { __typename?: \"SubIssueRemovedEvent\" }\n | { __typename?: \"SubscribedEvent\" }\n | { __typename?: \"Tag\" }\n | { __typename?: \"Team\" }\n | { __typename?: \"TeamAddMemberAuditEntry\" }\n | { __typename?: \"TeamAddRepositoryAuditEntry\" }\n | { __typename?: \"TeamChangeParentTeamAuditEntry\" }\n | { __typename?: \"TeamRemoveMemberAuditEntry\" }\n | { __typename?: \"TeamRemoveRepositoryAuditEntry\" }\n | { __typename?: \"Topic\" }\n | { __typename?: \"TransferredEvent\" }\n | { __typename?: \"Tree\" }\n | { __typename?: \"UnassignedEvent\" }\n | { __typename?: \"UnlabeledEvent\" }\n | { __typename?: \"UnlockedEvent\" }\n | { __typename?: \"UnmarkedAsDuplicateEvent\" }\n | { __typename?: \"UnpinnedEvent\" }\n | { __typename?: \"UnsubscribedEvent\" }\n | { __typename?: \"User\" }\n | { __typename?: \"UserBlockedEvent\" }\n | { __typename?: \"UserContentEdit\" }\n | { __typename?: \"UserList\" }\n | { __typename?: \"UserNamespaceRepository\" }\n | { __typename?: \"UserStatus\" }\n | { __typename?: \"VerifiableDomain\" }\n | { __typename?: \"Workflow\" }\n | { __typename?: \"WorkflowRun\" }\n | { __typename?: \"WorkflowRunFile\" }\n | null\n}\n\nexport const IssueAssigneesLookupDocument = `\n query IssueAssigneesLookup($issueId: ID!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n assignableUsers(first: 100) {\n pageInfo {\n hasNextPage\n endCursor\n }\n nodes {\n id\n login\n }\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueAssigneesLookup(\n variables: IssueAssigneesLookupQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueAssigneesLookupQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueAssigneesLookupQuery>({\n document: IssueAssigneesLookupDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueAssigneesLookup\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueLabelsLookupQueryVariables = Types.Exact<{\n issueId: Types.Scalars[\"ID\"][\"input\"]\n}>\n\nexport type IssueLabelsLookupQuery = {\n __typename?: \"Query\"\n node?:\n | { __typename?: \"AddedToMergeQueueEvent\" }\n | { __typename?: \"AddedToProjectEvent\" }\n | { __typename?: \"AddedToProjectV2Event\" }\n | { __typename?: \"App\" }\n | { __typename?: \"AssignedEvent\" }\n | { __typename?: \"AutoMergeDisabledEvent\" }\n | { __typename?: \"AutoMergeEnabledEvent\" }\n | { __typename?: \"AutoRebaseEnabledEvent\" }\n | { __typename?: \"AutoSquashEnabledEvent\" }\n | { __typename?: \"AutomaticBaseChangeFailedEvent\" }\n | { __typename?: \"AutomaticBaseChangeSucceededEvent\" }\n | { __typename?: \"BaseRefChangedEvent\" }\n | { __typename?: \"BaseRefDeletedEvent\" }\n | { __typename?: \"BaseRefForcePushedEvent\" }\n | { __typename?: \"Blob\" }\n | { __typename?: \"BlockedByAddedEvent\" }\n | { __typename?: \"BlockedByRemovedEvent\" }\n | { __typename?: \"BlockingAddedEvent\" }\n | { __typename?: \"BlockingRemovedEvent\" }\n | { __typename?: \"Bot\" }\n | { __typename?: \"BranchProtectionRule\" }\n | { __typename?: \"BypassForcePushAllowance\" }\n | { __typename?: \"BypassPullRequestAllowance\" }\n | { __typename?: \"CWE\" }\n | { __typename?: \"CheckRun\" }\n | { __typename?: \"CheckSuite\" }\n | { __typename?: \"ClosedEvent\" }\n | { __typename?: \"CodeOfConduct\" }\n | { __typename?: \"CommentDeletedEvent\" }\n | { __typename?: \"Commit\" }\n | { __typename?: \"CommitComment\" }\n | { __typename?: \"CommitCommentThread\" }\n | { __typename?: \"Comparison\" }\n | { __typename?: \"ConnectedEvent\" }\n | { __typename?: \"ConvertToDraftEvent\" }\n | { __typename?: \"ConvertedFromDraftEvent\" }\n | { __typename?: \"ConvertedNoteToIssueEvent\" }\n | { __typename?: \"ConvertedToDiscussionEvent\" }\n | { __typename?: \"CrossReferencedEvent\" }\n | { __typename?: \"DemilestonedEvent\" }\n | { __typename?: \"DependencyGraphManifest\" }\n | { __typename?: \"DeployKey\" }\n | { __typename?: \"DeployedEvent\" }\n | { __typename?: \"Deployment\" }\n | { __typename?: \"DeploymentEnvironmentChangedEvent\" }\n | { __typename?: \"DeploymentReview\" }\n | { __typename?: \"DeploymentStatus\" }\n | { __typename?: \"DisconnectedEvent\" }\n | { __typename?: \"Discussion\" }\n | { __typename?: \"DiscussionCategory\" }\n | { __typename?: \"DiscussionComment\" }\n | { __typename?: \"DiscussionPoll\" }\n | { __typename?: \"DiscussionPollOption\" }\n | { __typename?: \"DraftIssue\" }\n | { __typename?: \"Enterprise\" }\n | { __typename?: \"EnterpriseAdministratorInvitation\" }\n | { __typename?: \"EnterpriseIdentityProvider\" }\n | { __typename?: \"EnterpriseMemberInvitation\" }\n | { __typename?: \"EnterpriseRepositoryInfo\" }\n | { __typename?: \"EnterpriseServerInstallation\" }\n | { __typename?: \"EnterpriseServerUserAccount\" }\n | { __typename?: \"EnterpriseServerUserAccountEmail\" }\n | { __typename?: \"EnterpriseServerUserAccountsUpload\" }\n | { __typename?: \"EnterpriseUserAccount\" }\n | { __typename?: \"Environment\" }\n | { __typename?: \"ExternalIdentity\" }\n | { __typename?: \"Gist\" }\n | { __typename?: \"GistComment\" }\n | { __typename?: \"HeadRefDeletedEvent\" }\n | { __typename?: \"HeadRefForcePushedEvent\" }\n | { __typename?: \"HeadRefRestoredEvent\" }\n | { __typename?: \"IpAllowListEntry\" }\n | {\n __typename?: \"Issue\"\n repository: {\n __typename?: \"Repository\"\n labels?: {\n __typename?: \"LabelConnection\"\n pageInfo: { __typename?: \"PageInfo\"; hasNextPage: boolean; endCursor?: string | null }\n nodes?: Array<{ __typename?: \"Label\"; id: string; name: string } | null> | null\n } | null\n }\n }\n | { __typename?: \"IssueComment\" }\n | { __typename?: \"IssueType\" }\n | { __typename?: \"IssueTypeAddedEvent\" }\n | { __typename?: \"IssueTypeChangedEvent\" }\n | { __typename?: \"IssueTypeRemovedEvent\" }\n | { __typename?: \"Label\" }\n | { __typename?: \"LabeledEvent\" }\n | { __typename?: \"Language\" }\n | { __typename?: \"License\" }\n | { __typename?: \"LinkedBranch\" }\n | { __typename?: \"LockedEvent\" }\n | { __typename?: \"Mannequin\" }\n | { __typename?: \"MarkedAsDuplicateEvent\" }\n | { __typename?: \"MarketplaceCategory\" }\n | { __typename?: \"MarketplaceListing\" }\n | { __typename?: \"MemberFeatureRequestNotification\" }\n | { __typename?: \"MembersCanDeleteReposClearAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposDisableAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposEnableAuditEntry\" }\n | { __typename?: \"MentionedEvent\" }\n | { __typename?: \"MergeQueue\" }\n | { __typename?: \"MergeQueueEntry\" }\n | { __typename?: \"MergedEvent\" }\n | { __typename?: \"MigrationSource\" }\n | { __typename?: \"Milestone\" }\n | { __typename?: \"MilestonedEvent\" }\n | { __typename?: \"MovedColumnsInProjectEvent\" }\n | { __typename?: \"OIDCProvider\" }\n | { __typename?: \"OauthApplicationCreateAuditEntry\" }\n | { __typename?: \"OrgAddBillingManagerAuditEntry\" }\n | { __typename?: \"OrgAddMemberAuditEntry\" }\n | { __typename?: \"OrgBlockUserAuditEntry\" }\n | { __typename?: \"OrgConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgCreateAuditEntry\" }\n | { __typename?: \"OrgDisableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgDisableSamlAuditEntry\" }\n | { __typename?: \"OrgDisableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgEnableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgEnableSamlAuditEntry\" }\n | { __typename?: \"OrgEnableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgInviteMemberAuditEntry\" }\n | { __typename?: \"OrgInviteToBusinessAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessApprovedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessBlockedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessDeniedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessRequestedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessUnblockedAuditEntry\" }\n | { __typename?: \"OrgRemoveBillingManagerAuditEntry\" }\n | { __typename?: \"OrgRemoveMemberAuditEntry\" }\n | { __typename?: \"OrgRemoveOutsideCollaboratorAuditEntry\" }\n | { __typename?: \"OrgRestoreMemberAuditEntry\" }\n | { __typename?: \"OrgUnblockUserAuditEntry\" }\n | { __typename?: \"OrgUpdateDefaultRepositoryPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\" }\n | { __typename?: \"Organization\" }\n | { __typename?: \"OrganizationIdentityProvider\" }\n | { __typename?: \"OrganizationInvitation\" }\n | { __typename?: \"OrganizationMigration\" }\n | { __typename?: \"Package\" }\n | { __typename?: \"PackageFile\" }\n | { __typename?: \"PackageTag\" }\n | { __typename?: \"PackageVersion\" }\n | { __typename?: \"ParentIssueAddedEvent\" }\n | { __typename?: \"ParentIssueRemovedEvent\" }\n | { __typename?: \"PinnedDiscussion\" }\n | { __typename?: \"PinnedEnvironment\" }\n | { __typename?: \"PinnedEvent\" }\n | { __typename?: \"PinnedIssue\" }\n | { __typename?: \"PrivateRepositoryForkingDisableAuditEntry\" }\n | { __typename?: \"PrivateRepositoryForkingEnableAuditEntry\" }\n | { __typename?: \"Project\" }\n | { __typename?: \"ProjectCard\" }\n | { __typename?: \"ProjectColumn\" }\n | { __typename?: \"ProjectV2\" }\n | { __typename?: \"ProjectV2Field\" }\n | { __typename?: \"ProjectV2Item\" }\n | { __typename?: \"ProjectV2ItemFieldDateValue\" }\n | { __typename?: \"ProjectV2ItemFieldIterationValue\" }\n | { __typename?: \"ProjectV2ItemFieldNumberValue\" }\n | { __typename?: \"ProjectV2ItemFieldSingleSelectValue\" }\n | { __typename?: \"ProjectV2ItemFieldTextValue\" }\n | { __typename?: \"ProjectV2ItemStatusChangedEvent\" }\n | { __typename?: \"ProjectV2IterationField\" }\n | { __typename?: \"ProjectV2SingleSelectField\" }\n | { __typename?: \"ProjectV2StatusUpdate\" }\n | { __typename?: \"ProjectV2View\" }\n | { __typename?: \"ProjectV2Workflow\" }\n | { __typename?: \"PublicKey\" }\n | { __typename?: \"PullRequest\" }\n | { __typename?: \"PullRequestCommit\" }\n | { __typename?: \"PullRequestCommitCommentThread\" }\n | { __typename?: \"PullRequestReview\" }\n | { __typename?: \"PullRequestReviewComment\" }\n | { __typename?: \"PullRequestReviewThread\" }\n | { __typename?: \"PullRequestThread\" }\n | { __typename?: \"Push\" }\n | { __typename?: \"PushAllowance\" }\n | { __typename?: \"Query\" }\n | { __typename?: \"Reaction\" }\n | { __typename?: \"ReadyForReviewEvent\" }\n | { __typename?: \"Ref\" }\n | { __typename?: \"ReferencedEvent\" }\n | { __typename?: \"Release\" }\n | { __typename?: \"ReleaseAsset\" }\n | { __typename?: \"RemovedFromMergeQueueEvent\" }\n | { __typename?: \"RemovedFromProjectEvent\" }\n | { __typename?: \"RemovedFromProjectV2Event\" }\n | { __typename?: \"RenamedTitleEvent\" }\n | { __typename?: \"ReopenedEvent\" }\n | { __typename?: \"RepoAccessAuditEntry\" }\n | { __typename?: \"RepoAddMemberAuditEntry\" }\n | { __typename?: \"RepoAddTopicAuditEntry\" }\n | { __typename?: \"RepoArchivedAuditEntry\" }\n | { __typename?: \"RepoChangeMergeSettingAuditEntry\" }\n | { __typename?: \"RepoConfigDisableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigEnableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigLockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigUnlockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoCreateAuditEntry\" }\n | { __typename?: \"RepoDestroyAuditEntry\" }\n | { __typename?: \"RepoRemoveMemberAuditEntry\" }\n | { __typename?: \"RepoRemoveTopicAuditEntry\" }\n | { __typename?: \"Repository\" }\n | { __typename?: \"RepositoryCustomProperty\" }\n | { __typename?: \"RepositoryInvitation\" }\n | { __typename?: \"RepositoryMigration\" }\n | { __typename?: \"RepositoryRule\" }\n | { __typename?: \"RepositoryRuleset\" }\n | { __typename?: \"RepositoryRulesetBypassActor\" }\n | { __typename?: \"RepositoryTopic\" }\n | { __typename?: \"RepositoryVisibilityChangeDisableAuditEntry\" }\n | { __typename?: \"RepositoryVisibilityChangeEnableAuditEntry\" }\n | { __typename?: \"RepositoryVulnerabilityAlert\" }\n | { __typename?: \"ReviewDismissalAllowance\" }\n | { __typename?: \"ReviewDismissedEvent\" }\n | { __typename?: \"ReviewRequest\" }\n | { __typename?: \"ReviewRequestRemovedEvent\" }\n | { __typename?: \"ReviewRequestedEvent\" }\n | { __typename?: \"SavedReply\" }\n | { __typename?: \"SecurityAdvisory\" }\n | { __typename?: \"SponsorsActivity\" }\n | { __typename?: \"SponsorsListing\" }\n | { __typename?: \"SponsorsListingFeaturedItem\" }\n | { __typename?: \"SponsorsTier\" }\n | { __typename?: \"Sponsorship\" }\n | { __typename?: \"SponsorshipNewsletter\" }\n | { __typename?: \"Status\" }\n | { __typename?: \"StatusCheckRollup\" }\n | { __typename?: \"StatusContext\" }\n | { __typename?: \"SubIssueAddedEvent\" }\n | { __typename?: \"SubIssueRemovedEvent\" }\n | { __typename?: \"SubscribedEvent\" }\n | { __typename?: \"Tag\" }\n | { __typename?: \"Team\" }\n | { __typename?: \"TeamAddMemberAuditEntry\" }\n | { __typename?: \"TeamAddRepositoryAuditEntry\" }\n | { __typename?: \"TeamChangeParentTeamAuditEntry\" }\n | { __typename?: \"TeamRemoveMemberAuditEntry\" }\n | { __typename?: \"TeamRemoveRepositoryAuditEntry\" }\n | { __typename?: \"Topic\" }\n | { __typename?: \"TransferredEvent\" }\n | { __typename?: \"Tree\" }\n | { __typename?: \"UnassignedEvent\" }\n | { __typename?: \"UnlabeledEvent\" }\n | { __typename?: \"UnlockedEvent\" }\n | { __typename?: \"UnmarkedAsDuplicateEvent\" }\n | { __typename?: \"UnpinnedEvent\" }\n | { __typename?: \"UnsubscribedEvent\" }\n | { __typename?: \"User\" }\n | { __typename?: \"UserBlockedEvent\" }\n | { __typename?: \"UserContentEdit\" }\n | { __typename?: \"UserList\" }\n | { __typename?: \"UserNamespaceRepository\" }\n | { __typename?: \"UserStatus\" }\n | { __typename?: \"VerifiableDomain\" }\n | { __typename?: \"Workflow\" }\n | { __typename?: \"WorkflowRun\" }\n | { __typename?: \"WorkflowRunFile\" }\n | null\n}\n\nexport const IssueLabelsLookupDocument = `\n query IssueLabelsLookup($issueId: ID!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n labels(first: 100) {\n pageInfo {\n hasNextPage\n endCursor\n }\n nodes {\n id\n name\n }\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueLabelsLookup(\n variables: IssueLabelsLookupQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueLabelsLookupQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueLabelsLookupQuery>({\n document: IssueLabelsLookupDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueLabelsLookup\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type IssueMilestoneLookupQueryVariables = Types.Exact<{\n issueId: Types.Scalars[\"ID\"][\"input\"]\n milestoneNumber: Types.Scalars[\"Int\"][\"input\"]\n}>\n\nexport type IssueMilestoneLookupQuery = {\n __typename?: \"Query\"\n node?:\n | { __typename?: \"AddedToMergeQueueEvent\" }\n | { __typename?: \"AddedToProjectEvent\" }\n | { __typename?: \"AddedToProjectV2Event\" }\n | { __typename?: \"App\" }\n | { __typename?: \"AssignedEvent\" }\n | { __typename?: \"AutoMergeDisabledEvent\" }\n | { __typename?: \"AutoMergeEnabledEvent\" }\n | { __typename?: \"AutoRebaseEnabledEvent\" }\n | { __typename?: \"AutoSquashEnabledEvent\" }\n | { __typename?: \"AutomaticBaseChangeFailedEvent\" }\n | { __typename?: \"AutomaticBaseChangeSucceededEvent\" }\n | { __typename?: \"BaseRefChangedEvent\" }\n | { __typename?: \"BaseRefDeletedEvent\" }\n | { __typename?: \"BaseRefForcePushedEvent\" }\n | { __typename?: \"Blob\" }\n | { __typename?: \"BlockedByAddedEvent\" }\n | { __typename?: \"BlockedByRemovedEvent\" }\n | { __typename?: \"BlockingAddedEvent\" }\n | { __typename?: \"BlockingRemovedEvent\" }\n | { __typename?: \"Bot\" }\n | { __typename?: \"BranchProtectionRule\" }\n | { __typename?: \"BypassForcePushAllowance\" }\n | { __typename?: \"BypassPullRequestAllowance\" }\n | { __typename?: \"CWE\" }\n | { __typename?: \"CheckRun\" }\n | { __typename?: \"CheckSuite\" }\n | { __typename?: \"ClosedEvent\" }\n | { __typename?: \"CodeOfConduct\" }\n | { __typename?: \"CommentDeletedEvent\" }\n | { __typename?: \"Commit\" }\n | { __typename?: \"CommitComment\" }\n | { __typename?: \"CommitCommentThread\" }\n | { __typename?: \"Comparison\" }\n | { __typename?: \"ConnectedEvent\" }\n | { __typename?: \"ConvertToDraftEvent\" }\n | { __typename?: \"ConvertedFromDraftEvent\" }\n | { __typename?: \"ConvertedNoteToIssueEvent\" }\n | { __typename?: \"ConvertedToDiscussionEvent\" }\n | { __typename?: \"CrossReferencedEvent\" }\n | { __typename?: \"DemilestonedEvent\" }\n | { __typename?: \"DependencyGraphManifest\" }\n | { __typename?: \"DeployKey\" }\n | { __typename?: \"DeployedEvent\" }\n | { __typename?: \"Deployment\" }\n | { __typename?: \"DeploymentEnvironmentChangedEvent\" }\n | { __typename?: \"DeploymentReview\" }\n | { __typename?: \"DeploymentStatus\" }\n | { __typename?: \"DisconnectedEvent\" }\n | { __typename?: \"Discussion\" }\n | { __typename?: \"DiscussionCategory\" }\n | { __typename?: \"DiscussionComment\" }\n | { __typename?: \"DiscussionPoll\" }\n | { __typename?: \"DiscussionPollOption\" }\n | { __typename?: \"DraftIssue\" }\n | { __typename?: \"Enterprise\" }\n | { __typename?: \"EnterpriseAdministratorInvitation\" }\n | { __typename?: \"EnterpriseIdentityProvider\" }\n | { __typename?: \"EnterpriseMemberInvitation\" }\n | { __typename?: \"EnterpriseRepositoryInfo\" }\n | { __typename?: \"EnterpriseServerInstallation\" }\n | { __typename?: \"EnterpriseServerUserAccount\" }\n | { __typename?: \"EnterpriseServerUserAccountEmail\" }\n | { __typename?: \"EnterpriseServerUserAccountsUpload\" }\n | { __typename?: \"EnterpriseUserAccount\" }\n | { __typename?: \"Environment\" }\n | { __typename?: \"ExternalIdentity\" }\n | { __typename?: \"Gist\" }\n | { __typename?: \"GistComment\" }\n | { __typename?: \"HeadRefDeletedEvent\" }\n | { __typename?: \"HeadRefForcePushedEvent\" }\n | { __typename?: \"HeadRefRestoredEvent\" }\n | { __typename?: \"IpAllowListEntry\" }\n | {\n __typename?: \"Issue\"\n repository: {\n __typename?: \"Repository\"\n milestone?: { __typename?: \"Milestone\"; id: string } | null\n }\n }\n | { __typename?: \"IssueComment\" }\n | { __typename?: \"IssueType\" }\n | { __typename?: \"IssueTypeAddedEvent\" }\n | { __typename?: \"IssueTypeChangedEvent\" }\n | { __typename?: \"IssueTypeRemovedEvent\" }\n | { __typename?: \"Label\" }\n | { __typename?: \"LabeledEvent\" }\n | { __typename?: \"Language\" }\n | { __typename?: \"License\" }\n | { __typename?: \"LinkedBranch\" }\n | { __typename?: \"LockedEvent\" }\n | { __typename?: \"Mannequin\" }\n | { __typename?: \"MarkedAsDuplicateEvent\" }\n | { __typename?: \"MarketplaceCategory\" }\n | { __typename?: \"MarketplaceListing\" }\n | { __typename?: \"MemberFeatureRequestNotification\" }\n | { __typename?: \"MembersCanDeleteReposClearAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposDisableAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposEnableAuditEntry\" }\n | { __typename?: \"MentionedEvent\" }\n | { __typename?: \"MergeQueue\" }\n | { __typename?: \"MergeQueueEntry\" }\n | { __typename?: \"MergedEvent\" }\n | { __typename?: \"MigrationSource\" }\n | { __typename?: \"Milestone\" }\n | { __typename?: \"MilestonedEvent\" }\n | { __typename?: \"MovedColumnsInProjectEvent\" }\n | { __typename?: \"OIDCProvider\" }\n | { __typename?: \"OauthApplicationCreateAuditEntry\" }\n | { __typename?: \"OrgAddBillingManagerAuditEntry\" }\n | { __typename?: \"OrgAddMemberAuditEntry\" }\n | { __typename?: \"OrgBlockUserAuditEntry\" }\n | { __typename?: \"OrgConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgCreateAuditEntry\" }\n | { __typename?: \"OrgDisableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgDisableSamlAuditEntry\" }\n | { __typename?: \"OrgDisableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgEnableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgEnableSamlAuditEntry\" }\n | { __typename?: \"OrgEnableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgInviteMemberAuditEntry\" }\n | { __typename?: \"OrgInviteToBusinessAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessApprovedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessBlockedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessDeniedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessRequestedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessUnblockedAuditEntry\" }\n | { __typename?: \"OrgRemoveBillingManagerAuditEntry\" }\n | { __typename?: \"OrgRemoveMemberAuditEntry\" }\n | { __typename?: \"OrgRemoveOutsideCollaboratorAuditEntry\" }\n | { __typename?: \"OrgRestoreMemberAuditEntry\" }\n | { __typename?: \"OrgUnblockUserAuditEntry\" }\n | { __typename?: \"OrgUpdateDefaultRepositoryPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\" }\n | { __typename?: \"Organization\" }\n | { __typename?: \"OrganizationIdentityProvider\" }\n | { __typename?: \"OrganizationInvitation\" }\n | { __typename?: \"OrganizationMigration\" }\n | { __typename?: \"Package\" }\n | { __typename?: \"PackageFile\" }\n | { __typename?: \"PackageTag\" }\n | { __typename?: \"PackageVersion\" }\n | { __typename?: \"ParentIssueAddedEvent\" }\n | { __typename?: \"ParentIssueRemovedEvent\" }\n | { __typename?: \"PinnedDiscussion\" }\n | { __typename?: \"PinnedEnvironment\" }\n | { __typename?: \"PinnedEvent\" }\n | { __typename?: \"PinnedIssue\" }\n | { __typename?: \"PrivateRepositoryForkingDisableAuditEntry\" }\n | { __typename?: \"PrivateRepositoryForkingEnableAuditEntry\" }\n | { __typename?: \"Project\" }\n | { __typename?: \"ProjectCard\" }\n | { __typename?: \"ProjectColumn\" }\n | { __typename?: \"ProjectV2\" }\n | { __typename?: \"ProjectV2Field\" }\n | { __typename?: \"ProjectV2Item\" }\n | { __typename?: \"ProjectV2ItemFieldDateValue\" }\n | { __typename?: \"ProjectV2ItemFieldIterationValue\" }\n | { __typename?: \"ProjectV2ItemFieldNumberValue\" }\n | { __typename?: \"ProjectV2ItemFieldSingleSelectValue\" }\n | { __typename?: \"ProjectV2ItemFieldTextValue\" }\n | { __typename?: \"ProjectV2ItemStatusChangedEvent\" }\n | { __typename?: \"ProjectV2IterationField\" }\n | { __typename?: \"ProjectV2SingleSelectField\" }\n | { __typename?: \"ProjectV2StatusUpdate\" }\n | { __typename?: \"ProjectV2View\" }\n | { __typename?: \"ProjectV2Workflow\" }\n | { __typename?: \"PublicKey\" }\n | { __typename?: \"PullRequest\" }\n | { __typename?: \"PullRequestCommit\" }\n | { __typename?: \"PullRequestCommitCommentThread\" }\n | { __typename?: \"PullRequestReview\" }\n | { __typename?: \"PullRequestReviewComment\" }\n | { __typename?: \"PullRequestReviewThread\" }\n | { __typename?: \"PullRequestThread\" }\n | { __typename?: \"Push\" }\n | { __typename?: \"PushAllowance\" }\n | { __typename?: \"Query\" }\n | { __typename?: \"Reaction\" }\n | { __typename?: \"ReadyForReviewEvent\" }\n | { __typename?: \"Ref\" }\n | { __typename?: \"ReferencedEvent\" }\n | { __typename?: \"Release\" }\n | { __typename?: \"ReleaseAsset\" }\n | { __typename?: \"RemovedFromMergeQueueEvent\" }\n | { __typename?: \"RemovedFromProjectEvent\" }\n | { __typename?: \"RemovedFromProjectV2Event\" }\n | { __typename?: \"RenamedTitleEvent\" }\n | { __typename?: \"ReopenedEvent\" }\n | { __typename?: \"RepoAccessAuditEntry\" }\n | { __typename?: \"RepoAddMemberAuditEntry\" }\n | { __typename?: \"RepoAddTopicAuditEntry\" }\n | { __typename?: \"RepoArchivedAuditEntry\" }\n | { __typename?: \"RepoChangeMergeSettingAuditEntry\" }\n | { __typename?: \"RepoConfigDisableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigEnableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigLockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigUnlockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoCreateAuditEntry\" }\n | { __typename?: \"RepoDestroyAuditEntry\" }\n | { __typename?: \"RepoRemoveMemberAuditEntry\" }\n | { __typename?: \"RepoRemoveTopicAuditEntry\" }\n | { __typename?: \"Repository\" }\n | { __typename?: \"RepositoryCustomProperty\" }\n | { __typename?: \"RepositoryInvitation\" }\n | { __typename?: \"RepositoryMigration\" }\n | { __typename?: \"RepositoryRule\" }\n | { __typename?: \"RepositoryRuleset\" }\n | { __typename?: \"RepositoryRulesetBypassActor\" }\n | { __typename?: \"RepositoryTopic\" }\n | { __typename?: \"RepositoryVisibilityChangeDisableAuditEntry\" }\n | { __typename?: \"RepositoryVisibilityChangeEnableAuditEntry\" }\n | { __typename?: \"RepositoryVulnerabilityAlert\" }\n | { __typename?: \"ReviewDismissalAllowance\" }\n | { __typename?: \"ReviewDismissedEvent\" }\n | { __typename?: \"ReviewRequest\" }\n | { __typename?: \"ReviewRequestRemovedEvent\" }\n | { __typename?: \"ReviewRequestedEvent\" }\n | { __typename?: \"SavedReply\" }\n | { __typename?: \"SecurityAdvisory\" }\n | { __typename?: \"SponsorsActivity\" }\n | { __typename?: \"SponsorsListing\" }\n | { __typename?: \"SponsorsListingFeaturedItem\" }\n | { __typename?: \"SponsorsTier\" }\n | { __typename?: \"Sponsorship\" }\n | { __typename?: \"SponsorshipNewsletter\" }\n | { __typename?: \"Status\" }\n | { __typename?: \"StatusCheckRollup\" }\n | { __typename?: \"StatusContext\" }\n | { __typename?: \"SubIssueAddedEvent\" }\n | { __typename?: \"SubIssueRemovedEvent\" }\n | { __typename?: \"SubscribedEvent\" }\n | { __typename?: \"Tag\" }\n | { __typename?: \"Team\" }\n | { __typename?: \"TeamAddMemberAuditEntry\" }\n | { __typename?: \"TeamAddRepositoryAuditEntry\" }\n | { __typename?: \"TeamChangeParentTeamAuditEntry\" }\n | { __typename?: \"TeamRemoveMemberAuditEntry\" }\n | { __typename?: \"TeamRemoveRepositoryAuditEntry\" }\n | { __typename?: \"Topic\" }\n | { __typename?: \"TransferredEvent\" }\n | { __typename?: \"Tree\" }\n | { __typename?: \"UnassignedEvent\" }\n | { __typename?: \"UnlabeledEvent\" }\n | { __typename?: \"UnlockedEvent\" }\n | { __typename?: \"UnmarkedAsDuplicateEvent\" }\n | { __typename?: \"UnpinnedEvent\" }\n | { __typename?: \"UnsubscribedEvent\" }\n | { __typename?: \"User\" }\n | { __typename?: \"UserBlockedEvent\" }\n | { __typename?: \"UserContentEdit\" }\n | { __typename?: \"UserList\" }\n | { __typename?: \"UserNamespaceRepository\" }\n | { __typename?: \"UserStatus\" }\n | { __typename?: \"VerifiableDomain\" }\n | { __typename?: \"Workflow\" }\n | { __typename?: \"WorkflowRun\" }\n | { __typename?: \"WorkflowRunFile\" }\n | null\n}\n\nexport const IssueMilestoneLookupDocument = `\n query IssueMilestoneLookup($issueId: ID!, $milestoneNumber: Int!) {\n node(id: $issueId) {\n ... on Issue {\n repository {\n milestone(number: $milestoneNumber) {\n id\n }\n }\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n IssueMilestoneLookup(\n variables: IssueMilestoneLookupQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<IssueMilestoneLookupQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<IssueMilestoneLookupQuery>({\n document: IssueMilestoneLookupDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"IssueMilestoneLookup\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import { IssueAssigneesAddDocument } from \"./operations/issue-assignees-add.generated.js\"\nimport { IssueAssigneesLookupDocument } from \"./operations/issue-assignees-lookup.generated.js\"\nimport { IssueAssigneesLookupByNumberDocument } from \"./operations/issue-assignees-lookup-by-number.generated.js\"\nimport { IssueAssigneesRemoveDocument } from \"./operations/issue-assignees-remove.generated.js\"\nimport { IssueAssigneesUpdateDocument } from \"./operations/issue-assignees-update.generated.js\"\nimport { IssueBlockedByAddDocument } from \"./operations/issue-blocked-by-add.generated.js\"\nimport { IssueBlockedByRemoveDocument } from \"./operations/issue-blocked-by-remove.generated.js\"\nimport { IssueCloseDocument } from \"./operations/issue-close.generated.js\"\nimport { IssueCommentCreateDocument } from \"./operations/issue-comment-create.generated.js\"\nimport { IssueCommentsListDocument } from \"./operations/issue-comments-list.generated.js\"\nimport { IssueCreateDocument } from \"./operations/issue-create.generated.js\"\nimport { IssueCreateRepositoryIdDocument } from \"./operations/issue-create-repository-id.generated.js\"\nimport { IssueDeleteDocument } from \"./operations/issue-delete.generated.js\"\nimport { IssueLabelsAddDocument } from \"./operations/issue-labels-add.generated.js\"\nimport { IssueLabelsLookupDocument } from \"./operations/issue-labels-lookup.generated.js\"\nimport { IssueLabelsLookupByNumberDocument } from \"./operations/issue-labels-lookup-by-number.generated.js\"\nimport { IssueLabelsRemoveDocument } from \"./operations/issue-labels-remove.generated.js\"\nimport { IssueLabelsUpdateDocument } from \"./operations/issue-labels-update.generated.js\"\nimport { IssueLinkedPrsListDocument } from \"./operations/issue-linked-prs-list.generated.js\"\nimport { IssueListDocument } from \"./operations/issue-list.generated.js\"\nimport { IssueMilestoneLookupDocument } from \"./operations/issue-milestone-lookup.generated.js\"\nimport { IssueMilestoneLookupByNumberDocument } from \"./operations/issue-milestone-lookup-by-number.generated.js\"\nimport { IssueMilestoneSetDocument } from \"./operations/issue-milestone-set.generated.js\"\nimport { IssueNodeIdLookupDocument } from \"./operations/issue-node-id-lookup.generated.js\"\nimport { IssueParentLookupDocument } from \"./operations/issue-parent-lookup.generated.js\"\nimport { IssueParentRemoveDocument } from \"./operations/issue-parent-remove.generated.js\"\nimport { IssueParentSetDocument } from \"./operations/issue-parent-set.generated.js\"\nimport { IssueRelationsGetDocument } from \"./operations/issue-relations-get.generated.js\"\nimport { IssueReopenDocument } from \"./operations/issue-reopen.generated.js\"\nimport { IssueUpdateDocument } from \"./operations/issue-update.generated.js\"\nimport { IssueViewDocument } from \"./operations/issue-view.generated.js\"\nimport { PrAssigneesAddDocument } from \"./operations/pr-assignees-add.generated.js\"\nimport { PrAssigneesRemoveDocument } from \"./operations/pr-assignees-remove.generated.js\"\nimport { PrBranchUpdateDocument } from \"./operations/pr-branch-update.generated.js\"\nimport { PrCommentReplyDocument } from \"./operations/pr-comment-reply.generated.js\"\nimport { PrCommentResolveDocument } from \"./operations/pr-comment-resolve.generated.js\"\nimport { PrCommentUnresolveDocument } from \"./operations/pr-comment-unresolve.generated.js\"\nimport { PrCommentsListDocument } from \"./operations/pr-comments-list.generated.js\"\nimport { PrCreateDocument } from \"./operations/pr-create.generated.js\"\nimport { PrDiffListFilesDocument } from \"./operations/pr-diff-list-files.generated.js\"\nimport { PrListDocument } from \"./operations/pr-list.generated.js\"\nimport { PrMergeDocument } from \"./operations/pr-merge.generated.js\"\nimport { PrMergeStatusDocument } from \"./operations/pr-merge-status.generated.js\"\nimport { PrNodeIdDocument } from \"./operations/pr-node-id.generated.js\"\nimport { PrReviewSubmitDocument } from \"./operations/pr-review-submit.generated.js\"\nimport { PrReviewsListDocument } from \"./operations/pr-reviews-list.generated.js\"\nimport { PrReviewsRequestDocument } from \"./operations/pr-reviews-request.generated.js\"\nimport { PrUpdateDocument } from \"./operations/pr-update.generated.js\"\nimport { PrViewDocument } from \"./operations/pr-view.generated.js\"\nimport { ProjectV2FieldsListOrgDocument } from \"./operations/project-v2-fields-list-org.generated.js\"\nimport { AddProjectV2ItemDocument } from \"./operations/project-v2-item-add.generated.js\"\nimport { UpdateProjectV2ItemFieldDocument } from \"./operations/project-v2-item-field-update.generated.js\"\nimport { RemoveProjectV2ItemDocument } from \"./operations/project-v2-item-remove.generated.js\"\nimport { ProjectV2ItemsListOrgDocument } from \"./operations/project-v2-items-list-org.generated.js\"\nimport { ProjectV2OrgViewDocument } from \"./operations/project-v2-org-view.generated.js\"\nimport { ProjectV2UserViewDocument } from \"./operations/project-v2-user-view.generated.js\"\nimport { ReleaseListDocument } from \"./operations/release-list.generated.js\"\nimport { ReleaseViewDocument } from \"./operations/release-view.generated.js\"\nimport { RepoIssueTypesListDocument } from \"./operations/repo-issue-types-list.generated.js\"\nimport { RepoLabelsListDocument } from \"./operations/repo-labels-list.generated.js\"\nimport { RepoViewDocument } from \"./operations/repo-view.generated.js\"\nimport { UserNodeIdDocument } from \"./operations/user-node-id.generated.js\"\n\n// Unified document map — contains lookup queries, mutations, and query operations\nconst DOCUMENTS: Record<string, string> = {\n // Resolution lookup queries (Phase 1)\n IssueAssigneesLookup: IssueAssigneesLookupDocument,\n IssueAssigneesLookupByNumber: IssueAssigneesLookupByNumberDocument,\n IssueCreateRepositoryId: IssueCreateRepositoryIdDocument,\n IssueLabelsLookup: IssueLabelsLookupDocument,\n IssueLabelsLookupByNumber: IssueLabelsLookupByNumberDocument,\n IssueMilestoneLookup: IssueMilestoneLookupDocument,\n IssueMilestoneLookupByNumber: IssueMilestoneLookupByNumberDocument,\n IssueNodeIdLookup: IssueNodeIdLookupDocument,\n IssueParentLookup: IssueParentLookupDocument,\n PrNodeId: PrNodeIdDocument,\n UserNodeId: UserNodeIdDocument,\n\n // Mutation documents\n IssueAssigneesAdd: IssueAssigneesAddDocument,\n IssueAssigneesRemove: IssueAssigneesRemoveDocument,\n IssueAssigneesUpdate: IssueAssigneesUpdateDocument,\n IssueBlockedByAdd: IssueBlockedByAddDocument,\n IssueBlockedByRemove: IssueBlockedByRemoveDocument,\n IssueClose: IssueCloseDocument,\n IssueCommentCreate: IssueCommentCreateDocument,\n IssueCreate: IssueCreateDocument,\n IssueDelete: IssueDeleteDocument,\n IssueLabelsAdd: IssueLabelsAddDocument,\n IssueLabelsRemove: IssueLabelsRemoveDocument,\n IssueLabelsUpdate: IssueLabelsUpdateDocument,\n IssueMilestoneSet: IssueMilestoneSetDocument,\n IssueParentRemove: IssueParentRemoveDocument,\n IssueParentSet: IssueParentSetDocument,\n IssueReopen: IssueReopenDocument,\n IssueUpdate: IssueUpdateDocument,\n PrAssigneesAdd: PrAssigneesAddDocument,\n PrAssigneesRemove: PrAssigneesRemoveDocument,\n PrBranchUpdate: PrBranchUpdateDocument,\n PrCommentReply: PrCommentReplyDocument,\n PrCommentResolve: PrCommentResolveDocument,\n PrCommentUnresolve: PrCommentUnresolveDocument,\n PrCreate: PrCreateDocument,\n PrMerge: PrMergeDocument,\n PrReviewSubmit: PrReviewSubmitDocument,\n PrReviewsRequest: PrReviewsRequestDocument,\n PrUpdate: PrUpdateDocument,\n AddProjectV2Item: AddProjectV2ItemDocument,\n RemoveProjectV2Item: RemoveProjectV2ItemDocument,\n UpdateProjectV2ItemField: UpdateProjectV2ItemFieldDocument,\n\n // Query documents\n IssueView: IssueViewDocument,\n IssueList: IssueListDocument,\n IssueCommentsList: IssueCommentsListDocument,\n IssueRelationsGet: IssueRelationsGetDocument,\n IssueLinkedPrsList: IssueLinkedPrsListDocument,\n PrView: PrViewDocument,\n PrList: PrListDocument,\n PrDiffListFiles: PrDiffListFilesDocument,\n PrMergeStatus: PrMergeStatusDocument,\n PrCommentsList: PrCommentsListDocument,\n PrReviewsList: PrReviewsListDocument,\n RepoView: RepoViewDocument,\n RepoLabelsList: RepoLabelsListDocument,\n RepoIssueTypesList: RepoIssueTypesListDocument,\n ReleaseView: ReleaseViewDocument,\n ReleaseList: ReleaseListDocument,\n ProjectV2OrgView: ProjectV2OrgViewDocument,\n ProjectV2UserView: ProjectV2UserViewDocument,\n ProjectV2FieldsListOrg: ProjectV2FieldsListOrgDocument,\n ProjectV2ItemsListOrg: ProjectV2ItemsListOrgDocument,\n}\n\nexport function getDocument(operationName: string): string {\n const doc = DOCUMENTS[operationName]\n if (!doc) {\n throw new Error(`No document registered for operation: ${operationName}`)\n }\n return doc\n}\n\nexport function getLookupDocument(operationName: string): string {\n return getDocument(operationName)\n}\n\nexport function getMutationDocument(operationName: string): string {\n return getDocument(operationName)\n}\n","import type { InjectSpec } from \"@core/core/registry/types.js\"\nimport type { GraphqlVariables } from \"./transport.js\"\n\nfunction getAtPath(obj: unknown, path: string): unknown {\n const parts = path.split(\".\")\n let current = obj\n for (const part of parts) {\n if (current === null || typeof current !== \"object\") return undefined\n current = (current as Record<string, unknown>)[part]\n }\n return current\n}\n\nexport function applyInject(\n spec: InjectSpec,\n lookupResult: unknown,\n input: Record<string, unknown>,\n): Record<string, unknown> {\n if (spec.source === \"null_literal\") {\n return { [spec.target]: null }\n }\n\n if (spec.source === \"scalar\") {\n const value = getAtPath(lookupResult, spec.path)\n if (value === undefined || value === null) {\n throw new Error(`Resolution failed for '${spec.target}': no value at path '${spec.path}'`)\n }\n return { [spec.target]: value }\n }\n\n if (spec.source === \"input\") {\n const value = input[spec.from_input]\n if (value === undefined || value === null) {\n throw new Error(\n `Resolution failed for '${spec.target}': no value at input field '${spec.from_input}'`,\n )\n }\n return { [spec.target]: value }\n }\n\n // map_array\n if (spec.source !== \"map_array\") {\n throw new Error(`Unknown inject source: '${(spec as InjectSpec).source}'`)\n }\n const nodes = getAtPath(lookupResult, spec.nodes_path)\n if (!Array.isArray(nodes)) {\n throw new Error(\n `Resolution failed for '${spec.target}': nodes at '${spec.nodes_path}' is not an array`,\n )\n }\n\n // Guard: if the lookup connection reported more pages, our 100-item cap may truncate results\n const pageInfoPath = spec.nodes_path.replace(/\\.nodes$/, \".pageInfo.hasNextPage\")\n if (getAtPath(lookupResult, pageInfoPath) === true) {\n throw new Error(\n `Resolution failed for '${spec.target}': lookup returned 100 items but more exist — request may be truncated. Narrow the scope or use a repository with fewer items.`,\n )\n }\n\n const idByName = new Map<string, unknown>()\n for (const node of nodes) {\n if (node && typeof node === \"object\") {\n const n = node as Record<string, unknown>\n const key = n[spec.match_field]\n const val = n[spec.extract_field]\n if (typeof key === \"string\") {\n idByName.set(key.toLowerCase(), val)\n }\n }\n }\n\n const inputValues = input[spec.from_input]\n if (!Array.isArray(inputValues)) {\n throw new Error(\n `Resolution failed for '${spec.target}': input field '${spec.from_input}' is not an array`,\n )\n }\n\n const resolved = inputValues.map((name: unknown) => {\n if (typeof name !== \"string\")\n throw new Error(`Resolution: expected string in '${spec.from_input}'`)\n const id = idByName.get(name.toLowerCase())\n if (id === undefined) throw new Error(`Resolution: '${name}' not found in lookup result`)\n return id\n })\n\n return { [spec.target]: resolved }\n}\n\nexport function buildOperationVars(\n operationDoc: string,\n input: Record<string, unknown>,\n resolved: Record<string, unknown>,\n): GraphqlVariables {\n // Extract variable names declared in the mutation header\n const headerMatch = operationDoc.match(/(?:query|mutation)\\s+\\w+\\s*\\(([^)]*)\\)/)\n const mutVarNames = new Set<string>()\n if (headerMatch?.[1]) {\n for (const match of headerMatch[1].matchAll(/\\$(\\w+)\\s*:/g)) {\n if (match[1]) mutVarNames.add(match[1])\n }\n }\n\n const vars: GraphqlVariables = {}\n // Pass through input fields whose names match mutation variables\n for (const varName of mutVarNames) {\n if (varName in input) {\n vars[varName] = input[varName] as GraphqlVariables[string]\n }\n }\n // Apply resolved values (may override pass-through)\n for (const [key, value] of Object.entries(resolved)) {\n if (mutVarNames.has(key)) {\n vars[key] = value as GraphqlVariables[string]\n }\n }\n return vars\n}\n","import { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { buildBatchMutation, buildBatchQuery } from \"@core/gql/batch.js\"\nimport { getDocument } from \"@core/gql/document-registry.js\"\nimport { applyInject, buildOperationVars } from \"@core/gql/resolve.js\"\nimport type { ResolutionResults } from \"./resolve.js\"\nimport type { ClassifiedStep, ExecutionDeps } from \"./types.js\"\n\nexport type GqlExecutePhaseResults = {\n mutationRawResult: Record<string, unknown>\n queryRawResult: Record<string, unknown>\n stepErrors: Map<string, string>\n}\n\nexport async function runGqlExecutePhase(\n steps: ClassifiedStep[],\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n lookupResults: ResolutionResults,\n deps: ExecutionDeps,\n): Promise<GqlExecutePhaseResults> {\n const mutationInputs: Array<{\n alias: string\n mutation: string\n variables: Record<string, unknown>\n stepIndex: number\n }> = []\n\n const queryInputs: Array<{\n alias: string\n query: string\n variables: Record<string, unknown>\n stepIndex: number\n }> = []\n\n const stepErrors = new Map<string, string>()\n const stepPreErrors = new Map<number, string>()\n\n for (const step of steps) {\n const { card, index, route } = step\n const req = requests[index]\n if (req === undefined) continue\n\n try {\n logger.debug(\"resolution.inject\", { step: index, capability_id: req.task })\n const resolved: Record<string, unknown> = {}\n if (card.graphql?.resolution && lookupResults[index] !== undefined) {\n for (const spec of card.graphql.resolution.inject) {\n Object.assign(resolved, applyInject(spec, lookupResults[index], req.input))\n }\n }\n\n if (!card.graphql) {\n throw new Error(`Step ${index}: card has no graphql config for route '${route}'`)\n }\n const doc = getDocument(card.graphql.operationName)\n const vars = buildOperationVars(doc, req.input, resolved)\n\n if (route === \"gql-mutation\") {\n mutationInputs.push({\n alias: `step${index}`,\n mutation: doc,\n variables: vars,\n stepIndex: index,\n })\n } else {\n queryInputs.push({\n alias: `step${index}`,\n query: doc,\n variables: vars,\n stepIndex: index,\n })\n }\n } catch (err) {\n stepPreErrors.set(index, err instanceof Error ? err.message : String(err))\n }\n }\n\n for (const [index, msg] of stepPreErrors) {\n stepErrors.set(`step${index}`, msg)\n }\n\n let mutationRawResult: Record<string, unknown> = {}\n\n const mutationPromise =\n mutationInputs.length > 0\n ? (async () => {\n try {\n const { document, variables } = buildBatchMutation(\n mutationInputs.map(({ alias, mutation, variables }) => ({\n alias,\n mutation,\n variables,\n })),\n )\n logger.debug(\"mutation.batch_start\", { count: mutationInputs.length })\n const rawResponse = await deps.githubClient.queryRaw<Record<string, unknown>>(\n document,\n variables,\n )\n\n if (rawResponse.errors?.length) {\n const attributedAliases = new Set<string>()\n for (const err of rawResponse.errors) {\n const alias = err.path?.[0]\n if (typeof alias === \"string\" && alias.startsWith(\"step\")) {\n stepErrors.set(alias, err.message)\n attributedAliases.add(alias)\n }\n }\n if (attributedAliases.size === 0) {\n for (const { alias } of mutationInputs) {\n if (!stepErrors.has(alias)) {\n stepErrors.set(alias, rawResponse.errors[0]?.message ?? \"GraphQL batch error\")\n }\n }\n }\n }\n\n mutationRawResult = rawResponse.data ?? {}\n logger.debug(\"mutation.batch_complete\", { count: mutationInputs.length })\n } catch (err) {\n const code = mapErrorToCode(err)\n logger.error(\"mutation.batch_failed\", { error_code: code })\n for (const { alias } of mutationInputs) {\n stepErrors.set(alias, err instanceof Error ? err.message : String(err))\n }\n }\n })()\n : Promise.resolve()\n\n let queryRawResult: Record<string, unknown> = {}\n\n const queryPromise =\n queryInputs.length > 0\n ? (async () => {\n try {\n const { document, variables } = buildBatchQuery(\n queryInputs.map(({ alias, query, variables }) => ({\n alias,\n query,\n variables,\n })),\n )\n logger.debug(\"query.batch_start\", { count: queryInputs.length })\n const rawResult = await deps.githubClient.query<Record<string, unknown>>(\n document,\n variables,\n )\n queryRawResult = rawResult\n logger.debug(\"query.batch_complete\", { count: queryInputs.length })\n } catch (err) {\n const code = mapErrorToCode(err)\n logger.error(\"query.batch_failed\", { error_code: code })\n for (const { alias } of queryInputs) {\n stepErrors.set(alias, err instanceof Error ? err.message : String(err))\n }\n }\n })()\n : Promise.resolve()\n\n // Mutation and query aliases cannot collide: each step is classified as either a\n // gql-mutation or a gql-query (never both), so mutationInputs and queryInputs hold\n // disjoint sets of `step<index>` aliases. Concurrent writes to stepErrors are safe.\n await Promise.allSettled([mutationPromise, queryPromise])\n\n return {\n mutationRawResult,\n queryRawResult,\n stepErrors,\n }\n}\n","import type { ChainStepResult, RouteSource } from \"@core/core/contracts/envelope.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { getOperationCard } from \"@core/core/registry/index.js\"\nimport { validateInput } from \"@core/core/registry/schema-validator.js\"\nimport type { OperationCard } from \"@core/core/registry/types.js\"\nimport type { ClassifiedStep } from \"./types.js\"\n\nexport type PreflightSuccess = {\n ok: true\n steps: ClassifiedStep[]\n cards: OperationCard[]\n}\n\nexport type PreflightFailure = {\n ok: false\n results: ChainStepResult[]\n routeUsed: RouteSource\n}\n\nexport function runPreflight(\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n): PreflightSuccess | PreflightFailure {\n const preflightErrorByIndex = new Map<number, ChainStepResult>()\n const cards: OperationCard[] = []\n const cardIsCliOnly: boolean[] = []\n\n for (let i = 0; i < requests.length; i += 1) {\n const req = requests[i]\n if (req === undefined) continue\n try {\n const card = getOperationCard(req.task)\n if (!card) {\n throw new Error(`Invalid task: ${req.task}`)\n }\n\n const inputValidation = validateInput(card.input_schema, req.input)\n if (!inputValidation.ok) {\n const details = inputValidation.errors\n .map((e) => `${e.instancePath || \"root\"}: ${e.message}`)\n .join(\"; \")\n throw new Error(`Input validation failed: ${details}`)\n }\n\n if (!card.graphql && !card.cli) {\n throw new Error(\n `capability '${req.task}' has no supported route (graphql or cli) and cannot be chained`,\n )\n }\n\n if (card.graphql?.resolution) {\n const { lookup } = card.graphql.resolution\n for (const [, inputField] of Object.entries(lookup.vars)) {\n if (req.input[inputField] === undefined) {\n throw new Error(\n `Resolution pre-flight failed for '${req.task}': lookup var '${inputField}' is missing from input`,\n )\n }\n }\n }\n\n cards.push(card)\n cardIsCliOnly.push(!card.graphql)\n } catch (err) {\n preflightErrorByIndex.set(i, {\n task: req.task,\n ok: false,\n error: {\n code: mapErrorToCode(err),\n message: err instanceof Error ? err.message : String(err),\n retryable: false,\n },\n })\n }\n }\n\n if (preflightErrorByIndex.size > 0) {\n const results: ChainStepResult[] = requests.map(\n (req, i) =>\n preflightErrorByIndex.get(i) ?? {\n task: req?.task ?? \"unknown\",\n ok: false,\n error: {\n code: errorCodes.Unknown,\n message: \"pre-flight failed\",\n retryable: false,\n },\n },\n )\n // If all cards that passed preflight are CLI-only, report cli route_used\n const anyGqlCard = cardIsCliOnly.some((isCliOnly) => !isCliOnly)\n const routeUsed: RouteSource = !anyGqlCard && cards.length > 0 ? \"cli\" : \"graphql\"\n return { ok: false, results, routeUsed }\n }\n\n const steps: ClassifiedStep[] = []\n let cardIndex = 0\n for (let i = 0; i < requests.length; i += 1) {\n const req = requests[i]\n const card = cards[cardIndex]\n if (req === undefined || card === undefined) continue\n cardIndex += 1\n\n let route: ClassifiedStep[\"route\"]\n if (!card.graphql) {\n route = \"cli\"\n } else if (card.graphql.operationType === \"query\") {\n route = \"gql-query\"\n } else {\n route = \"gql-mutation\"\n }\n\n steps.push({ route, card, index: i, request: req })\n }\n\n return { ok: true, steps, cards }\n}\n","import type { OperationCard } from \"@core/core/registry/types.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { buildBatchQuery, extractRootFieldName } from \"@core/gql/batch.js\"\nimport { getLookupDocument } from \"@core/gql/document-registry.js\"\nimport type { GithubClient } from \"@core/gql/github-client.js\"\nimport type { ResolutionCache } from \"../resolution-cache.js\"\nimport { buildCacheKey } from \"../resolution-cache.js\"\nimport type { ClassifiedStep } from \"./types.js\"\n\nexport type ResolutionResults = Record<number, unknown>\n\nfunction buildLookupVars(\n card: OperationCard,\n input: Record<string, unknown>,\n): Record<string, unknown> {\n const vars: Record<string, unknown> = {}\n if (card.graphql?.resolution) {\n for (const [lookupVar, inputField] of Object.entries(card.graphql.resolution.lookup.vars)) {\n vars[lookupVar] = input[inputField]\n }\n }\n return vars\n}\n\nexport async function runResolutionPhase(\n steps: ClassifiedStep[],\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n githubClient: GithubClient,\n resolutionCache?: ResolutionCache,\n): Promise<ResolutionResults> {\n const lookupResults: ResolutionResults = {}\n\n const lookupInputs: Array<{\n alias: string\n query: string\n variables: Record<string, unknown>\n stepIndex: number\n }> = []\n\n for (const step of steps) {\n const { card, index } = step\n if (!card.graphql?.resolution) continue\n\n const req = requests[index]\n if (req === undefined) continue\n\n const lookupVars = buildLookupVars(card, req.input)\n\n // Check resolution cache before scheduling network call\n if (resolutionCache) {\n const cacheKey = buildCacheKey(card.graphql.resolution.lookup.operationName, lookupVars)\n const cached = resolutionCache.get(cacheKey)\n if (cached !== undefined) {\n lookupResults[index] = cached\n logger.debug(\"resolution.cache_hit\", {\n step: index,\n operation: card.graphql.resolution.lookup.operationName,\n key: cacheKey,\n })\n continue\n }\n }\n\n logger.debug(\"resolution.lookup_scheduled\", {\n step: index,\n operation: card.graphql.resolution.lookup.operationName,\n })\n lookupInputs.push({\n alias: `step${index}`,\n query: getLookupDocument(card.graphql.resolution.lookup.operationName),\n variables: lookupVars,\n stepIndex: index,\n })\n }\n\n if (lookupInputs.length === 0) {\n return lookupResults\n }\n\n const { document, variables } = buildBatchQuery(\n lookupInputs.map(({ alias, query, variables }) => ({\n alias,\n query,\n variables,\n })),\n )\n\n logger.debug(\"query.batch_start\", { count: lookupInputs.length })\n // Throws on network/GQL error — caller handles it\n const rawResult = await githubClient.query(document, variables)\n logger.debug(\"query.batch_complete\", { count: lookupInputs.length })\n\n // Un-alias results: BatchChain result has keys like \"step0\", \"step2\", etc.\n // GitHub returns the root field value directly under the alias key — no extra wrapper.\n // Re-wrap it so applyInject path traversal (e.g. \"repository.issue.id\") works correctly.\n for (const { alias, query, stepIndex } of lookupInputs) {\n const rawValue = (rawResult as Record<string, unknown>)[alias]\n if (rawValue === undefined) {\n logger.debug(\"resolution.step_missing\", { step: stepIndex, alias })\n continue\n }\n const rootFieldName = extractRootFieldName(query)\n const result = rootFieldName !== null ? { [rootFieldName]: rawValue } : rawValue\n lookupResults[stepIndex] = result\n logger.debug(\"resolution.step_resolved\", { step: stepIndex, alias })\n\n if (resolutionCache) {\n const step = steps.find((s) => s.index === stepIndex)\n const req = requests[stepIndex]\n if (step?.card.graphql?.resolution && req) {\n const lookupVars = buildLookupVars(step.card, req.input)\n resolutionCache.set(\n buildCacheKey(step.card.graphql.resolution.lookup.operationName, lookupVars),\n result,\n )\n logger.debug(\"resolution.cache_set\", {\n step: stepIndex,\n operation: step.card.graphql.resolution.lookup.operationName,\n })\n }\n }\n }\n\n return lookupResults\n}\n","import type { ChainResultEnvelope } from \"@core/core/contracts/envelope.js\"\nimport type { ErrorCode } from \"@core/core/errors/codes.js\"\nimport { mapErrorToCode } from \"@core/core/errors/map-error.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { assembleChainResult, assembleResolutionFailure, isRetryableCode } from \"./assemble.js\"\nimport { collectCliResults, startCliSteps } from \"./cli-dispatch.js\"\nimport { runGqlExecutePhase } from \"./execute.js\"\nimport { runPreflight } from \"./preflight.js\"\nimport { runResolutionPhase } from \"./resolve.js\"\nimport type { ExecutionDeps } from \"./types.js\"\n\nexport async function executeBatch(\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n deps: ExecutionDeps,\n): Promise<ChainResultEnvelope> {\n const batchStartMs = Date.now()\n\n // Phase 0: preflight — validate all steps\n const preflight = runPreflight(requests)\n if (!preflight.ok) {\n return {\n status: \"failed\",\n results: preflight.results,\n meta: {\n route_used: preflight.routeUsed,\n total: requests.length,\n succeeded: 0,\n failed: requests.length,\n },\n }\n }\n\n const { steps } = preflight\n const cliSteps = steps.filter((s) => s.route === \"cli\")\n const gqlSteps = steps.filter((s) => s.route === \"gql-query\" || s.route === \"gql-mutation\")\n const cliStepCount = cliSteps.length\n\n // Start CLI steps concurrently with Phase 1 resolution\n const cliPromises = startCliSteps(steps, requests, deps)\n\n // Phase 1: batch resolution queries (runs concurrently with CLI steps)\n let lookupResults: import(\"./resolve.js\").ResolutionResults = {}\n try {\n lookupResults = await runResolutionPhase(\n gqlSteps,\n requests,\n deps.githubClient,\n deps.resolutionCache,\n )\n } catch (err) {\n const code = mapErrorToCode(err)\n const errorMsg = err instanceof Error ? err.message : String(err)\n logger.error(\"resolution.lookup_failed\", {\n count: gqlSteps.length,\n error_code: code,\n message: errorMsg,\n })\n const cliResults = await collectCliResults(cliPromises, cliSteps, requests)\n return assembleResolutionFailure(\n requests,\n steps,\n {\n code: code as ErrorCode,\n message: `Phase 1 (resolution) failed: ${errorMsg}`,\n retryable: isRetryableCode(code),\n },\n cliResults,\n )\n }\n\n // Phase 2: execute GQL mutations and queries\n const { mutationRawResult, queryRawResult, stepErrors } = await runGqlExecutePhase(\n gqlSteps,\n requests,\n lookupResults,\n deps,\n )\n\n // Collect CLI results (they've been running concurrently since Phase 1 started)\n const cliResults = await collectCliResults(cliPromises, cliSteps, requests)\n\n // Assemble final result\n return assembleChainResult({\n steps,\n requests,\n mutationRawResult,\n queryRawResult,\n stepErrors,\n cliResults,\n cliStepCount,\n batchStartMs,\n })\n}\n","import type {\n ChainResultEnvelope,\n ChainStepResult,\n ResultEnvelope,\n} from \"@core/core/contracts/envelope.js\"\nimport type { TaskRequest } from \"@core/core/contracts/task.js\"\nimport { errorCodes } from \"@core/core/errors/codes.js\"\nimport { logger } from \"@core/core/telemetry/log.js\"\nimport { executeBatch } from \"./batch.js\"\nimport { runSingleTask } from \"./single.js\"\nimport type { ExecutionDeps } from \"./types.js\"\n\nexport type { ExecutionDeps } from \"./types.js\"\n\nexport async function executeTask(\n request: TaskRequest,\n deps: ExecutionDeps,\n): Promise<ResultEnvelope> {\n return runSingleTask(request.task, request.input as Record<string, unknown>, deps)\n}\n\nexport async function executeTasks(\n requests: Array<{ task: string; input: Record<string, unknown> }>,\n deps: ExecutionDeps,\n): Promise<ChainResultEnvelope> {\n logger.debug(\"execute_batch.start\", { count: requests.length })\n\n if (requests.length === 0) {\n return {\n status: \"failed\",\n results: [],\n meta: { route_used: \"graphql\", total: 0, succeeded: 0, failed: 0 },\n }\n }\n\n if (requests.length === 1) {\n const req = requests[0]\n if (req === undefined) {\n return {\n status: \"failed\",\n results: [],\n meta: { route_used: \"graphql\", total: 0, succeeded: 0, failed: 0 },\n }\n }\n const batchStartMs = Date.now()\n const result = await runSingleTask(req.task, req.input, deps)\n\n const step: ChainStepResult = result.ok\n ? { task: req.task, ok: true, data: result.data }\n : {\n task: req.task,\n ok: false,\n error: result.error ?? {\n code: errorCodes.Unknown,\n message: \"Unknown error\",\n retryable: false,\n },\n }\n\n const succeeded = result.ok ? 1 : 0\n const routeUsed = result.meta?.route_used ?? \"graphql\"\n\n logger.info(\"execute_batch.complete\", {\n ok: result.ok,\n status: result.ok ? \"success\" : \"failed\",\n total: 1,\n succeeded,\n failed: 1 - succeeded,\n duration_ms: Date.now() - batchStartMs,\n })\n\n return {\n status: result.ok ? \"success\" : \"failed\",\n results: [step],\n meta: { route_used: routeUsed, total: 1, succeeded, failed: 1 - succeeded },\n }\n }\n\n return executeBatch(requests, deps)\n}\n","import type { GraphqlClient, GraphqlTransport, TokenClientOptions } from \"./transport.js\"\nimport { createGraphqlClient, createTokenTransport } from \"./transport.js\"\nimport type {\n IssueAssigneesAddData,\n IssueAssigneesAddInput,\n IssueAssigneesRemoveData,\n IssueAssigneesRemoveInput,\n IssueAssigneesUpdateData,\n IssueAssigneesUpdateInput,\n IssueBlockedByData,\n IssueBlockedByInput,\n IssueCommentCreateData,\n IssueCommentCreateInput,\n IssueCommentsListData,\n IssueCommentsListInput,\n IssueCreateInput,\n IssueLabelsAddData,\n IssueLabelsAddInput,\n IssueLabelsRemoveData,\n IssueLabelsRemoveInput,\n IssueLabelsUpdateData,\n IssueLabelsUpdateInput,\n IssueLinkedPrsListData,\n IssueLinkedPrsListInput,\n IssueListData,\n IssueListInput,\n IssueMilestoneClearData,\n IssueMilestoneClearInput,\n IssueMilestoneSetData,\n IssueMilestoneSetInput,\n IssueMutationData,\n IssueMutationInput,\n IssueParentRemoveData,\n IssueParentRemoveInput,\n IssueParentSetData,\n IssueParentSetInput,\n IssueRelationsGetData,\n IssueRelationsGetInput,\n IssueUpdateInput,\n IssueViewData,\n IssueViewInput,\n PrAssigneesAddData,\n PrAssigneesAddInput,\n PrAssigneesRemoveData,\n PrAssigneesRemoveInput,\n PrBranchUpdateData,\n PrBranchUpdateInput,\n PrCommentsListData,\n PrCommentsListInput,\n PrCreateData,\n PrCreateInput,\n PrDiffListFilesData,\n PrDiffListFilesInput,\n PrListData,\n PrListInput,\n PrMergeData,\n PrMergeInput,\n PrMergeStatusData,\n PrMergeStatusInput,\n ProjectV2FieldsListData,\n ProjectV2FieldsListInput,\n ProjectV2ItemAddData,\n ProjectV2ItemAddInput,\n ProjectV2ItemFieldUpdateData,\n ProjectV2ItemFieldUpdateInput,\n ProjectV2ItemRemoveData,\n ProjectV2ItemRemoveInput,\n ProjectV2ItemsListData,\n ProjectV2ItemsListInput,\n ProjectV2OrgViewData,\n ProjectV2OrgViewInput,\n ProjectV2UserViewData,\n ProjectV2UserViewInput,\n PrReviewSubmitData,\n PrReviewSubmitInput,\n PrReviewsListData,\n PrReviewsListInput,\n PrReviewsRequestData,\n PrReviewsRequestInput,\n PrUpdateData,\n PrUpdateInput,\n PrViewData,\n PrViewInput,\n ReleaseListData,\n ReleaseListInput,\n ReleaseViewData,\n ReleaseViewInput,\n ReplyToReviewThreadInput,\n RepoIssueTypesListData,\n RepoIssueTypesListInput,\n RepoLabelsListData,\n RepoLabelsListInput,\n RepoViewData,\n RepoViewInput,\n ReviewThreadMutationData,\n ReviewThreadMutationInput,\n} from \"./types.js\"\n\nexport interface GithubClient extends GraphqlClient {\n fetchRepoView(input: RepoViewInput): Promise<RepoViewData>\n fetchIssueCommentsList(input: IssueCommentsListInput): Promise<IssueCommentsListData>\n createIssue(input: IssueCreateInput): Promise<IssueMutationData>\n updateIssue(input: IssueUpdateInput): Promise<IssueMutationData>\n closeIssue(input: IssueMutationInput): Promise<IssueMutationData>\n reopenIssue(input: IssueMutationInput): Promise<IssueMutationData>\n deleteIssue(input: IssueMutationInput): Promise<IssueMutationData>\n updateIssueLabels(input: IssueLabelsUpdateInput): Promise<IssueLabelsUpdateData>\n addIssueLabels(input: IssueLabelsAddInput): Promise<IssueLabelsAddData>\n removeIssueLabels(input: IssueLabelsRemoveInput): Promise<IssueLabelsRemoveData>\n updateIssueAssignees(input: IssueAssigneesUpdateInput): Promise<IssueAssigneesUpdateData>\n addIssueAssignees(input: IssueAssigneesAddInput): Promise<IssueAssigneesAddData>\n removeIssueAssignees(input: IssueAssigneesRemoveInput): Promise<IssueAssigneesRemoveData>\n setIssueMilestone(input: IssueMilestoneSetInput): Promise<IssueMilestoneSetData>\n clearIssueMilestone(input: IssueMilestoneClearInput): Promise<IssueMilestoneClearData>\n createIssueComment(input: IssueCommentCreateInput): Promise<IssueCommentCreateData>\n fetchIssueLinkedPrs(input: IssueLinkedPrsListInput): Promise<IssueLinkedPrsListData>\n fetchIssueRelations(input: IssueRelationsGetInput): Promise<IssueRelationsGetData>\n setIssueParent(input: IssueParentSetInput): Promise<IssueParentSetData>\n removeIssueParent(input: IssueParentRemoveInput): Promise<IssueParentRemoveData>\n addIssueBlockedBy(input: IssueBlockedByInput): Promise<IssueBlockedByData>\n removeIssueBlockedBy(input: IssueBlockedByInput): Promise<IssueBlockedByData>\n fetchIssueList(input: IssueListInput): Promise<IssueListData>\n fetchIssueView(input: IssueViewInput): Promise<IssueViewData>\n fetchPrList(input: PrListInput): Promise<PrListData>\n fetchPrView(input: PrViewInput): Promise<PrViewData>\n fetchPrCommentsList(input: PrCommentsListInput): Promise<PrCommentsListData>\n fetchPrReviewsList(input: PrReviewsListInput): Promise<PrReviewsListData>\n fetchPrDiffListFiles(input: PrDiffListFilesInput): Promise<PrDiffListFilesData>\n fetchPrMergeStatus(input: PrMergeStatusInput): Promise<PrMergeStatusData>\n replyToReviewThread(input: ReplyToReviewThreadInput): Promise<ReviewThreadMutationData>\n resolveReviewThread(input: ReviewThreadMutationInput): Promise<ReviewThreadMutationData>\n unresolveReviewThread(input: ReviewThreadMutationInput): Promise<ReviewThreadMutationData>\n submitPrReview(input: PrReviewSubmitInput): Promise<PrReviewSubmitData>\n fetchRepoLabelsList(input: RepoLabelsListInput): Promise<RepoLabelsListData>\n fetchRepoIssueTypesList(input: RepoIssueTypesListInput): Promise<RepoIssueTypesListData>\n fetchReleaseView(input: ReleaseViewInput): Promise<ReleaseViewData>\n fetchReleaseList(input: ReleaseListInput): Promise<ReleaseListData>\n fetchProjectV2OrgView(input: ProjectV2OrgViewInput): Promise<ProjectV2OrgViewData>\n fetchProjectV2UserView(input: ProjectV2UserViewInput): Promise<ProjectV2UserViewData>\n fetchProjectV2FieldsList(input: ProjectV2FieldsListInput): Promise<ProjectV2FieldsListData>\n fetchProjectV2ItemsList(input: ProjectV2ItemsListInput): Promise<ProjectV2ItemsListData>\n createPr(input: PrCreateInput): Promise<PrCreateData>\n updatePr(input: PrUpdateInput): Promise<PrUpdateData>\n mergePr(input: PrMergeInput): Promise<PrMergeData>\n updatePrBranch(input: PrBranchUpdateInput): Promise<PrBranchUpdateData>\n addPrAssignees(input: PrAssigneesAddInput): Promise<PrAssigneesAddData>\n removePrAssignees(input: PrAssigneesRemoveInput): Promise<PrAssigneesRemoveData>\n requestPrReviews(input: PrReviewsRequestInput): Promise<PrReviewsRequestData>\n addProjectV2Item(input: ProjectV2ItemAddInput): Promise<ProjectV2ItemAddData>\n removeProjectV2Item(input: ProjectV2ItemRemoveInput): Promise<ProjectV2ItemRemoveData>\n updateProjectV2ItemField(\n input: ProjectV2ItemFieldUpdateInput,\n ): Promise<ProjectV2ItemFieldUpdateData>\n}\n\nexport function createGithubClientFromToken(\n tokenOrOptions: string | TokenClientOptions,\n): GithubClient {\n const token = typeof tokenOrOptions === \"string\" ? tokenOrOptions : tokenOrOptions.token\n const graphqlUrl = typeof tokenOrOptions === \"string\" ? undefined : tokenOrOptions.graphqlUrl\n\n if (!token || token.trim().length === 0) {\n throw new Error(\"GitHub token is required\")\n }\n\n return createGithubClient(createTokenTransport(token, graphqlUrl))\n}\n\nexport function createGithubClient(transport: GraphqlTransport): GithubClient {\n const graphqlClient = createGraphqlClient(transport)\n\n let repo: typeof import(\"./domains/repo.js\") | undefined\n let issueQueries: typeof import(\"./domains/issue-queries.js\") | undefined\n let issueMutations: typeof import(\"./domains/issue-mutations.js\") | undefined\n let prQueries: typeof import(\"./domains/pr-queries.js\") | undefined\n let prMutations: typeof import(\"./domains/pr-mutations.js\") | undefined\n let release: typeof import(\"./domains/release.js\") | undefined\n let project: typeof import(\"./domains/project.js\") | undefined\n\n const loadRepo = async () => (repo ??= await import(\"./domains/repo.js\"))\n const loadIssueQueries = async () => (issueQueries ??= await import(\"./domains/issue-queries.js\"))\n const loadIssueMutations = async () =>\n (issueMutations ??= await import(\"./domains/issue-mutations.js\"))\n const loadPrQueries = async () => (prQueries ??= await import(\"./domains/pr-queries.js\"))\n const loadPrMutations = async () => (prMutations ??= await import(\"./domains/pr-mutations.js\"))\n const loadRelease = async () => (release ??= await import(\"./domains/release.js\"))\n const loadProject = async () => (project ??= await import(\"./domains/project.js\"))\n\n return {\n query: (query, variables) => graphqlClient.query(query, variables),\n queryRaw: (query, variables) => graphqlClient.queryRaw(query, variables),\n fetchRepoView: async (input) => (await loadRepo()).runRepoView(transport, input),\n fetchIssueView: async (input) => (await loadIssueQueries()).runIssueView(transport, input),\n fetchIssueList: async (input) => (await loadIssueQueries()).runIssueList(transport, input),\n fetchIssueCommentsList: async (input) =>\n (await loadIssueQueries()).runIssueCommentsList(transport, input),\n createIssue: async (input) => (await loadIssueMutations()).runIssueCreate(transport, input),\n updateIssue: async (input) => (await loadIssueMutations()).runIssueUpdate(transport, input),\n closeIssue: async (input) => (await loadIssueMutations()).runIssueClose(transport, input),\n reopenIssue: async (input) => (await loadIssueMutations()).runIssueReopen(transport, input),\n deleteIssue: async (input) => (await loadIssueMutations()).runIssueDelete(transport, input),\n updateIssueLabels: async (input) =>\n (await loadIssueMutations()).runIssueLabelsUpdate(transport, input),\n addIssueLabels: async (input) =>\n (await loadIssueMutations()).runIssueLabelsAdd(transport, input),\n removeIssueLabels: async (input) =>\n (await loadIssueMutations()).runIssueLabelsRemove(transport, input),\n updateIssueAssignees: async (input) =>\n (await loadIssueMutations()).runIssueAssigneesUpdate(transport, input),\n addIssueAssignees: async (input) =>\n (await loadIssueMutations()).runIssueAssigneesAdd(transport, input),\n removeIssueAssignees: async (input) =>\n (await loadIssueMutations()).runIssueAssigneesRemove(transport, input),\n setIssueMilestone: async (input) =>\n (await loadIssueMutations()).runIssueMilestoneSet(transport, input),\n clearIssueMilestone: async (input) =>\n (await loadIssueMutations()).runIssueMilestoneClear(transport, input),\n createIssueComment: async (input) =>\n (await loadIssueMutations()).runIssueCommentCreate(transport, input),\n fetchIssueLinkedPrs: async (input) =>\n (await loadIssueMutations()).runIssueLinkedPrsList(transport, input),\n fetchIssueRelations: async (input) =>\n (await loadIssueMutations()).runIssueRelationsGet(transport, input),\n setIssueParent: async (input) =>\n (await loadIssueMutations()).runIssueParentSet(transport, input),\n removeIssueParent: async (input) =>\n (await loadIssueMutations()).runIssueParentRemove(transport, input),\n addIssueBlockedBy: async (input) =>\n (await loadIssueMutations()).runIssueBlockedByAdd(transport, input),\n removeIssueBlockedBy: async (input) =>\n (await loadIssueMutations()).runIssueBlockedByRemove(transport, input),\n fetchPrView: async (input) => (await loadPrQueries()).runPrView(transport, input),\n fetchPrList: async (input) => (await loadPrQueries()).runPrList(transport, input),\n fetchPrReviewsList: async (input) => (await loadPrQueries()).runPrReviewsList(transport, input),\n fetchPrDiffListFiles: async (input) =>\n (await loadPrQueries()).runPrDiffListFiles(transport, input),\n fetchPrMergeStatus: async (input) => (await loadPrQueries()).runPrMergeStatus(transport, input),\n fetchPrCommentsList: async (input) =>\n (await loadPrMutations()).runPrCommentsList(transport, input),\n replyToReviewThread: async (input) =>\n (await loadPrMutations()).runReplyToReviewThread(transport, input),\n resolveReviewThread: async (input) =>\n (await loadPrMutations()).runResolveReviewThread(transport, input),\n unresolveReviewThread: async (input) =>\n (await loadPrMutations()).runUnresolveReviewThread(transport, input),\n submitPrReview: async (input) => (await loadPrMutations()).runSubmitPrReview(transport, input),\n fetchRepoLabelsList: async (input) => (await loadRepo()).runRepoLabelsList(transport, input),\n fetchRepoIssueTypesList: async (input) =>\n (await loadRepo()).runRepoIssueTypesList(transport, input),\n fetchReleaseView: async (input) => (await loadRelease()).runReleaseView(transport, input),\n fetchReleaseList: async (input) => (await loadRelease()).runReleaseList(transport, input),\n fetchProjectV2OrgView: async (input) =>\n (await loadProject()).runProjectV2OrgView(transport, input),\n fetchProjectV2UserView: async (input) =>\n (await loadProject()).runProjectV2UserView(transport, input),\n fetchProjectV2FieldsList: async (input) =>\n (await loadProject()).runProjectV2FieldsList(transport, input),\n fetchProjectV2ItemsList: async (input) =>\n (await loadProject()).runProjectV2ItemsList(transport, input),\n createPr: async (input) => (await loadPrMutations()).runPrCreate(transport, input),\n updatePr: async (input) => (await loadPrMutations()).runPrUpdate(transport, input),\n mergePr: async (input) => (await loadPrMutations()).runPrMerge(transport, input),\n updatePrBranch: async (input) => (await loadPrMutations()).runPrBranchUpdate(transport, input),\n addPrAssignees: async (input) => (await loadPrMutations()).runPrAssigneesAdd(transport, input),\n removePrAssignees: async (input) =>\n (await loadPrMutations()).runPrAssigneesRemove(transport, input),\n requestPrReviews: async (input) =>\n (await loadPrMutations()).runPrReviewsRequest(transport, input),\n addProjectV2Item: async (input) => (await loadProject()).runProjectV2ItemAdd(transport, input),\n removeProjectV2Item: async (input) =>\n (await loadProject()).runProjectV2ItemRemove(transport, input),\n updateProjectV2ItemField: async (input) =>\n (await loadProject()).runProjectV2ItemFieldUpdate(transport, input),\n }\n}\n"],"mappings":"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","names":["path","envelope","code","handlers","handlers","handlers","handlers","handlers","handlers","result","DEFAULT_LIST_FIRST","handlers","result","path","variables","variables","cliResults"]}
|