@adhd/backlog 1.0.0 → 1.0.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/CHANGELOG.md +48 -0
- package/README.md +69 -32
- package/api.d.ts +50 -0
- package/api.ir.json +1 -0
- package/extract-live.d.ts +56 -0
- package/index.d.ts +2 -2
- package/index.js +67 -367
- package/index.mjs +8982 -30837
- package/ir-artifact.d.ts +86 -0
- package/package.json +20 -19
- package/skill/SKILL.md +13 -0
- package/write/bootstrap.d.ts +44 -6
- package/write/catalog.d.ts +18 -0
- package/write/citation-path.d.ts +133 -0
- package/write/create-issue.d.ts +6 -3
- package/write/embedding-config.d.ts +81 -0
- package/write/errors.d.ts +66 -4
- package/write/transition.d.ts +9 -5
package/api.ir.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"formatVersion":1,"operations":[{"id":"backlog/get","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"get","words":["get"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"oneOf":[{"type":"object","properties":{"uid":{"type":"string"},"fields":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","oneOf":[{"$ref":"#/definitions/IIssuePlainField"},{"$ref":"#/definitions/IIssuePseudoField"}],"x-apigen-logical":"union"}}},"required":["uid"],"additionalProperties":false},{"type":"object","properties":{"registry":{"type":"string","enum":["project","component","location"]},"name":{"type":"string"},"filter":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string"},"component":{"type":"string"}},"additionalProperties":false}},"required":["registry","name"],"additionalProperties":false}],"x-apigen-logical":"union"}},"required":["input"],"definitions":{"IIssuePlainField":{"type":"string","enum":["uid","title","kind","status","priority","project","component","createdAt","updatedAt","assignee","author","closedAt","gitContext"],"description":"The closed field vocabulary a `get`/`query` caller may request (SPEC.md §6.5). `assertKnownFields` (this module's {@link assertKnownIssueFields } ) rejects any name outside this union with a `BacklogValidationError` naming it — never a silent drop.\n\n`plain` fields are cheap: each is either a column on the `issue` node itself or a scalar living in `issue.meta.metadata` (`assignee`, `closedAt`, `gitContext` — SPEC.md §6.5's own reclassification of `closedAt` as `plain`, since it is read in the SAME single-row fetch as `assignee`, not a second query; `gitContext` is the item-level disclosure-contract git context, a sibling of `assignee` in the same metadata blob).\n\n`pseudo` fields are opt-in only: each costs a genuine extra read (an edge traversal to another node kind, or only exists on a `searchRanked` response) and is therefore NEVER included in the default card."},"IIssuePseudoField":{"type":"string","enum":["body","citations","notes","auditTrail","blockers","related","_score","_vector"]}}},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/types\").IIssueGetInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/types\").IIssueGetResult>"},"hasCtx":true},{"id":"backlog/query","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"query","words":["query"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"text":{"type":"string"},"filter":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"uid or name (SPEC.md §6.1)."},"component":{"type":"string","description":"uid or name, scoped within `project`."},"kind":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"status":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"string","const":"open"},{"type":"string","const":"closed"},{"type":"string","const":"all"}]},"priority":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"assignee":{"type":"string"},"claimedBy":{"type":"string"},"author":{"type":"string","description":"Resolves via `authored_by` edge traversal — uid or name."},"grep":{"type":"string","description":"FTS keyword, title+body — keyword-only, never hybrid."},"semantic":{"type":"string","description":"Routes to `searchRanked` (§5a) — composes with `grep`, neither swallows the other."},"anchor":{"type":"string","description":"Item-anchored similarity/traversal seed (§6.1) — uid of the reference item."},"plan":{"type":"string","description":"uid or name of the parent `issue` this one is filed under via the `part_of` edge (SPEC.md §1052/§1471: a plan is itself an `issue` row, not a dedicated node kind — attaching an item to it is `relate(childUid, planUid, 'part_of', 'add')`). Resolves candidate issues by the incoming `part_of` edge into the resolved plan node, exactly like the `project`/`component` edge-scoped filters."},"projectPath":{"type":"string","description":"`component.meta.path` (repo-relative package path, SPEC.md §3) — exact match against every live `component` row, unioned across matches. Distinct from `component`, which takes a uid/name rather than a filesystem path."},"closedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"createdAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"updatedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false,"description":"SPEC.md §6.5's `IIssueFilter`."},"fields":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","oneOf":[{"$ref":"#/definitions/IIssuePlainField"},{"$ref":"#/definitions/IIssuePseudoField"}],"x-apigen-logical":"union"}},"sort":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["priority","updated","created","relevance","textMatch"]},"direction":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["asc","desc"]},"limit":{"type":"number"},"offset":{"type":"number"},"after":{"type":"string"},"view":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["list","ready","graph","order","stale","similar","overlap","projects","components","locations"],"description":"`projects`/`components`/`locations` (SPEC.md §3a/§8 AC-9) are the registry LIST views — every live `project`/`component`/`location` row, optionally narrowed by `filter.project` (and, for `locations`, `filter.component`) — routed to `views/registry.ts`'s `listProjects`/`listComponents`/ `listLocations`, distinct from the issue-search views above (§6.1: \"conflating the two would be wrong\")."},"format":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["json","markdown"]},"overlapAxis":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["file","project","component","author"],"description":"SPEC.md §5, §6.1's `axis` — the grouping dimension for `overlapUids` (§6.2)."},"overlapUids":{"type":"array","items":{"type":"string"}},"staleAfterMin":{"type":"number"}},"additionalProperties":false}},"required":["input"],"definitions":{"IIssuePlainField":{"type":"string","enum":["uid","title","kind","status","priority","project","component","createdAt","updatedAt","assignee","author","closedAt","gitContext"],"description":"The closed field vocabulary a `get`/`query` caller may request (SPEC.md §6.5). `assertKnownFields` (this module's {@link assertKnownIssueFields } ) rejects any name outside this union with a `BacklogValidationError` naming it — never a silent drop.\n\n`plain` fields are cheap: each is either a column on the `issue` node itself or a scalar living in `issue.meta.metadata` (`assignee`, `closedAt`, `gitContext` — SPEC.md §6.5's own reclassification of `closedAt` as `plain`, since it is read in the SAME single-row fetch as `assignee`, not a second query; `gitContext` is the item-level disclosure-contract git context, a sibling of `assignee` in the same metadata blob).\n\n`pseudo` fields are opt-in only: each costs a genuine extra read (an edge traversal to another node kind, or only exists on a `searchRanked` response) and is therefore NEVER included in the default card."},"IIssuePseudoField":{"type":"string","enum":["body","citations","notes","auditTrail","blockers","related","_score","_vector"]}}},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"oneOf":[{"type":"object","properties":{"view":{"type":"string","enum":["list"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"closedAt":{"type":"string"},"gitContext":{"type":"string","description":"The item-level disclosure-contract git context (repo `AGENTS.md`'s \"Cite what you read\": the FIRST element of a `Citations:` block is `<active git context>`). A plain field — a sibling of `assignee` in `issue.meta.metadata`, read in the same single-row fetch. Rendered once at the head of the `Citations:` block by `markdown.ts`; never per-citation. Absent on every issue filed before the field existed, and on any issue whose `create`/`transition` supplied no `gitContext`."},"body":{"type":"string"},"citations":{"type":"array","items":{"$ref":"#/definitions/IIssueCitation"}},"notes":{"type":"array","items":{"$ref":"#/definitions/IIssueNote"}},"auditTrail":{"type":"array","items":{"$ref":"#/definitions/IIssueAuditEntry"}},"blockers":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"related":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"_score":{"type":"number"},"_vector":{"type":"array","items":{"type":"number"}}},"required":["uid"],"additionalProperties":false,"description":"The projected issue card (SPEC.md §6.5's `IIssueCard`). Every field is OPTIONAL here because the shape is fields-projected: a caller that asked for `['uid','title']` gets a card with only those two keys populated. `uid` is always present regardless of the requested `fields` — an issue card with no addressable identity is never a useful response."}},"nextCursor":{"type":"string"},"hasMore":{"type":"boolean"}},"required":["view","items","hasMore"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["ready"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"closedAt":{"type":"string"},"gitContext":{"type":"string","description":"The item-level disclosure-contract git context (repo `AGENTS.md`'s \"Cite what you read\": the FIRST element of a `Citations:` block is `<active git context>`). A plain field — a sibling of `assignee` in `issue.meta.metadata`, read in the same single-row fetch. Rendered once at the head of the `Citations:` block by `markdown.ts`; never per-citation. Absent on every issue filed before the field existed, and on any issue whose `create`/`transition` supplied no `gitContext`."},"body":{"type":"string"},"citations":{"type":"array","items":{"$ref":"#/definitions/IIssueCitation"}},"notes":{"type":"array","items":{"$ref":"#/definitions/IIssueNote"}},"auditTrail":{"type":"array","items":{"$ref":"#/definitions/IIssueAuditEntry"}},"blockers":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"related":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"_score":{"type":"number"},"_vector":{"type":"array","items":{"type":"number"}}},"required":["uid"],"additionalProperties":false,"description":"The projected issue card (SPEC.md §6.5's `IIssueCard`). Every field is OPTIONAL here because the shape is fields-projected: a caller that asked for `['uid','title']` gets a card with only those two keys populated. `uid` is always present regardless of the requested `fields` — an issue card with no addressable identity is never a useful response."}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["graph"]},"graph":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"nodes":{"type":"array","items":{"type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"}},"required":["uid","title","status"],"additionalProperties":false}},"edges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"rel":{"type":"string","enum":["blocks","relates_to","part_of"]}},"required":["from","to","rel"],"additionalProperties":false}}},"required":["nodes","edges"],"additionalProperties":false,"description":"SPEC.md §5's `DependencyGraph`, using this system's edge vocabulary (§6.2: `blocks`, not `DEPENDS_ON`)."}},"required":["view","graph"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["order"]},"order":{"$schema":"http://json-schema.org/draft-07/schema#","oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":true},"order":{"type":"array","items":{"type":"string"}}},"required":["ok","order"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":false},"cycle":{"type":"array","items":{"type":"string"}}},"required":["ok","cycle"],"additionalProperties":false}],"x-apigen-logical":"union"}},"required":["view","order"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["stale"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"closedAt":{"type":"string"},"gitContext":{"type":"string","description":"The item-level disclosure-contract git context (repo `AGENTS.md`'s \"Cite what you read\": the FIRST element of a `Citations:` block is `<active git context>`). A plain field — a sibling of `assignee` in `issue.meta.metadata`, read in the same single-row fetch. Rendered once at the head of the `Citations:` block by `markdown.ts`; never per-citation. Absent on every issue filed before the field existed, and on any issue whose `create`/`transition` supplied no `gitContext`."},"body":{"type":"string"},"citations":{"type":"array","items":{"$ref":"#/definitions/IIssueCitation"}},"notes":{"type":"array","items":{"$ref":"#/definitions/IIssueNote"}},"auditTrail":{"type":"array","items":{"$ref":"#/definitions/IIssueAuditEntry"}},"blockers":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"related":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"_score":{"type":"number"},"_vector":{"type":"array","items":{"type":"number"}}},"required":["uid"],"additionalProperties":false,"description":"The projected issue card (SPEC.md §6.5's `IIssueCard`). Every field is OPTIONAL here because the shape is fields-projected: a caller that asked for `['uid','title']` gets a card with only those two keys populated. `uid` is always present regardless of the requested `fields` — an issue card with no addressable identity is never a useful response."}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["similar"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"closedAt":{"type":"string"},"gitContext":{"type":"string","description":"The item-level disclosure-contract git context (repo `AGENTS.md`'s \"Cite what you read\": the FIRST element of a `Citations:` block is `<active git context>`). A plain field — a sibling of `assignee` in `issue.meta.metadata`, read in the same single-row fetch. Rendered once at the head of the `Citations:` block by `markdown.ts`; never per-citation. Absent on every issue filed before the field existed, and on any issue whose `create`/`transition` supplied no `gitContext`."},"body":{"type":"string"},"citations":{"type":"array","items":{"$ref":"#/definitions/IIssueCitation"}},"notes":{"type":"array","items":{"$ref":"#/definitions/IIssueNote"}},"auditTrail":{"type":"array","items":{"$ref":"#/definitions/IIssueAuditEntry"}},"blockers":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"related":{"type":"array","items":{"$ref":"#/definitions/IIssueRef"}},"_score":{"type":"number"},"_vector":{"type":"array","items":{"type":"number"}}},"required":["uid"],"additionalProperties":false,"description":"The projected issue card (SPEC.md §6.5's `IIssueCard`). Every field is OPTIONAL here because the shape is fields-projected: a caller that asked for `['uid','title']` gets a card with only those two keys populated. `uid` is always present regardless of the requested `fields` — an issue card with no addressable identity is never a useful response."}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["overlap"]},"groups":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"axisValue":{"type":"string"},"uids":{"type":"array","items":{"type":"string"}}},"required":["axisValue","uids"],"additionalProperties":false,"description":"`view:'overlap'`'s output shape (§6.2) — one entry per distinct axis value shared by ≥1 of the input `uids`."}}},"required":["view","groups"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["projects"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"repoUrl":{"type":"string"},"monorepo":{"type":"boolean"},"description":{"type":"string"}},"required":["uid","name"],"additionalProperties":false}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["components"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"projectUid":{"type":"string"},"path":{"type":"string"},"description":{"type":"string"}},"required":["uid","name","projectUid"],"additionalProperties":false}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["locations"]},"items":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"locType":{"$ref":"#/definitions/ILocationType"},"value":{"type":"string"},"componentUid":{"type":"string"}},"required":["uid","locType","value","componentUid"],"additionalProperties":false}}},"required":["view","items"],"additionalProperties":false},{"type":"object","properties":{"view":{"type":"string","enum":["list","ready","stale","similar"]},"format":{"type":"string","enum":["markdown"]},"markdown":{"type":"string"}},"required":["view","format","markdown"],"additionalProperties":false}],"x-apigen-logical":"union"},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."},"IIssueCitation":{"type":"object","properties":{"uid":{"type":"string"},"file":{"type":"string"},"lines":{"type":"string"},"context":{"type":"string","description":"Free-text prose for this citation (the write layer's `ICitationInput.context`). NOT the item's disclosure-contract git context — that is ITEM-level provenance and lives on {@link IIssueCard.gitContext } , a sibling of `assignee`, rendered once at the head of the `Citations:` block. This per-citation `context` is never rendered by `markdown.ts` and cannot carry the git context."},"symbol":{"type":"string"},"sha":{"type":"string"},"at":{"type":"string"}},"required":["uid","file","sha","at"],"additionalProperties":false,"description":"A citation, projected for read (mirrors the write layer's `ICitationInput` shape plus the server-computed `sha`)."},"IIssueNote":{"type":"object","properties":{"uid":{"type":"string"},"author":{"type":"string"},"text":{"type":"string"},"at":{"type":"string"}},"required":["uid","author","text","at"],"additionalProperties":false},"IIssueAuditEntry":{"type":"object","properties":{"uid":{"type":"string"},"actor":{"type":"string"},"action":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"note":{"type":"string"},"sha":{"type":"string"},"at":{"type":"string"}},"required":["uid","actor","action","sha","at"],"additionalProperties":false},"IIssueRef":{"type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"}},"required":["uid","title","status"],"additionalProperties":false,"description":"A minimal cross-reference to another issue — used by the `blockers`/`related` pseudo-fields."},"ILocationType":{"type":"string","enum":["path","url","tool"]}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/types\").IIssueQueryInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/types\").IIssueQueryResult>"},"hasCtx":true},{"id":"backlog/priority-matrix","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"priorityMatrix","words":["priority","matrix"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"filter":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"uid or name (SPEC.md §6.1)."},"component":{"type":"string","description":"uid or name, scoped within `project`."},"kind":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"status":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"string","const":"open"},{"type":"string","const":"closed"},{"type":"string","const":"all"}]},"priority":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"assignee":{"type":"string"},"claimedBy":{"type":"string"},"author":{"type":"string","description":"Resolves via `authored_by` edge traversal — uid or name."},"grep":{"type":"string","description":"FTS keyword, title+body — keyword-only, never hybrid."},"semantic":{"type":"string","description":"Routes to `searchRanked` (§5a) — composes with `grep`, neither swallows the other."},"anchor":{"type":"string","description":"Item-anchored similarity/traversal seed (§6.1) — uid of the reference item."},"plan":{"type":"string","description":"uid or name of the parent `issue` this one is filed under via the `part_of` edge (SPEC.md §1052/§1471: a plan is itself an `issue` row, not a dedicated node kind — attaching an item to it is `relate(childUid, planUid, 'part_of', 'add')`). Resolves candidate issues by the incoming `part_of` edge into the resolved plan node, exactly like the `project`/`component` edge-scoped filters."},"projectPath":{"type":"string","description":"`component.meta.path` (repo-relative package path, SPEC.md §3) — exact match against every live `component` row, unioned across matches. Distinct from `component`, which takes a uid/name rather than a filesystem path."},"closedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"createdAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"updatedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false,"description":"SPEC.md §6.5's `IIssueFilter`."}},"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"rows":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"priority":{"type":"string"},"priorityUid":{"type":"string"},"rank":{"type":"number","description":"`priority.meta.metadata.rank` (`nextPriorityRankTx`, §2) — lower is more urgent. Absent only for a malformed pre-existing row with no numeric rank; the count itself is still real."},"count":{"type":"number"}},"required":["priority","priorityUid","count"],"additionalProperties":false}},"unassigned":{"type":"number"},"statusScope":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"x-apigen-logical":"union"}},"required":["rows","unassigned","statusScope"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IPriorityMatrixInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IPriorityMatrixResult>"},"hasCtx":true},{"id":"backlog/part-of-rollup","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"partOfRollup","words":["part","of","rollup"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"}},"required":["uid"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"childrenTotal":{"type":"number"},"childrenOpen":{"type":"number"},"childrenClosed":{"type":"number"},"childrenOpenUids":{"type":"array","items":{"type":"string"}}},"required":["uid","childrenTotal","childrenOpen","childrenClosed","childrenOpenUids"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IPartOfRollupInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IPartOfRollupResult>"},"hasCtx":true},{"id":"backlog/open-curve","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"openCurve","words":["open","curve"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"filter":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"project":{"type":"string","description":"uid or name (SPEC.md §6.1)."},"component":{"type":"string","description":"uid or name, scoped within `project`."},"kind":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"status":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"string","const":"open"},{"type":"string","const":"closed"},{"type":"string","const":"all"}]},"priority":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"assignee":{"type":"string"},"claimedBy":{"type":"string"},"author":{"type":"string","description":"Resolves via `authored_by` edge traversal — uid or name."},"grep":{"type":"string","description":"FTS keyword, title+body — keyword-only, never hybrid."},"semantic":{"type":"string","description":"Routes to `searchRanked` (§5a) — composes with `grep`, neither swallows the other."},"anchor":{"type":"string","description":"Item-anchored similarity/traversal seed (§6.1) — uid of the reference item."},"plan":{"type":"string","description":"uid or name of the parent `issue` this one is filed under via the `part_of` edge (SPEC.md §1052/§1471: a plan is itself an `issue` row, not a dedicated node kind — attaching an item to it is `relate(childUid, planUid, 'part_of', 'add')`). Resolves candidate issues by the incoming `part_of` edge into the resolved plan node, exactly like the `project`/`component` edge-scoped filters."},"projectPath":{"type":"string","description":"`component.meta.path` (repo-relative package path, SPEC.md §3) — exact match against every live `component` row, unioned across matches. Distinct from `component`, which takes a uid/name rather than a filesystem path."},"closedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"createdAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false},"updatedAt":{"type":"object","properties":{"since":{"type":"string"},"until":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false,"description":"SPEC.md §6.5's `IIssueFilter`."},"at":{"type":"array","items":{"type":"string"}}},"required":["at"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"points":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"at":{"type":"string"},"existed":{"type":"number","description":"In-scope issues that EXISTED at this instant (`NodeFilter.validAt`: `t_created <= at` and `t_invalid` is null or after `at`) — exact, never reconstructed."},"open":{"type":"number","description":"Of `existed`, the count whose RECONSTRUCTED status was non-terminal at this instant (never the issue's CURRENT status) — see {@link reconstructStatusAt } ."},"closed":{"type":"number","description":"`existed - open`."}},"required":["at","existed","open","closed"],"additionalProperties":false}}},"required":["points"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IOpenCurveInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/views/stats\").IOpenCurveResult>"},"hasCtx":true},{"id":"backlog/embedding-status","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"embeddingStatus","words":["embedding","status"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{},"required":[]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"configuredEnabled":{"type":"boolean"},"effectiveEnabled":{"type":"boolean"},"provider":{"type":"string"},"model":{"type":"string"},"membersPresent":{"type":"object","properties":{"embedding":{"type":"boolean"},"search":{"type":"boolean"}},"required":["embedding","search"],"additionalProperties":false},"divergent":{"type":"boolean"},"startupHash":{"type":"string"},"currentHash":{"type":"string"}},"required":["configuredEnabled","effectiveEnabled","provider","model","membersPresent","divergent","startupHash","currentHash"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"()","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/api\").IEmbeddingStatusResult>"},"hasCtx":true},{"id":"backlog/lookup","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"lookup","words":["lookup"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"q":{"type":"string"}},"required":["q"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"project":{"type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"repoUrl":{"type":"string"}},"required":["uid","name"],"additionalProperties":false},"component":{"type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"}},"required":["uid","name"],"additionalProperties":false},"location":{"type":"object","properties":{"uid":{"type":"string"},"locType":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["path","url","tool"]},"value":{"type":"string"}},"required":["uid","locType","value"],"additionalProperties":false},"hint":{"type":"string"}},"required":["project"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: { q: string; })","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/query/types\").ILookupResult>"},"hasCtx":true},{"id":"backlog/create","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"create","words":["create"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"citations":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"file":{"type":"string"},"lines":{"type":"string"},"context":{"type":"string"},"symbol":{"type":"string"},"blastRadius":{"description":"Best-effort enrichment payload — not re-specified here; carried through verbatim into the citation node's metadata."}},"required":["file"],"additionalProperties":false,"description":"A filing-time citation (§6.3.2, carried forward from the established `Citation` shape in spirit — `blastRadius` stays best-effort, `model.ts:110-120`). Named `ICitationInput` here (not the spec's bare `Citation`) per this repo's \"prefix shared/data interfaces with `I`\" convention."}},"author":{"type":"string"},"assignee":{"type":"string"},"gitContext":{"type":"string"},"by":{"type":"string"},"duplicateAction":{"type":"string","enum":["abort","force","comment"]},"awaitEmbed":{"type":"boolean"}},"required":["title","body","project","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"created":{"type":"boolean"},"uid":{"type":"string"},"item":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"priority":{"type":"string"},"project":{"type":"string"},"component":{"type":"string"},"createdAt":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"closedAt":{"type":"string"},"gitContext":{"type":"string","description":"The item-level disclosure-contract git context, echoed back from {@link ICreateIssueInput.gitContext } — present iff one was supplied."}},"required":["uid","title","kind","status","project","component","createdAt"],"additionalProperties":false,"description":"The \"plain\" card fields (§6.5) this verb already has in hand after a create — never field-projected, unlike a `query` response.\n\nBUG-APIGEN-CORE-CLIENT-BARE-NAME-COLLISION-001: named `ICreateIssueCard`, not `IIssueCard`, deliberately. `query/types.ts` also exports an `IIssueCard` (the fields-projected card `query`/`get` return, every field but `uid` optional) — both interfaces were reachable from `api.d.ts`'s type graph, and apigen's extraction (`ts-json-schema-generator`, invoked per-operation but apparently resolving/caching declarations by bare name across the whole extracted program) non-deterministically resolved the `IIssueCard` bare name to EITHER declaration depending on extraction order — confirmed empirically: `dist/index.js` (CJS) resolved `query`'s own `items: IIssueCard[]` to THIS file's stricter shape (wrongly requiring `project`/`component`/`createdAt`), while `dist/index.mjs` (ESM) failed to resolve it at all (`items: {}`, unconstrained) — from the exact same source, built in the same pass. This is what broke `backlog_query`'s MCP `oneOf` output-schema validation the moment `get()`'s return type union (AC-11) made the extractor visit both `IIssueCard` declarations. The correct, permanent fix is what's below: give the two interfaces distinct bare names so extraction can never conflate them, not a workaround in the `get()`/`query()` call sites. Filed as BUG-APIGEN-CORE-CLIENT-BARE-NAME-COLLISION-001 (apigen-core-client, out of this package's ownership) — this rename is the local mitigation; the extractor itself should also stop keying declarations by bare name.\n\nThis rename fixes the CJS path (`dist/index.js`, the only bundle any real transport here — CLI, MCP-stdio, HTTP serve — ever spawns/requires; confirmed empirically, `dist/index.mjs` is loaded by none of them). It does NOT fix a second, DISTINCT defect also present in `dist/index.mjs`: every `$ref` to a NAMED exported interface (`ICreateIssueCard` here, `IDuplicateCandidate`, `IIssueCard`, …) dereferences to `{}` (empty/ unconstrained) in the ESM build specifically, while inline/anonymous object types on the SAME operation (e.g. `ICreateIssueResult.commentedOn`) resolve correctly in both builds — ruling out a general extraction failure and pointing at `dereferenceSchema`'s named-`$ref` resolution specifically misbehaving under ESM. Reproduced on `create`'s `item`/ `duplicateCandidates` fields, which this file's own diff never touched, so it predates and is independent of the collision above. Filed separately as BUG-APIGEN-CORE-CLIENT-ESM-DEREF-EMPTY-001 — not fixed here (out of this package's ownership, and no real consumer loads `dist/index.mjs` today), but must not be silently dropped."},"duplicateCandidates":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"title":{"type":"string"},"score":{"type":"number","description":"Cosine similarity in `[0,1]`, straight off the vector channel — directly comparable to `project_policy.dedupe_threshold`."}},"required":["uid","title","score"],"additionalProperties":false,"description":"A dedupe candidate surfaced at filing time (§6.4), carrying the cosine similarity that produced it — see {@link scanForDuplicates } 's own doc comment for where that number comes from and why it is the only score this gate will accept."}},"reason":{"type":"string","enum":["duplicate-suppressed"]},"supersededUid":{"type":"string"},"commentedOn":{"type":"object","properties":{"uid":{"type":"string"},"noteId":{"type":"string"}},"required":["uid","noteId"],"additionalProperties":false}},"required":["created"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/create-issue\").ICreateIssueInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/create-issue\").ICreateIssueResult>"},"hasCtx":true},{"id":"backlog/update","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"update","words":["update"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"by":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"kind":{"type":"string"},"priority":{"type":"string"},"assignee":{"type":"string"},"author":{"type":"string"},"awaitEmbed":{"type":"boolean"}},"required":["uid","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"changed":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["title","body","kind","priority","assignee","author"]}}},"required":["uid","changed"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/update\").IUpdateIssueInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/update\").IUpdateIssueOutcome>"},"hasCtx":true},{"id":"backlog/transition","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"transition","words":["transition"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"by":{"type":"string"},"toStatus":{"type":"string"},"note":{"type":"string"},"citations":{"type":"array","items":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"file":{"type":"string"},"lines":{"type":"string"},"context":{"type":"string"},"symbol":{"type":"string"},"blastRadius":{"description":"Best-effort enrichment payload — not re-specified here; carried through verbatim into the citation node's metadata."}},"required":["file"],"additionalProperties":false,"description":"A filing-time citation (§6.3.2, carried forward from the established `Citation` shape in spirit — `blastRadius` stays best-effort, `model.ts:110-120`). Named `ICitationInput` here (not the spec's bare `Citation`) per this repo's \"prefix shared/data interfaces with `I`\" convention."}},"gitContext":{"type":"string"}},"required":["uid","by","toStatus"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"fromStatus":{"type":"string"},"toStatus":{"type":"string"},"closedAt":{"type":"string"},"transitionUid":{"type":"string"}},"required":["uid","fromStatus","toStatus","transitionUid"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/transition\").ITransitionInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/transition\").ITransitionOutcome>"},"hasCtx":true},{"id":"backlog/claim","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"claim","words":["claim"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"by":{"type":"string"},"action":{"type":"string","enum":["claim","release","renew"]},"force":{"type":"boolean"}},"required":["uid","by","action"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"status":{"type":"string","enum":["claimed","held","reclaimed-stale","renewed","released","release-noop"]},"claimedBy":{"type":"string"},"claimedAt":{"type":"string"},"heldBy":{"type":"string"},"heldSince":{"type":"string"},"previousClaimant":{"type":"string"},"wasClaimedBy":{"type":"string"}},"required":["uid","status"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/claim\").IClaimInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/claim\").IClaimOutcome>"},"hasCtx":true},{"id":"backlog/relate","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"relate","words":["relate"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"sourceUid":{"type":"string"},"targetUid":{"type":"string"},"rel":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["relates_to","supersedes","blocks","duplicate_of","part_of"],"description":"The closed `rel` union `relate` accepts (§3/§6.3.6) — issue → issue in every case."},"action":{"type":"string","enum":["add","remove"]},"by":{"type":"string"}},"required":["sourceUid","targetUid","rel","action","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"sourceUid":{"type":"string"},"targetUid":{"type":"string"},"rel":{"type":"string"},"action":{"type":"string","enum":["add","remove"]},"noop":{"type":"boolean"}},"required":["sourceUid","targetUid","rel","action","noop"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/relate\").IRelateInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/relate\").IRelateOutcome>"},"hasCtx":true},{"id":"backlog/move","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"move","words":["move"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"toProject":{"type":"string"},"toComponent":{"type":"string"},"by":{"type":"string"}},"required":["uid","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"noop":{"type":"boolean"},"fromProject":{"type":"string"},"toProject":{"type":"string"},"fromComponent":{"type":"string"},"toComponent":{"type":"string"}},"required":["uid","noop","fromProject","toProject","fromComponent","toComponent"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/move\").IMoveIssueInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/move\").IMoveIssueOutcome>"},"hasCtx":true},{"id":"backlog/upsert-project","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"upsertProject","words":["upsert","project"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"repoUrl":{"type":"string"},"monorepo":{"type":"boolean"},"description":{"type":"string"},"by":{"type":"string"}},"required":["name","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"created":{"type":"boolean"},"project":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"repoUrl":{"type":"string"},"monorepo":{"type":"boolean"},"description":{"type":"string"}},"required":["uid","name"],"additionalProperties":false}},"required":["uid","created","project"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertProjectInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertProjectOutcome>"},"hasCtx":true},{"id":"backlog/upsert-component","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"upsertComponent","words":["upsert","component"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"project":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"description":{"type":"string"},"by":{"type":"string"}},"required":["project","name","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"created":{"type":"boolean"},"component":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"name":{"type":"string"},"projectUid":{"type":"string"},"path":{"type":"string"},"description":{"type":"string"}},"required":["uid","name","projectUid"],"additionalProperties":false}},"required":["uid","created","component"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertComponentInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertComponentOutcome>"},"hasCtx":true},{"id":"backlog/upsert-location","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"upsertLocation","words":["upsert","location"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"component":{"type":"string"},"project":{"type":"string"},"locType":{"$schema":"http://json-schema.org/draft-07/schema#","type":"string","enum":["path","url","tool"]},"value":{"type":"string"},"by":{"type":"string"}},"required":["component","locType","value","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"created":{"type":"boolean"},"location":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"uid":{"type":"string"},"locType":{"$ref":"#/definitions/ILocationType"},"value":{"type":"string"},"componentUid":{"type":"string"}},"required":["uid","locType","value","componentUid"],"additionalProperties":false}},"required":["uid","created","location"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."},"ILocationType":{"type":"string","enum":["path","url","tool"]}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertLocationInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IUpsertLocationOutcome>"},"hasCtx":true},{"id":"backlog/rm-location","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"rmLocation","words":["rm","location"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"by":{"type":"string"},"reason":{"type":"string"}},"required":["uid","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"invalidated":{"type":"boolean","const":true}},"required":["uid","invalidated"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IRmLocationInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/catalog\").IRmLocationOutcome>"},"hasCtx":true},{"id":"backlog/delete","host":"ts","namespace":{"raw":"backlog","words":["backlog"]},"path":[{"raw":"delete","words":["delete"]}],"kind":"action","async":false,"streaming":false,"safe":false,"input":{"type":"object","properties":{"input":{"type":"object","properties":{"uid":{"type":"string"},"reason":{"type":"string"},"by":{"type":"string"},"awaitEmbed":{"type":"boolean"}},"required":["uid","reason","by"],"additionalProperties":false}},"required":["input"]},"output":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":false},"error":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"code":{"$ref":"#/definitions/BacklogErrorCode"},"message":{"type":"string"},"details":{"$ref":"#/definitions/IOutcomeErrorDetails"}},"required":["code","message"],"additionalProperties":false,"description":"The error arm's payload."},"warnings":{"type":"array","items":{"type":"string"}}},"required":["ok","error"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":true},"data":{"type":"object","properties":{"uid":{"type":"string"},"invalidated":{"type":"boolean","const":true}},"required":["uid","invalidated"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"meta":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"total":{"type":"number","description":"Matching rows before limit/offset — the TRUE count."},"returned":{"type":"number","description":"Rows actually in `data`."},"limit":{"type":"number"},"offset":{"type":"number"},"truncated":{"type":"boolean","description":"Set when the result set was cut short by anything other than the caller's own `limit`. A silent cap is forbidden — if it happens, it is stated here."}},"required":["total","returned"],"additionalProperties":false,"description":"Pagination truth carried beside the data. `total` is the count BEFORE `limit`/`offset`; `returned` is `data.length`. A silently-truncated list is indistinguishable from a complete one unless the envelope says how many there really were."}},"required":["ok","data"],"additionalProperties":false}],"x-apigen-logical":"union","definitions":{"BacklogErrorCode":{"type":"string","enum":["not_found","item_not_found","invalid_argument","validation","store_busy","rag_not_configured","conflict","precondition_failed","internal"],"description":"The closed union of envelope error codes. See {@link BACKLOG_ERROR_CODES } ."},"IOutcomeErrorDetails":{"type":"object","properties":{"retryable":{"type":"boolean","description":"True only for transient codes (today: `store_busy`)."},"retryAfterMs":{"type":"number","description":"Suggested backoff in milliseconds; only meaningful when `retryable`."},"internalRef":{"type":"string","description":"Internal doc/plan reference for an `invalid_argument` whose underlying reason cites internal terminology (a plan id, a spec section) that does not belong in the user-facing `message`."}},"additionalProperties":{},"description":"`error.details`. `retryable`/`retryAfterMs` exist so an agent knows whether to retry a `store_busy` and with what backoff instead of hot-looping. Open-ended beyond those: individual codes attach their own evidence."}}},"envelope":{},"typeText":{"lang":"ts","input":"(input: import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/delete\").IDeleteIssueInput)","output":"import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/envelope\").IOutcomeEnvelope<import(\"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/write/delete\").IDeleteIssueOutcome>"},"hasCtx":true}],"extractorVersion":"0.3.2","createdAt":"2026-09-26T19:33:28.161Z","artifactSource":{"path":"/Users/nix/dev/node/adhd/entrypoint/backlog/dist/api.d.ts","sha256":"ebfcef5f1d5890f7b6442890b59613fa8583e9d8d2353b12ad98e0b1110bda52","bytes":10898,"deps":{"api.d.ts":"ebfcef5f1d5890f7b6442890b59613fa8583e9d8d2353b12ad98e0b1110bda52","cli.d.ts":"51a94638d3c71e0769022a71ae271a286e5f34cb3b43e60926bf7c0a635317fa","env.d.ts":"b8dbe8fb14a7dda4745fdac154dacdf8bacec49657830c88bf9344fed84a69d2","envelope.d.ts":"47e8ff09adbc9c5160ec4a8118a4a3597cfad14e5675039957c9e7725cf62479","extract-live.d.ts":"11a6c52c95a703deeae932b5813922bd7773a544904ce0e4c06c6466d3049934","index.d.ts":"13e093553b00376125c0719b0610a96fd0ee2e14ec8d948e0d27f1fd79396a33","install-skill.d.ts":"ac52fbea0674a76508a1b38ce2791191e1d6fa8ced8099dd5da81a18b68d1aa2","install.d.ts":"cc9944d6ec2d12af9963deecf2a2f288e433d1f59cfdba8a9ca9b3b4613b4f31","ir-artifact.d.ts":"10a615c14f483f24f01b6b3c53d38320d6c4aa10ebdb1bc4b5c2da4f84b59e8e","query/card.d.ts":"a4902fc8e3ea4ee8f80e74523c35d8c72b6df4949f4b724b2e3b52431ae93343","query/get.d.ts":"ed9344df7f91cad622c6e531883ce72fd6512b8ad7bc2a81ec65947d02c5de3a","query/index.d.ts":"2426d6dc6e3e7e3f2a5ae440250b6233e56edd5aac400bd9dea5ee878501e290","query/markdown.d.ts":"0aefdc5c216491ec2d98986c834fd66da5969c36da55e1c5c92030f2f79a8e87","query/query.d.ts":"a0057624aeecc10ce175919382cfd1c3bb86daa283fff82470d8000be6dde3d5","query/resolve.d.ts":"399d3d9f83ac4b78b20f7be5c047b4aa9bbed5eda7fef50c8e602bf01b24b6c9","query/types.d.ts":"83a6e4c0bc43f497ffe30b86d95799c823f09f4a93adff3acda2ec2cd4ddf231","query/views/registry.d.ts":"5baee362c591688fe5ea38f8fd3586f80cccb09a2bf6166d3e9e155307bdd08a","query/views/semantic.d.ts":"6ab4a6fe8967e4a79a3d720e006355278e7aaf74ddba1eb2ada829ba90c7d8ed","query/views/stats.d.ts":"5e98526a9d5978e2fbfac2a90c485f5d1b13cec6ca788fdb16e4412e3fc9ab8e","search-shortcut.d.ts":"a9575c3cc4496566859900935031a0e2607f134b557cd3a4462382255dbc0126","serve.d.ts":"768604b57bfd1c31a9a2900d10e77e7a619f4d201f1d6c9f4641e1504e9a0a1c","server.d.ts":"f84b29cd101b50ee0c97c86d3da49f742c9759d55ba0905486ee78b0438cded2","store/graph-backlog-store.d.ts":"1fe364b91a951677f756e0d44f00baab412be040aaed9938e89dc2c8996b9bee","store/immediate-retry.d.ts":"db564719cb7e75e13275a90872de72ff8f7fd4798c73351677ed32329eb52173","store/signal-cleanup.d.ts":"f2b7fa6071337f862891653d02df99db06feff18bf090e048b1f382a6b21e0d1","store/type-policy.d.ts":"8c46b0611170294765383b9f00791e4fd855185a62c69943219f2d40fa3e9415","store/vocabulary-guard.d.ts":"84c88bc4c825977f48f46efec5667b70cbd50195f0c8bafdbe4eb36154b041b0","version-info.d.ts":"9d2a66fb1dc9a9fa227cdb224c53ff5695ad21b23de66c4be1e02e67c9c08eb3","write/audit.d.ts":"b4871edceb1d2c4fbadf0b1801afdd84138e26a7351011b17e81b5dff0e3bf26","write/bootstrap.d.ts":"652fdfcb1d81e5b0569e64e1f588eb2fbe70411e16553a3043ac5e80e9d68276","write/catalog.d.ts":"96d42ba76b7ed017213fd8244a5b30f4e72ea629d03d6db2823d2ff4e5b69068","write/citation-path.d.ts":"78a01a711ec78cba6be9a1e1ef4709c3f8b12bacf8f8b84ea44531702579516f","write/claim-lease.d.ts":"a742912d7d74e5c0221792effdd15452a23e195a88c299e3f7cd60ed26fdc4ff","write/claim.d.ts":"0897712218653b4d71fd5031b65b73e13fe9a56c64f6c348ef1b2d8aed7de2c2","write/create-issue.d.ts":"970c4e87cf478c7c7fff2e7814358e44aa28a686ee3760caafbb5ba0920da9f0","write/delete.d.ts":"73577bd1340a8cb8d078d97d0a7417cf3c1031d3e95ed16d9d087801da6b80df","write/embed-drain.d.ts":"a6295da99822d289187e506281545ca09da490bcda56c497d5571ab674872209","write/embedding-config.d.ts":"b3245db358bf7bbd7db94f412be613b8bb4ac9b3d7b778f07ca019b062c785f1","write/embedding-observer.d.ts":"2ccac6173aba3830bf60652cbf916250d7765f5d704364205a5e08c3f0f4969f","write/errors.d.ts":"4bc96015cf6e93037a0204a518b7984fad988e22218fda4fe1e73aa59ca1d0fe","write/issue-status.d.ts":"0df49e4e88d69122d545037c36e97b67da9bec1e882877833bb33077dc10d753","write/move.d.ts":"3dbe164e938a9cb4459231b3c61b9fae89e9c21d8aa7de3fed719732da9fc62e","write/relate.d.ts":"7567c5e07a78b332999591fa77eede9a3d33b5db5d5b3fb5588588be57b4f1ca","write/transition.d.ts":"a8fe06f6476fbb7a31ca6caa3d740a3834caf005a71704f63199df7726bce12e","write/tx.d.ts":"69bbc426befa9919b87659e176456c1a641094e25a3a5a82e89476f60a38eb12","write/update.d.ts":"3901403b32b892d19df57f68f0824c4f8d70d6d0b9d3583fd0e155441c036311"}}}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ExtractOptions, Operation } from '@adhd/apigen-core-client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The namespace every backlog extraction runs under. Exported so the shared
|
|
5
|
+
* options builder and any caller that needs the same value read ONE constant
|
|
6
|
+
* rather than a repeated string literal.
|
|
7
|
+
*/
|
|
8
|
+
export declare const BACKLOG_EXTRACT_NAMESPACE = "backlog";
|
|
9
|
+
/**
|
|
10
|
+
* The SINGLE source of truth for the extraction OPTIONS this host always runs
|
|
11
|
+
* (design doc Revision 3's "baked ops are byte-identical to the fallback's"
|
|
12
|
+
* guarantee). Both extraction sites consume it:
|
|
13
|
+
*
|
|
14
|
+
* - {@link buildBakedOperations} — the BAKE step (no invoker, no cache).
|
|
15
|
+
* - the terminal `extract()` inside {@link getExtractInvoke} — the runtime
|
|
16
|
+
* FALLBACK's cache-MISS path.
|
|
17
|
+
*
|
|
18
|
+
* Previously each hand-wrote the same `{ namespace: 'backlog',
|
|
19
|
+
* dropFileSegment: true, tsconfig }` literal, so the "cannot drift" claim held
|
|
20
|
+
* only until someone edited one and not the other — at which point the baked
|
|
21
|
+
* surface would silently stop matching the fallen-back surface. One builder
|
|
22
|
+
* makes a change to any of these options impossible to apply to only one path.
|
|
23
|
+
*
|
|
24
|
+
* `dropFileSegment: true` (`ExtractOptions`, `@adhd/apigen-core-client`):
|
|
25
|
+
* without it every op's `path` would start with the source file's basename
|
|
26
|
+
* (`'api-d'`), leaking into every transport's name (`backlog api_d get-item`
|
|
27
|
+
* instead of `backlog get-item`). Safe here because every backlog operation is
|
|
28
|
+
* extracted from the ONE `api.d.ts`, so there is no cross-file name to
|
|
29
|
+
* disambiguate against; a genuine same-name collision would still be caught at
|
|
30
|
+
* extract time by `checkCollisions` (`@adhd/apigen-engine-naming`).
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildBacklogExtractOptions(source: string, tsconfig?: string): ExtractOptions;
|
|
33
|
+
/**
|
|
34
|
+
* DETERMINISTIC, cache-bypassing extraction of `apiDts`.
|
|
35
|
+
*
|
|
36
|
+
* Runs the EXACT extraction {@link extractApiOperationsLive} would run on a
|
|
37
|
+
* cache MISS — the SAME {@link buildBacklogExtractOptions} literal, so this
|
|
38
|
+
* host has ONE definition of its extraction options (see that builder) — with
|
|
39
|
+
* no invoker and no cache in the path. Used by the `ir-artifact` build
|
|
40
|
+
* subcommand to author `dist/api.ir.json`; the artifact's operations are
|
|
41
|
+
* therefore byte-identical to what the runtime fallback would produce for the
|
|
42
|
+
* same file, which is what lets `server.ts` prefer the artifact without
|
|
43
|
+
* changing downstream schema composition.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildBakedOperations(apiDts: string): Promise<Operation[]>;
|
|
46
|
+
/**
|
|
47
|
+
* The runtime FALLBACK extraction: derive `client.ts`'s mounted operations by
|
|
48
|
+
* running the IR-cache invoker (a cache HIT returns the cached `Operation[]`
|
|
49
|
+
* without re-running `extract()`; a MISS runs `extract()` and writes the
|
|
50
|
+
* result through). Imported dynamically, and only when the baked artifact is
|
|
51
|
+
* missing/stale — never on the hot path.
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractApiOperationsLive(opts?: {
|
|
54
|
+
adhdRoot?: string;
|
|
55
|
+
instanceId?: string;
|
|
56
|
+
}): Promise<Operation[]>;
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { get, query, priorityMatrix, partOfRollup, openCurve, lookup, create, update, transition, claim, relate, move, upsertProject, upsertComponent, upsertLocation, rmLocation, delete, } from './api.js';
|
|
2
|
-
export type { BacklogCtx } from './api.js';
|
|
1
|
+
export { get, query, priorityMatrix, partOfRollup, openCurve, embeddingStatus, lookup, create, update, transition, claim, relate, move, upsertProject, upsertComponent, upsertLocation, rmLocation, delete, } from './api.js';
|
|
2
|
+
export type { BacklogCtx, IEmbeddingStatusResult } from './api.js';
|
|
3
3
|
export * from './envelope.js';
|
|
4
4
|
export { startBacklogServer, buildBacklogApigenPackage, resolveExpectedMcpToolNames, } from './server.js';
|
|
5
5
|
export type { StartOpts } from './server.js';
|