@equationalapplications/mcp-server 7.17.0 → 7.17.2
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/dist/cli.js +15 -4
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +15 -4
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +3 -3
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/authmd.ts","../contract/synapsetree-openapi.subset.json","../src/contract.ts","../src/client.ts","../src/credentials.ts","../src/tools/shared.ts","../src/tools/graph-traverse.ts","../src/tools/memory-ingest.ts","../src/tools/memory-log-event.ts","../src/tools/memory-remember.ts","../src/tools/memory-search.ts","../src/tools/memory-supersede.ts","../src/tools/namespaces-list.ts","../src/tools/whoami.ts","../src/tools/index.ts","../src/version.ts","../src/server.ts","../src/commands.ts","../src/cli.ts"],"names":["ZodError","resolve","randomUUID","homedir","join","readFile","mkdir","chmod","writeFile","rename","unlink","z","createHash","McpServer","StdioServerTransport"],"mappings":"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","file":"cli.js","sourcesContent":["import { ZodError } from 'zod';\n\nexport interface SynapseTreeErrorInit {\n status: number;\n code: string;\n detail?: string;\n requestId?: string;\n retryAfterSeconds?: number;\n}\n\n/** A SynapseTree API error (problem+json, an OAuth error body, or a gateway rejection). */\nexport class SynapseTreeError extends Error {\n readonly status: number;\n readonly code: string;\n readonly detail?: string;\n readonly requestId?: string;\n readonly retryAfterSeconds?: number;\n\n constructor(init: SynapseTreeErrorInit) {\n super(init.detail ? `${init.code}: ${init.detail}` : init.code);\n this.name = 'SynapseTreeError';\n this.status = init.status;\n this.code = init.code;\n this.detail = init.detail;\n this.requestId = init.requestId;\n this.retryAfterSeconds = init.retryAfterSeconds;\n }\n}\n\n/** A local mistake: missing configuration or bad input. Never an HTTP failure. */\nexport class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UsageError';\n }\n}\n\nexport const NO_NAMESPACE_MESSAGE =\n 'No namespace configured. Run `synapsetree-mcp config set namespace repo:<name>`, or pass `namespace`.';\n\nexport const NO_KEY_MESSAGE =\n 'No API key. Run `synapsetree-mcp auth --key stree_…` or `synapsetree-mcp auth --email you@example.com`.';\n\nexport const INGEST_PROVIDER_MESSAGE =\n 'Requires the account owner to have registered an extraction provider in the dashboard (bring-your-own-key). ' +\n 'Otherwise the server answers `inference_not_configured`; tell the user to register a provider at https://synapsetree.dev/dashboard.';\n\nconst DETAIL_CODES = new Set([\n 'quota_exceeded',\n 'payload_too_large',\n 'invalid_request',\n 'not_found',\n 'conflict',\n 'invalid_state',\n 'source_hash_conflict',\n 'idempotency_key_reused',\n 'ontology_violation',\n]);\n\nconst TRANSIENT_CODES = new Set(['namespace_busy', 'fenced', 'unavailable', 'idempotency_in_progress']);\n\nfunction describe(err: SynapseTreeError): string {\n switch (err.code) {\n case 'unauthorized':\n return 'SynapseTree rejected the stored API key (revoked, unknown, or its database is not reachable). Ask the user to run `synapsetree-mcp auth`.';\n case 'insufficient_scope':\n return 'This key cannot do that. The account owner does it in the dashboard at https://synapsetree.dev/dashboard.';\n case 'subscription_inactive':\n return \"The organization's SynapseTree plan is paused. Reads and export still work in the dashboard.\";\n case 'inference_not_configured':\n return INGEST_PROVIDER_MESSAGE;\n case 'upstream_inference_unavailable':\n return \"The account owner's inference provider is failing; searches fall back to keywords. Retry ingest later.\";\n case 'rate_limited':\n return `Rate limited by SynapseTree; retry after ${err.retryAfterSeconds !== undefined ? `${err.retryAfterSeconds} seconds` : 'a few seconds'}.`;\n case 'not_implemented':\n return 'SynapseTree has not enabled this operation yet (501). Tell the user; nothing to fix locally.';\n default:\n if (DETAIL_CODES.has(err.code)) return `${err.code}: ${err.detail ?? ''}`.trimEnd();\n if (TRANSIENT_CODES.has(err.code)) return 'SynapseTree is temporarily unavailable; retry in a few seconds.';\n return `${err.code}${err.detail ? `: ${err.detail}` : ''} (HTTP ${err.status})`;\n }\n}\n\n/** One paragraph a model can act on. Never throws. */\nexport function toolErrorText(err: unknown): string {\n if (err instanceof SynapseTreeError) {\n const text = describe(err);\n return err.requestId ? `${text} (request-id: ${err.requestId})` : text;\n }\n if (err instanceof ZodError) {\n return err.issues.map((i) => `${i.path.join('.') || '(input)'}: ${i.message}`).join('\\n');\n }\n if (err instanceof Error) return err.message;\n if (typeof err === 'string') return err;\n return 'Unknown error';\n}\n","import type { SynapseTreeClient } from './client';\nimport { SynapseTreeError } from './errors';\n\nexport interface AuthmdOptions {\n /** Human-facing progress lines (the CLI sends them to stderr). Never contains secrets. */\n info: (line: string) => void;\n sleep?: (ms: number) => Promise<void>;\n now?: () => number;\n /** Default 16 minutes: the claim itself expires after 15. */\n deadlineMs?: number;\n}\n\nexport interface RegisterResult {\n apiKey: string;\n accountId: string | null;\n}\n\nexport class ClaimError extends Error {\n readonly code: string;\n constructor(code: string, message: string) {\n super(message);\n this.name = 'ClaimError';\n this.code = code;\n }\n}\n\ninterface Registration {\n claim_token: string;\n user_code: string;\n poll: { token_endpoint: string; grant: string; interval?: number };\n}\n\ninterface TokenOk { access_token: string; token_type: string; account_id?: string; scope?: string }\ninterface TokenErr { error: string; error_description?: string; error_uri?: string; interval?: number }\n\nconst EXPIRED_MESSAGE = 'The claim expired (15 minutes) or was already used. Run `synapsetree-mcp auth --email` again.';\nconst REMEDY_CODES = new Set(['key_limit_reached', 'database_name_taken', 'database_quota_exceeded']);\n\nexport async function registerByEmail(client: SynapseTreeClient, email: string, opts: AuthmdOptions): Promise<RegisterResult> {\n const sleep = opts.sleep ?? ((ms) => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n const now = opts.now ?? Date.now;\n const deadline = now() + (opts.deadlineMs ?? 16 * 60 * 1000);\n\n const reg = (await client.call<Registration>('registerAgentIdentity', { body: { email } })).data;\n if (!reg || typeof reg !== 'object' || !reg.poll || typeof reg.user_code !== 'string' || typeof reg.claim_token !== 'string' || typeof reg.poll.grant !== 'string' || typeof reg.poll.token_endpoint !== 'string') {\n throw new ClaimError('invalid_response', 'The registration endpoint returned a malformed response.');\n }\n // Fail closed on a server-chosen token endpoint: posting the claim token\n // anywhere other than the configured base URL would be a phishing vector.\n if (reg.poll.token_endpoint !== `${client.baseUrl}/oauth2/token`) {\n throw new ClaimError('invalid_response', `The server returned an unexpected token endpoint (${reg.poll.token_endpoint}); expected ${client.baseUrl}/oauth2/token.`);\n }\n // A poll that failed ambiguously (network error or 5xx after the server may\n // have committed the 200) can leave a minted key undelivered; if the claim\n // then comes back invalid_grant, say so instead of claiming it expired.\n let ambiguousPoll = false;\n // Clamp to >= 1 s: a server sending interval 0 (or negative) must not\n // turn the poll loop into a hammer on /oauth2/token.\n let intervalSeconds = Math.max(1, reg.poll.interval ?? 5);\n\n opts.info(`Check ${email} for a SynapseTree approval link (usually within a minute; it expires in 15 minutes).`);\n opts.info(`Approve only if the page shows this code: ${reg.user_code}`);\n\n for (;;) {\n const remaining = deadline - now();\n if (remaining <= 0) throw new ClaimError('invalid_grant', EXPIRED_MESSAGE);\n // Bound the wait: a hostile or buggy `interval` (or 1e9) must neither\n // park the CLI past the deadline nor hammer the endpoint (min 1 s,\n // max 60 s, never past the deadline — and remaining > 0 is guaranteed\n // by the check above, so the loop always advances the clock).\n await sleep(Math.min(Math.max(intervalSeconds, 1), 60, remaining) * 1000);\n\n let res;\n try {\n res = await client.call<TokenOk | TokenErr>('oauthToken', { form: { grant_type: reg.poll.grant, assertion: reg.claim_token } });\n } catch (err) {\n // server_error (500), 408, network errors, and a surviving 429 are\n // transient: keep polling at the current interval. A 429 asks us to\n // slow down, so add 5 s like the slow_down case below. A 408 is\n // ambiguous the same way a 5xx is: the server may have committed the\n // 200 before the request timed out.\n if (err instanceof SynapseTreeError && (err.status >= 500 || err.status === 0 || err.status === 408 || err.status === 429)) {\n if (err.status === 429) intervalSeconds += 5;\n else ambiguousPoll = true;\n continue;\n }\n throw err;\n }\n\n if (res.status === 200) {\n const ok = res.data as TokenOk;\n if (!ok || typeof ok !== 'object' || typeof ok.access_token !== 'string') {\n throw new ClaimError('invalid_response', 'The token endpoint returned a malformed success response.');\n }\n return { apiKey: ok.access_token, accountId: ok.account_id ?? null };\n }\n\n const body = res.data as TokenErr;\n if (!body || typeof body !== 'object' || typeof body.error !== 'string') {\n throw new ClaimError('invalid_response', 'The token endpoint returned a malformed error response.');\n }\n switch (body.error) {\n case 'authorization_pending':\n if (typeof body.interval === 'number') intervalSeconds = Math.max(1, body.interval);\n continue;\n case 'slow_down':\n intervalSeconds = typeof body.interval === 'number' ? Math.max(1, body.interval) : intervalSeconds + 5;\n continue;\n case 'invalid_grant':\n throw new ClaimError(\n 'invalid_grant',\n ambiguousPoll\n ? 'A key may have been issued but was not received (a poll failed ambiguously before the claim was freed). Check the SynapseTree dashboard for an unexpected agent key, revoke it, then run `synapsetree-mcp auth --email` again.'\n : EXPIRED_MESSAGE,\n );\n default:\n if (REMEDY_CODES.has(body.error)) {\n opts.info(`${body.error}: ${body.error_description ?? 'the account owner must clear this in the dashboard'}${body.error_uri ? ` — ${body.error_uri}` : ''}`);\n opts.info('Waiting; approve again once it is fixed.');\n continue;\n }\n throw new ClaimError(body.error, `${body.error}${body.error_description ? `: ${body.error_description}` : ''}`);\n }\n }\n}\n","{\n \"openapi\": \"3.1.0\",\n \"info\": {\n \"title\": \"SynapseTree Memory API (subset for @equationalapplications/mcp-server)\",\n \"version\": \"1.0.0-alpha.1\",\n \"summary\": \"Hosted shared memory for LLM agents, one SQLite database per tenant.\",\n \"description\": \"SynapseTree hosts `core-llm-wiki` memory databases. Each API key reaches exactly one\\ntenant database; inside it, data lives in **namespaces** (the engine's `entity_id`).\\n\\nDesign: `docs/superpowers/specs/2026-09-30-openapi-contract-design.md`.\\n\\n**Key scope.** Every operation declares `x-synapsetree-scope`: `read` operations accept\\n`read` and `read_write` keys; `read_write` operations refuse a `read` key with\\n`403 insufficient_scope`. Agent keys issued through auth.md carry `memory:full`\\n(`memory:admin` is accepted but not issued in v1); both pass `read` and `read_write`\\noperations, except that the export\\nand destructive operations (`exportMemory`, `forgetFact`, `forgetSource`,\\n`deleteNamespace`) refuse a `memory:full` key with `403 insufficient_scope`; a\\n`memory:admin` key passes them.\\n\\n**Errors.** Errors produced by SynapseTree are RFC 7807 `application/problem+json` with a\\nstable `code`. Two responses come from the AWS API Gateway authorizer itself and keep the\\ngateway's native shape `{\\\"message\\\": \\\"...\\\"}`: `401` (missing or malformed bearer token) and\\n`403` (unknown or revoked key, or a database that is not routable).\\n\\n**Writes and billing.** Writes are refused with `402 subscription_inactive` when the\\norganization is on a paid plan whose subscription is not `trialing`, `active` or\\n`past_due`. Reads always work.\\n\\n**Inference is bring-your-own-key (BYOK).** SynapseTree runs no inference on its own\\naccount: server-side extraction and semantic embeddings run against the organization's own\\nprovider keys. Owner/admin register, rotate and delete two custodial registrations per\\norganization in the dashboard — an **extraction** registration (required for\\n`server_extraction` ingest and consolidation) and an optional **embeddings** registration —\\neach envelope-encrypted with KMS, never logged or echoed, surfaced only as `keyLast4`.\\nRotation overwrites in place and takes effect on the next call. With no extraction\\nregistration `server_extraction` answers `409 inference_not_configured`; a key the provider\\nrejects answers `409 inference_config_invalid` and surfaces as failing key health. With no\\nembeddings registration namespaces serve **keyword-only** search — a supported\\nconfiguration, reported via `diagnostics`, never an error. Provider calls are metered\\nagainst the plan's tier caps (one shared window, first-come-first-served); usage is\\ndisplayed as token counts, never dollars. Changing a namespace's embedding model is gated by\\nits stored fingerprint and takes effect only through a maintenance run\\n(`POST /v1/namespaces/{namespace}/maintenance/runs`); while a run is active, vector search\\non that namespace pauses to keyword-only.\\n\\n**Engine extensions.** `x-synapsetree-engine` names the engine entry point. Entries marked\\n`upstream:` depend on a core-llm-wiki API that has been requested but not yet released;\\nuntil it ships the operation or field answers `501 not_implemented`.\\n\",\n \"license\": {\n \"name\": \"Proprietary\",\n \"identifier\": \"LicenseRef-Proprietary\"\n },\n \"contact\": {\n \"name\": \"Equational Applications LLC\",\n \"url\": \"https://equationalapplications.com/\"\n },\n \"x-subset-of\": \"SynapseTree openapi/openapi.yaml\",\n \"x-generated-by\": \"scripts/mcp-contract-subset.py (SynapseTree repo); regenerate, do not hand-edit\",\n \"x-operations\": [\n \"createEvent\",\n \"ingestDocument\",\n \"listNamespaces\",\n \"oauthRevoke\",\n \"oauthToken\",\n \"queryMemory\",\n \"registerAgentIdentity\",\n \"rememberFact\",\n \"supersedeFact\",\n \"traverseGraph\",\n \"whoami\"\n ]\n },\n \"servers\": [\n {\n \"url\": \"https://api.synapsetree.dev\",\n \"description\": \"Production\"\n }\n ],\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"paths\": {\n \"/v1/memory/query\": {\n \"post\": {\n \"operationId\": \"queryMemory\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Search memory\",\n \"description\": \"Ranked top-k hybrid search (semantic + keyword) across one or more namespaces. Returns\\nthe highest-scoring facts plus pending tasks and recent events. **Not paginated**: the\\nranking is not a stable order; raise `limit` (max 100) for more results.\\n\\nSemantic scoring needs embeddings. In namespaces under server extraction the query is\\nembedded with the organization's embeddings registration (BYOK); an organization without\\none serves keyword-only search. When the embeddings path is unavailable — no\\nregistration, a key or provider fault, the tier cap exhausted, or a maintenance run\\nre-embedding the namespace — the search degrades to keyword-only and reports why via\\n`diagnostics`. That degradation is normal operation, not an error. Alternatively pass\\n`queryEmbedding` (same dimension as the stored fact vectors) to supply the vector\\nyourself.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"read\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/QueryRequest\"\n },\n \"examples\": {\n \"single\": {\n \"summary\": \"One namespace\",\n \"value\": {\n \"namespaces\": [\n \"repo:synapsetree\"\n ],\n \"query\": \"how are API keys hashed\",\n \"limit\": 5\n }\n },\n \"weighted\": {\n \"summary\": \"Two namespaces, weighted, point in time\",\n \"value\": {\n \"namespaces\": [\n \"repo:synapsetree\",\n \"team:platform\"\n ],\n \"query\": \"deployment region\",\n \"weights\": {\n \"repo:synapsetree\": 2,\n \"team:platform\": 1\n },\n \"floors\": {\n \"team:platform\": 1\n },\n \"asOf\": \"2026-09-01T00:00:00Z\",\n \"excludeDrafts\": true\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ranked facts with pending tasks and recent events.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/QueryResponse\"\n },\n \"example\": {\n \"facts\": [\n {\n \"id\": \"fact_01j9x7k2m3\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceType\": \"immutable_document\",\n \"mutable\": false,\n \"sourceRef\": \"infra__stack.ts\",\n \"sourceHash\": \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\",\n \"title\": \"SynapseTree\",\n \"body\": \"Hosted LLM memory API. status active.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"software_application\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 3,\n \"lastAccessedAt\": \"2026-09-30T08:00:00Z\",\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\"\n }\n ],\n \"scores\": {\n \"fact_01j9x7k2m3\": 0.82\n },\n \"tasks\": [\n {\n \"id\": \"task_01j9x8a1b2\",\n \"namespace\": \"repo:synapsetree\",\n \"description\": \"Register the stree_ prefix with GitHub secret scanning\",\n \"status\": \"pending\",\n \"priority\": 5,\n \"okfType\": null,\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\",\n \"resolvedAt\": null\n }\n ],\n \"events\": [\n {\n \"id\": \"evt_01j9x8c3d4\",\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"relatedFactId\": null,\n \"occurredAt\": \"2026-09-29T09:00:00Z\",\n \"createdAt\": \"2026-09-29T09:05:00Z\"\n }\n ]\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"501\": {\n \"$ref\": \"#/components/responses/NotImplemented\"\n },\n \"503\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff)\\nor `fenced` (the writer lost its lease). Upstream inference failure never\\nsurfaces on the query path — spec §5.2 degrade-never-fail: provider trouble\\ndegrades to keyword search with `diagnostics` instead of failing.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"fenced\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"/v1/memory/facts\": {\n \"post\": {\n \"operationId\": \"rememberFact\",\n \"tags\": [\n \"facts\"\n ],\n \"summary\": \"Store a fact directly\",\n \"description\": \"Stores one mutable fact (`user_stated` by default) without an LLM step. To replace an\\nexisting fact, use `supersedeFact` instead so history is kept.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"remember\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RememberRequest\"\n },\n \"examples\": {\n \"preference\": {\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"title\": \"Prefers merge commits\",\n \"body\": \"Kurt wants PRs merged with merge commits, never squashed.\",\n \"tags\": [\n \"git\"\n ],\n \"confidence\": \"certain\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"The stored fact.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Fact\"\n },\n \"example\": {\n \"id\": \"fact_01j9xa0000\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 0,\n \"lastAccessedAt\": null,\n \"createdAt\": \"2026-09-30T09:00:00Z\",\n \"updatedAt\": \"2026-09-30T09:00:00Z\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/memory/facts/{factId}/supersede\": {\n \"post\": {\n \"operationId\": \"supersedeFact\",\n \"tags\": [\n \"facts\"\n ],\n \"summary\": \"Replace a fact, keeping its history\",\n \"description\": \"Ends the fact's validity at `validFrom` (default: now) and makes the replacement current\\nfrom that instant. The replacement is a new mutable fact or an existing fact id.\\n\\nRefused with `409 invalid_state` for `immutable_document` facts (re-ingest the document\\ninstead), and with `409 conflict` for a fact already superseded or a replacement that\\nwould form a cycle.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"supersede\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/FactId\"\n },\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SupersedeRequest\"\n },\n \"examples\": {\n \"newFact\": {\n \"summary\": \"Replace with a new fact, backdated\",\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"replacement\": {\n \"kind\": \"new\",\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\"\n }\n }\n },\n \"existingFact\": {\n \"summary\": \"Replace with a fact that already exists\",\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"replacement\": {\n \"kind\": \"existing\",\n \"factId\": \"fact_01j9xa0000\"\n }\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The superseded fact and its replacement.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SupersedeResponse\"\n },\n \"example\": {\n \"superseded\": {\n \"id\": \"fact_01j8z9y8x7\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in Seattle\",\n \"body\": \"Rents in Capitol Hill.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": \"2026-03-01T00:00:00Z\",\n \"supersededBy\": \"fact_01j9xa0000\",\n \"supersededAt\": \"2026-09-30T09:00:00Z\",\n \"accessCount\": 5,\n \"lastAccessedAt\": \"2026-09-28T12:00:00Z\",\n \"createdAt\": \"2026-01-10T12:00:00Z\",\n \"updatedAt\": \"2026-01-10T12:00:00Z\"\n },\n \"replacement\": {\n \"id\": \"fact_01j9xa0000\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 0,\n \"lastAccessedAt\": null,\n \"createdAt\": \"2026-09-30T09:00:00Z\",\n \"updatedAt\": \"2026-09-30T09:00:00Z\"\n }\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/memory/ingest\": {\n \"post\": {\n \"operationId\": \"ingestDocument\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Ingest a document\",\n \"description\": \"Extracts facts from a document and stores them as `immutable_document` facts under\\n`sourceRef`, replacing any earlier version.\\n\\n- `server_extraction`: SynapseTree runs extraction with the organization's registered\\n provider key (BYOK; envelope-encrypted, managed in the dashboard by owner/admin).\\n `409 inference_not_configured` when the organization has no extraction registration.\\n- `client_extraction`: the client ran the extraction itself against an\\n [extraction plan](#operation/createExtractionPlan) and posts each chunk's model\\n output. A plan whose fingerprint no longer matches is refused with\\n `409 extraction_plan_stale`.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"ingestDocument (server_extraction); upstream:ingestExtracted (client_extraction)\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/IngestRequest\"\n },\n \"examples\": {\n \"clientExtraction\": {\n \"summary\": \"Client-side extraction (BYOI)\",\n \"value\": {\n \"mode\": \"client_extraction\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceRef\": \"docs__runbook.md\",\n \"sourceHash\": \"1b3d5f7a9c0e2b4d6f8a0c2e4b6d8f0a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n \"planFingerprint\": \"sha256:4e6a8c0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c\",\n \"chunks\": [\n {\n \"index\": 0,\n \"response\": {\n \"facts\": [\n {\n \"title\": \"Deploys go to us-east-1\",\n \"body\": \"The test stage deploys to us-east-1.\",\n \"tags\": [\n \"deploy\"\n ],\n \"confidence\": \"certain\",\n \"okfType\": \"procedure\",\n \"evidence\": [\n \"Region: us-east-1 (Kurt, 2026-09-29).\"\n ],\n \"edges\": [\n {\n \"edgeType\": \"documents\",\n \"targetTitle\": \"SynapseTree\"\n }\n ]\n }\n ],\n \"tasks\": []\n }\n }\n ]\n }\n },\n \"serverExtraction\": {\n \"summary\": \"Server-side extraction (BYOK)\",\n \"value\": {\n \"mode\": \"server_extraction\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceRef\": \"docs__runbook.md\",\n \"sourceHash\": \"1b3d5f7a9c0e2b4d6f8a0c2e4b6d8f0a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n \"content\": \"# Deploy the test stage ...\",\n \"onDuplicateHash\": \"skip\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ingest summary.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/IngestResponse\"\n },\n \"example\": {\n \"chunks\": 1,\n \"ingestedChunks\": 1,\n \"failedChunks\": 0,\n \"truncated\": false,\n \"duplicateOf\": null,\n \"parseFailures\": []\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"409\": {\n \"description\": \"The write conflicts with current state: `conflict`, `extraction_plan_stale`,\\n`source_hash_conflict` (another sourceRef already holds this content hash),\\n`namespace_busy` (the namespace is under another write; retry),\\n`inference_not_configured` (server extraction requested but the organization has\\nno extraction registration), or `inference_config_invalid` (the provider rejected\\nthe organization's key as configuration-invalid — auth or bad option — on every\\nextraction call; nothing was written and the response is not retried).\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"sourceHashConflict\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:source_hash_conflict\",\n \"title\": \"Source hash already stored\",\n \"status\": 409,\n \"code\": \"source_hash_conflict\",\n \"detail\": \"Another sourceRef in this namespace already holds this content.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"duplicateOf\": \"docs__runbook-old.md\"\n }\n },\n \"inferenceConfigInvalid\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:inference_config_invalid\",\n \"title\": \"Inference configuration invalid\",\n \"status\": 409,\n \"code\": \"inference_config_invalid\",\n \"detail\": \"The provider rejected the tenant's model key as configuration-invalid on every extraction call; nothing was written.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n }\n }\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"description\": \"Well-formed but refused: `ontology_violation`, `ingest_failed`,\\n`idempotency_key_reused`, `embedding_dimension_mismatch` (client vector with a\\ndifferent dimension), or `embedding_model_mismatch` (the tenant's configured\\nembedding model differs from the namespace's stored-vector fingerprint; the\\nrefusal precedes any write and points at the re-embed maintenance path).\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"ontologyViolation\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:ontology_violation\",\n \"title\": \"Ontology violation\",\n \"status\": 422,\n \"code\": \"ontology_violation\",\n \"detail\": \"Node type \\\"microservice\\\" is not in this namespace's strict manifest.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"kind\": \"node\",\n \"ontologyType\": \"microservice\"\n }\n },\n \"embeddingModelMismatch\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:embedding_model_mismatch\",\n \"title\": \"Embedding model mismatch\",\n \"status\": 422,\n \"code\": \"embedding_model_mismatch\",\n \"detail\": \"The configured embedding model differs from the namespace's stored-vector fingerprint; run maintenance to re-embed.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n }\n }\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"501\": {\n \"$ref\": \"#/components/responses/NotImplemented\"\n },\n \"503\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff),\\n`fenced` (the writer lost its lease; the write did not commit), or\\n`upstream_inference_unavailable` (the tenant's inference provider failed on\\nevery extraction call, or either BYOK rate cap (extraction or embeddings)\\nis exhausted for the window (429/5xx/timeout; nothing was written; safe\\nto retry)). When the embeddings rate cap is exhausted by an active\\nmaintenance run, the problem `detail` names the run (`mrun_…`) as the\\nconsumer.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"fenced\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n },\n \"upstreamInferenceUnavailable\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:upstream_inference_unavailable\",\n \"title\": \"Upstream inference unavailable\",\n \"status\": 503,\n \"code\": \"upstream_inference_unavailable\",\n \"detail\": \"The tenant's inference provider failed on every extraction call (429/5xx/timeout); nothing was written.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 30\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"/v1/memory/events\": {\n \"post\": {\n \"operationId\": \"createEvent\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Record an event\",\n \"description\": \"Appends an observation, decision, action, or outcome to a namespace's event log. Events\\nare the input to later consolidation into facts; recording one never runs inference.\\nA relatedFactId that does not exist in the namespace (superseded facts count as existing)\\nis refused with 404.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"write\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateEventRequest\"\n },\n \"examples\": {\n \"decision\": {\n \"value\": {\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"occurredAt\": \"2026-09-29T09:00:00Z\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"The recorded event.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Event\"\n },\n \"example\": {\n \"id\": \"evt_01j9x8c3d4\",\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"relatedFactId\": null,\n \"occurredAt\": \"2026-09-29T09:00:00Z\",\n \"createdAt\": \"2026-09-29T09:05:00Z\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/graph/traverse\": {\n \"post\": {\n \"operationId\": \"traverseGraph\",\n \"tags\": [\n \"graph\"\n ],\n \"summary\": \"Traverse the graph from an anchor fact\",\n \"description\": \"Walks edges from `sourceId` up to `maxDepth` hops (1–3). The anchor is always returned\\nfirst; discovered nodes follow in depth order. Only edges whose both endpoints are\\nreturned are included. With `asOf`, only facts live at that instant are walked.\\nBounded by `maxNodes`; not paginated.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"traverseGraph\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraverseRequest\"\n },\n \"examples\": {\n \"twoHops\": {\n \"summary\": \"Two hops, outbound, dependency edges only\",\n \"value\": {\n \"namespace\": \"repo:synapsetree\",\n \"sourceId\": \"app_synapsetree\",\n \"maxDepth\": 2,\n \"direction\": \"outbound\",\n \"edgeTypes\": [\n \"dependsOn\"\n ],\n \"maxNodes\": 50\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The anchor's neighbourhood.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraverseResponse\"\n },\n \"example\": {\n \"nodes\": [\n {\n \"id\": \"fact_01j9x7k2m3\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceType\": \"immutable_document\",\n \"mutable\": false,\n \"sourceRef\": \"infra__stack.ts\",\n \"sourceHash\": \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\",\n \"title\": \"SynapseTree\",\n \"body\": \"Hosted LLM memory API. status active.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"software_application\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 3,\n \"lastAccessedAt\": \"2026-09-30T08:00:00Z\",\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\"\n }\n ],\n \"edges\": [\n {\n \"id\": \"edge_01j9x9e5f6\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceId\": \"app_synapsetree\",\n \"targetId\": \"svc_dynamodb\",\n \"edgeType\": \"dependsOn\",\n \"createdAt\": \"2026-09-29T10:00:00Z\"\n }\n ]\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/namespaces\": {\n \"get\": {\n \"operationId\": \"listNamespaces\",\n \"tags\": [\n \"namespaces\"\n ],\n \"summary\": \"List namespaces\",\n \"description\": \"Namespaces with at least one row, ordered by name (binary ascending). Includes namespaces\\nwhose rows are all deleted, until they are pruned.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"listEntityIds\",\n \"parameters\": [\n {\n \"name\": \"prefix\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"Only namespaces starting with this string.\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 128\n },\n \"example\": \"repo:\"\n },\n {\n \"$ref\": \"#/components/parameters/After\"\n },\n {\n \"$ref\": \"#/components/parameters/Limit\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"One page of namespaces.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/NamespaceList\"\n },\n \"example\": {\n \"data\": [\n {\n \"namespace\": \"repo:synapsetree\"\n },\n {\n \"namespace\": \"user:kurt\"\n }\n ],\n \"hasMore\": false,\n \"nextCursor\": null\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/whoami\": {\n \"get\": {\n \"operationId\": \"whoami\",\n \"tags\": [\n \"account\"\n ],\n \"summary\": \"Describe the calling key\",\n \"description\": \"The routing context the authorizer resolved for this key.\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"none (control plane)\",\n \"responses\": {\n \"200\": {\n \"description\": \"The key's routing context.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Whoami\"\n },\n \"example\": {\n \"apiKeyId\": \"key_01j9x5v7w8\",\n \"organizationId\": \"org_01j9x5t3u4\",\n \"tenantDatabaseId\": \"db_01j9x5r1s2\",\n \"scope\": \"read_write\",\n \"planCode\": \"hobby\",\n \"subscriptionStatus\": \"inactive\"\n }\n }\n }\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n }\n }\n }\n },\n \"/agent/identity\": {\n \"post\": {\n \"operationId\": \"registerAgentIdentity\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Start agent registration for an email\",\n \"description\": \"First step of auth.md agent registration: an agent without an API key\\nasks SynapseTree to email the human a claim link. The endpoint is\\nunauthenticated; the response is byte-equal for known and unknown\\nemails (anti-enumeration). At most 5 claim tokens may be outstanding\\nfor one email — the 6th answers `quota_exceeded` (an existing\\nProblemCode; errors here are problem+json only). Success returns the\\n`stclaim_…` claim token the agent polls with, a short `user_code` the\\nhuman confirms on the consent interstitial, and the poll parameters. The\\noutstanding-token cap responds `quota_exceeded`.\\n\",\n \"security\": [],\n \"x-synapsetree-engine\": \"registerAgentIdentity (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AgentIdentityRequest\"\n },\n \"example\": {\n \"email\": \"ada@example.com\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The claim is pending; a confirmation email is on its way to the\\nhuman. Byte-equal whether or not the email is known to SynapseTree.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AgentIdentityResponse\"\n },\n \"example\": {\n \"claim_token\": \"stclaim_exampleclaimtoken01\",\n \"user_code\": \"482913\",\n \"poll\": {\n \"token_endpoint\": \"https://api.synapsetree.dev/oauth2/token\",\n \"grant\": \"urn:synapsetree:claim\",\n \"interval\": 5\n }\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/QuotaExceeded\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n }\n }\n }\n },\n \"/oauth2/token\": {\n \"post\": {\n \"operationId\": \"oauthToken\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Poll the claim grant for the minted API key\",\n \"description\": \"Device-flow style poll (RFC 8628 §3.4/§3.5) with a claim grant: the\\nagent presents the `stclaim_…` token from POST /agent/identity as the\\n`assertion` (RFC 7523 jwt-bearer shape) with grant type\\n`urn:synapsetree:claim`. Before the human approves, the endpoint\\nanswers `authorization_pending` (with `interval`) or `slow_down`;\\nafter approval the FIRST poll mints exactly one API key (and, in the\\nsame transaction, frees the claim token) and answers with it — later\\npolls answer `invalid_grant`, as do expiry and absence. If the\\norganization already holds 10 live agent keys the poll answers\\n`key_limit_reached`, a documented extension of the RFC 6749 §5.2\\n`error` member (not a problem+json code). Errors here are RFC 6749\\n§5.2 bodies, never problem+json. No per-IP rate limit exists in v1.\\n\",\n \"security\": [],\n \"x-synapsetree-engine\": \"oauthToken (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/x-www-form-urlencoded\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ClaimGrantRequest\"\n },\n \"example\": {\n \"grant_type\": \"urn:synapsetree:claim\",\n \"assertion\": \"stclaim_exampleclaimtoken01\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The claim was approved and redeemed; exactly one API key was\\nminted. Polling again answers `invalid_grant`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TokenResponse\"\n },\n \"example\": {\n \"access_token\": \"stree_Tq3-vZ8_kLm2NpR5sUw7YxA9bC1dE4fG6hJ0iKlMnOp\",\n \"token_type\": \"Bearer\",\n \"account_id\": \"01890a5d-ac96-774b-bcce-b302099a8057\",\n \"scope\": \"memory:full\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/OauthErrorResponse\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/OauthServerError\"\n }\n }\n }\n },\n \"/oauth2/revoke\": {\n \"post\": {\n \"operationId\": \"oauthRevoke\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Revoke a token (RFC 7009)\",\n \"description\": \"RFC 7009 revocation, bearer-authenticated like every other key-bearing\\nendpoint. Revoking an agent key frees its seat against the\\norganization's 10-key cap. The endpoint answers 200 on every\\nrequest carrying a LIVE bearer — the response is byte-equal whether the\\ntoken was revoked or was unknown. A revoked, deleted or unknown CLIENT\\nbearer never reaches the handler: the edge answers 401 (the shared\\n`unauthorized` problem, RFC 6750 — byte-equal for unknown and revoked\\nbearers, anti-enumeration). A request with an ABSENT or MALFORMED\\n`Authorization` header is refused by the API Gateway authorizer before\\nthe handler runs, with the gateway's default native body\\n`{\\\"message\\\":\\\"Unauthorized\\\"}` (not problem+json, no `WWW-Authenticate`\\nchallenge). Errors from the handler are RFC 6749 §5.2 bodies, never\\nproblem+json (the two 401 bodies above excepted).\\n\",\n \"x-synapsetree-engine\": \"oauthRevoke (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/x-www-form-urlencoded\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RevokeRequest\"\n },\n \"example\": {\n \"token\": \"stree_Tq3-vZ8_kLm2NpR5sUw7YxA9bC1dE4fG6hJ0iKlMnOp\",\n \"token_type_hint\": \"access_token\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The token is revoked, or was unknown; byte-equal either way. Requires a live bearer.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"description\": \"Empty body (RFC 7009 §2.2 — 200 confirms processing).\",\n \"additionalProperties\": false,\n \"required\": [],\n \"properties\": {}\n },\n \"example\": {}\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/OauthErrorResponse\"\n },\n \"401\": {\n \"description\": \"The CLIENT bearer is unknown, revoked or invalid (RFC 6750). Emitted by the\\napplication's shared 401 emitter, byte-equal to the pool's — anti-enumeration\\n(unknown and revoked bearers are indistinguishable). A missing/malformed\\n`Authorization` header instead yields the API Gateway default 401 body\\n`{\\\"message\\\":\\\"Unauthorized\\\"}` — see the operation description.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"WWW-Authenticate\": {\n \"$ref\": \"#/components/headers/WWW-Authenticate\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:unauthorized\",\n \"title\": \"Unauthorized\",\n \"status\": 401,\n \"code\": \"unauthorized\",\n \"detail\": \"The API key is missing, invalid, or revoked.\",\n \"requestId\": \"req_01j9x5v7w8example\",\n \"retryable\": false\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Per-key throttle (60 requests/min) exceeded.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Too many requests for this key; retry later.\"\n }\n }\n }\n },\n \"500\": {\n \"$ref\": \"#/components/responses/OauthServerError\"\n },\n \"503\": {\n \"description\": \"Authorization store unavailable; the request fails closed (RFC 6749 `server_error`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Authorization is temporarily unavailable; retry later.\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"components\": {\n \"headers\": {\n \"Idempotent-Replayed\": {\n \"description\": \"Present and `true` when the response was replayed for a repeated `Idempotency-Key`.\",\n \"schema\": {\n \"type\": \"boolean\"\n },\n \"example\": true\n },\n \"RateLimit\": {\n \"description\": \"Remaining quota in the current window (draft-ietf-httpapi-ratelimit-headers).\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"example\": \"\\\"default\\\";r=412;t=17\"\n },\n \"RateLimit-Policy\": {\n \"description\": \"Rate-limit policy (draft-ietf-httpapi-ratelimit-headers, structured fields).\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"example\": \"\\\"default\\\";q=600;w=60\"\n },\n \"Request-Id\": {\n \"description\": \"Identifies this request in logs and support requests.\",\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^req_[A-Za-z0-9]{8,64}$\"\n },\n \"example\": \"req_01j9xb7c8d9e\"\n },\n \"Retry-After\": {\n \"description\": \"Seconds to wait before retrying.\",\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"example\": 5\n },\n \"WWW-Authenticate\": {\n \"description\": \"RFC 6750 challenge emitted with application-level 401s on key-bearing\\nroutes, pointing at the OAuth 2.0 Protected Resource Metadata document.\\n\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 512\n },\n \"example\": \"Bearer resource_metadata=\\\"https://api.synapsetree.dev/.well-known/oauth-protected-resource\\\"\"\n }\n },\n \"parameters\": {\n \"After\": {\n \"name\": \"after\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"The `nextCursor` from the previous page. Opaque; never an offset.\",\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 512\n },\n \"example\": \"c_eyJrIjoiZG9jc19fcnVuYm9vay5tZCJ9.k3Jf\"\n },\n \"FactId\": {\n \"name\": \"factId\",\n \"in\": \"path\",\n \"required\": true,\n \"description\": \"A fact id.\",\n \"schema\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"example\": \"fact_01j9x7k2m3\"\n },\n \"IdempotencyKey\": {\n \"name\": \"Idempotency-Key\",\n \"in\": \"header\",\n \"required\": false,\n \"description\": \"Makes a retry safe. Retained 24 hours per API key. A replay returns the stored response\\nwith `Idempotent-Replayed: true`; the same key with a different body is refused with\\n`422 idempotency_key_reused`.\\n\",\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z0-9_-]{1,255}$\"\n },\n \"example\": \"7f1c2e9a-ingest-runbook\"\n },\n \"Limit\": {\n \"name\": \"limit\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"Page size.\",\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100,\n \"default\": 50\n },\n \"example\": 50\n }\n },\n \"responses\": {\n \"BadRequest\": {\n \"description\": \"The request is invalid (`invalid_request`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:invalid_request\",\n \"title\": \"Invalid request\",\n \"status\": 400,\n \"code\": \"invalid_request\",\n \"detail\": \"The request body does not match the schema.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"errors\": [\n {\n \"path\": \"/sourceRef\",\n \"message\": \"must match pattern \\\"^[A-Za-z0-9._\\\\- ]{1,255}$\\\"\"\n }\n ]\n }\n }\n }\n },\n \"Conflict\": {\n \"description\": \"The write conflicts with current state: `conflict`, `invalid_state`,\\n`source_hash_conflict`, `node_id_unavailable`, `namespace_busy`,\\n`namespace_exists`, `idempotency_in_progress`, `extraction_plan_stale`, or\\n`inference_not_configured`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:source_hash_conflict\",\n \"title\": \"Source hash already stored\",\n \"status\": 409,\n \"code\": \"source_hash_conflict\",\n \"detail\": \"Another sourceRef in this namespace already holds this content.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"duplicateOf\": \"docs__runbook-old.md\"\n }\n }\n }\n },\n \"Forbidden\": {\n \"description\": \"`application/json` (API Gateway): the key is unknown or revoked, or its database is not\\nroutable. `application/problem+json`: `insufficient_scope` (a `read` key on a\\n`read_write` operation, or a `memory:full` key on an export or destructive operation)\\nor `quota_exceeded` (the organization is over its storage quota).\\n\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GatewayError\"\n },\n \"example\": {\n \"message\": \"Forbidden\"\n }\n },\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:insufficient_scope\",\n \"title\": \"Insufficient scope\",\n \"status\": 403,\n \"code\": \"insufficient_scope\",\n \"detail\": \"This operation needs a read_write key.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"InternalError\": {\n \"description\": \"Unexpected server error (`internal`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:internal\",\n \"title\": \"Internal error\",\n \"status\": 500,\n \"code\": \"internal\",\n \"detail\": \"An unexpected error occurred.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true\n }\n }\n }\n },\n \"NotFound\": {\n \"description\": \"The fact or draft does not exist in this namespace (`not_found`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:not_found\",\n \"title\": \"Not found\",\n \"status\": 404,\n \"code\": \"not_found\",\n \"detail\": \"No fact with that id exists in this namespace.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"NotImplemented\": {\n \"description\": \"The operation or option depends on an engine release that has not shipped (`not_implemented`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:not_implemented\",\n \"title\": \"Not implemented\",\n \"status\": 501,\n \"code\": \"not_implemented\",\n \"detail\": \"tokenBudget is not available yet.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"OauthErrorResponse\": {\n \"description\": \"RFC 6749 §5.2 error (or an RFC 8628 §3.5 polling signal). JSON with an\\n`error` member — never problem+json.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"examples\": {\n \"authorization_pending\": {\n \"value\": {\n \"error\": \"authorization_pending\",\n \"error_description\": \"The claim is awaiting human approval.\",\n \"interval\": 5\n }\n },\n \"slow_down\": {\n \"value\": {\n \"error\": \"slow_down\",\n \"error_description\": \"Polling faster than the granted interval.\"\n }\n },\n \"invalid_grant\": {\n \"value\": {\n \"error\": \"invalid_grant\",\n \"error_description\": \"The claim grant is expired, unknown, or already redeemed.\"\n }\n },\n \"key_limit_reached\": {\n \"value\": {\n \"error\": \"key_limit_reached\",\n \"error_description\": \"The organization already holds the maximum number of live agent keys.\"\n }\n }\n }\n }\n }\n },\n \"OauthServerError\": {\n \"description\": \"A transient provisioning failure with the claim grant still\\nredeemable. RFC 6749 §5.2 `server_error` — retry with the same grant.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Provisioning failed transiently; retry with the same claim grant.\"\n }\n }\n }\n },\n \"PayloadTooLarge\": {\n \"description\": \"The request body is over the limit for this operation (`payload_too_large`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:payload_too_large\",\n \"title\": \"Payload too large\",\n \"status\": 413,\n \"code\": \"payload_too_large\",\n \"detail\": \"Request bodies are limited to 1 MiB.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"PaymentRequired\": {\n \"description\": \"The organization's paid subscription is not active (`subscription_inactive`). Reads still work.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:subscription_inactive\",\n \"title\": \"Subscription inactive\",\n \"status\": 402,\n \"code\": \"subscription_inactive\",\n \"detail\": \"The organization's subscription is canceled; writes are disabled.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"QuotaExceeded\": {\n \"description\": \"The email already has the maximum number of outstanding claim tokens (`quota_exceeded`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:quota_exceeded\",\n \"title\": \"Quota exceeded\",\n \"status\": 403,\n \"code\": \"quota_exceeded\",\n \"detail\": \"This email already has the maximum number of pending claim tokens.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"ServiceUnavailable\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff) or `fenced`\\n(the writer lost its lease; the write did not commit). Safe to retry.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n }\n }\n },\n \"TooManyRequests\": {\n \"description\": \"Rate limit exceeded (`rate_limited`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:rate_limited\",\n \"title\": \"Rate limited\",\n \"status\": 429,\n \"code\": \"rate_limited\",\n \"detail\": \"Too many requests for this key.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 17\n }\n }\n }\n },\n \"Unauthorized\": {\n \"description\": \"Missing or malformed bearer token. Produced by API Gateway, so the body is the gateway's\\nnative shape, not problem+json.\\n\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GatewayError\"\n },\n \"example\": {\n \"message\": \"Unauthorized\"\n }\n }\n }\n },\n \"UnprocessableContent\": {\n \"description\": \"Well-formed but refused: `ontology_violation`, `ingest_failed`,\\n`idempotency_key_reused`, or `embedding_dimension_mismatch`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:ontology_violation\",\n \"title\": \"Ontology violation\",\n \"status\": 422,\n \"code\": \"ontology_violation\",\n \"detail\": \"Node type \\\"microservice\\\" is not in this namespace's strict manifest.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"kind\": \"node\",\n \"ontologyType\": \"microservice\"\n }\n }\n }\n }\n },\n \"schemas\": {\n \"AgentIdentityRequest\": {\n \"type\": \"object\",\n \"description\": \"Who the human behind the agent is. `assertion` carries whatever identity assertion the agent can present (it is logged, never used to change the flow).\",\n \"additionalProperties\": false,\n \"required\": [\n \"email\"\n ],\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The human's email; the claim link is sent here.\"\n },\n \"assertion\": {\n \"type\": \"string\",\n \"description\": \"Optional identity assertion from the agent's provider, parsed and logged for audit only.\"\n }\n }\n },\n \"AgentIdentityResponse\": {\n \"type\": \"object\",\n \"description\": \"The pending claim's poll parameters. Byte-equal for known and unknown emails.\",\n \"additionalProperties\": false,\n \"required\": [\n \"claim_token\",\n \"user_code\",\n \"poll\"\n ],\n \"properties\": {\n \"claim_token\": {\n \"type\": \"string\",\n \"pattern\": \"^stclaim_[A-Za-z0-9._-]{8,128}$\",\n \"description\": \"The claim grant to present as the OAuth `assertion` at POST /oauth2/token.\"\n },\n \"user_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{6}$\",\n \"description\": \"Six-digit code the human confirms on the consent interstitial.\"\n },\n \"poll\": {\n \"$ref\": \"#/components/schemas/PollGrant\"\n }\n }\n },\n \"ChunkExtraction\": {\n \"type\": \"object\",\n \"description\": \"One chunk's model output, as described by the plan's `outputSchema`.\",\n \"additionalProperties\": false,\n \"required\": [\n \"facts\",\n \"tasks\"\n ],\n \"properties\": {\n \"facts\": {\n \"type\": \"array\",\n \"maxItems\": 200,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedFact\"\n }\n },\n \"tasks\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedTask\"\n }\n }\n }\n },\n \"ChunkFailure\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"chunkIndex\",\n \"reason\"\n ],\n \"properties\": {\n \"chunkIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"reason\": {\n \"type\": \"string\",\n \"enum\": [\n \"parse\",\n \"llm\",\n \"schema\"\n ],\n \"description\": \"Why the chunk was not ingested. Messages never include content.\"\n }\n }\n },\n \"ChunkResult\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"index\",\n \"response\"\n ],\n \"properties\": {\n \"index\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"The chunk's position in the plan's chunking of the source.\"\n },\n \"response\": {\n \"$ref\": \"#/components/schemas/ChunkExtraction\"\n }\n }\n },\n \"Chunking\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"maxChunkLength\",\n \"chunkOverlap\"\n ],\n \"properties\": {\n \"maxChunkLength\": {\n \"type\": \"integer\",\n \"minimum\": 2,\n \"maximum\": 100000\n },\n \"chunkOverlap\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 99999\n }\n }\n },\n \"ClaimGrantRequest\": {\n \"type\": \"object\",\n \"description\": \"Form-urlencoded claim-grant poll body (RFC 8628-style poll with an\\nRFC 7523 jwt-bearer-shaped assertion).\\n\",\n \"additionalProperties\": false,\n \"required\": [\n \"grant_type\",\n \"assertion\"\n ],\n \"properties\": {\n \"grant_type\": {\n \"type\": \"string\",\n \"const\": \"urn:synapsetree:claim\",\n \"description\": \"The claim-grant flow's only grant type.\"\n },\n \"assertion\": {\n \"type\": \"string\",\n \"pattern\": \"^stclaim_[A-Za-z0-9._-]{8,128}$\",\n \"description\": \"The `stclaim_…` claim token from POST /agent/identity.\"\n }\n }\n },\n \"ClientExtractionIngest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"mode\",\n \"namespace\",\n \"sourceRef\",\n \"sourceHash\",\n \"planFingerprint\",\n \"chunks\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"const\": \"client_extraction\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n \"planFingerprint\": {\n \"$ref\": \"#/components/schemas/PlanFingerprint\"\n },\n \"onDuplicateHash\": {\n \"$ref\": \"#/components/schemas/OnDuplicateHash\"\n },\n \"chunks\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 1000,\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkResult\"\n }\n }\n }\n },\n \"Confidence\": {\n \"type\": \"string\",\n \"enum\": [\n \"certain\",\n \"inferred\",\n \"tentative\"\n ]\n },\n \"CreateEventRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"eventType\",\n \"summary\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"eventType\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000,\n \"description\": \"Trimmed of surrounding whitespace, then at most 4000 UTF-16 code units (the engine's limit; JSON Schema's maxLength counts code points, so astral characters count twice). Narrowed from 8000 by the dated 2026-11-01 D12 exception.\"\n },\n \"relatedFactId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"occurredAt\": {\n \"description\": \"When it happened. Defaults to now.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"Cursor\": {\n \"type\": \"string\",\n \"description\": \"Opaque pagination cursor.\",\n \"minLength\": 1,\n \"maxLength\": 512,\n \"examples\": [\n \"c_eyJrIjoiZG9jc19fcnVuYm9vay5tZCJ9.k3Jf\"\n ]\n },\n \"Direction\": {\n \"type\": \"string\",\n \"enum\": [\n \"inbound\",\n \"outbound\",\n \"both\"\n ]\n },\n \"Edge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"sourceId\",\n \"targetId\",\n \"edgeType\",\n \"createdAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"targetId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"edgeType\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"EdgeType\": {\n \"description\": \"Edge type. Open, like OkfType; the listed values are the schema-software-org edges.\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"knows\",\n \"spouse\",\n \"parent\",\n \"worksFor\",\n \"memberOf\",\n \"homeLocation\",\n \"workLocation\",\n \"location\",\n \"containedInPlace\",\n \"subOrganization\",\n \"object\",\n \"agent\",\n \"attendee\",\n \"organizer\",\n \"author\",\n \"publisher\",\n \"about\",\n \"itemReviewed\",\n \"owns\",\n \"dependsOn\",\n \"specifies\",\n \"documents\",\n \"handoffFor\",\n \"supersedes\",\n \"hasRole\",\n \"operates\",\n \"provides\",\n \"maintains\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n }\n ]\n },\n \"Embedding\": {\n \"type\": \"array\",\n \"description\": \"A client-computed embedding vector. All vectors in a namespace must share one model and\\ndimension; a different dimension is refused with `422 embedding_dimension_mismatch`.\\n\",\n \"minItems\": 1,\n \"maxItems\": 8192,\n \"items\": {\n \"type\": \"number\"\n },\n \"examples\": [\n [\n 0.0123,\n -0.0456,\n 0.0789\n ]\n ]\n },\n \"Event\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"eventType\",\n \"summary\",\n \"relatedFactId\",\n \"occurredAt\",\n \"createdAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"eventType\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 8000\n },\n \"relatedFactId\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"occurredAt\": {\n \"description\": \"When the event happened. Null means at `createdAt`.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"EventType\": {\n \"type\": \"string\",\n \"enum\": [\n \"observation\",\n \"decision\",\n \"action\",\n \"outcome\"\n ]\n },\n \"ExistingFactReplacement\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"kind\",\n \"factId\"\n ],\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"existing\"\n },\n \"factId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n }\n }\n },\n \"ExtractedEdge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"edgeType\",\n \"targetTitle\"\n ],\n \"properties\": {\n \"edgeType\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n },\n \"targetTitle\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000,\n \"description\": \"Title of another fact in this response or already in the namespace.\"\n }\n }\n },\n \"ExtractedFact\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"title\",\n \"body\",\n \"tags\",\n \"confidence\"\n ],\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"okfType\": {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n \"evidence\": {\n \"type\": \"array\",\n \"description\": \"Quotes copied from the chunk, checked when grounding is on. Never stored.\",\n \"maxItems\": 10,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 2000\n }\n },\n \"edges\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedEdge\"\n }\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"ExtractedTask\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"description\",\n \"priority\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000\n },\n \"priority\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 10\n }\n }\n },\n \"Fact\": {\n \"description\": \"A fact, discriminated by `sourceType`.\",\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/ImmutableDocumentFact\"\n },\n {\n \"$ref\": \"#/components/schemas/LibrarianInferredFact\"\n },\n {\n \"$ref\": \"#/components/schemas/UserStatedFact\"\n },\n {\n \"$ref\": \"#/components/schemas/UserConfirmedFact\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"sourceType\",\n \"mapping\": {\n \"immutable_document\": \"#/components/schemas/ImmutableDocumentFact\",\n \"librarian_inferred\": \"#/components/schemas/LibrarianInferredFact\",\n \"user_stated\": \"#/components/schemas/UserStatedFact\",\n \"user_confirmed\": \"#/components/schemas/UserConfirmedFact\"\n }\n }\n },\n \"FactBase\": {\n \"type\": \"object\",\n \"description\": \"Fields shared by every fact. Not used on its own; see `Fact`.\",\n \"required\": [\n \"id\",\n \"namespace\",\n \"title\",\n \"body\",\n \"tags\",\n \"confidence\",\n \"okfType\",\n \"lifecycleStatus\",\n \"trustTier\",\n \"isStale\",\n \"generatedBy\",\n \"lastVerifiedAt\",\n \"lastVerifiedBy\",\n \"validFrom\",\n \"validTo\",\n \"supersededBy\",\n \"supersededAt\",\n \"accessCount\",\n \"lastAccessedAt\",\n \"createdAt\",\n \"updatedAt\"\n ],\n \"properties\": {\n \"id\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"okfType\": {\n \"description\": \"Ontology node type, or null when untyped.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"lifecycleStatus\": {\n \"$ref\": \"#/components/schemas/LifecycleStatus\"\n },\n \"trustTier\": {\n \"$ref\": \"#/components/schemas/TrustTier\"\n },\n \"isStale\": {\n \"type\": \"boolean\"\n },\n \"generatedBy\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": 256,\n \"description\": \"Producing actor, e.g. `process:librarian` or `human:kurt`.\"\n },\n \"lastVerifiedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"lastVerifiedBy\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": 256\n },\n \"validFrom\": {\n \"description\": \"When the fact became true in the world. Null means since `createdAt`.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"validTo\": {\n \"description\": \"When the fact stopped being true. Null means still current.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"supersededBy\": {\n \"description\": \"The fact that replaced this one.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"supersededAt\": {\n \"description\": \"When the replacement was recorded.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"accessCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"lastAccessedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"updatedAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"FactId\": {\n \"type\": \"string\",\n \"description\": \"An opaque fact id. Engine-generated ids start with `fact_`; graph node ids are caller-chosen.\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"examples\": [\n \"fact_01j9x7k2m3\"\n ]\n },\n \"GatewayError\": {\n \"type\": \"object\",\n \"description\": \"API Gateway's native error body (authorizer denials). Not problem+json.\",\n \"additionalProperties\": false,\n \"required\": [\n \"message\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n }\n },\n \"ImmutableDocumentFact\": {\n \"type\": \"object\",\n \"description\": \"A fact extracted from or written for a source document. Changes only by re-ingesting the source.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\",\n \"mutable\",\n \"sourceRef\",\n \"sourceHash\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"immutable_document\"\n },\n \"mutable\": {\n \"type\": \"boolean\",\n \"const\": false\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"description\": \"Null after a partially failed ingest; re-ingest to complete it.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"IngestRequest\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/ServerExtractionIngest\"\n },\n {\n \"$ref\": \"#/components/schemas/ClientExtractionIngest\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"mode\",\n \"mapping\": {\n \"server_extraction\": \"#/components/schemas/ServerExtractionIngest\",\n \"client_extraction\": \"#/components/schemas/ClientExtractionIngest\"\n }\n }\n },\n \"IngestResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"chunks\",\n \"ingestedChunks\",\n \"failedChunks\",\n \"truncated\",\n \"duplicateOf\",\n \"parseFailures\"\n ],\n \"properties\": {\n \"chunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"ingestedChunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failedChunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"truncated\": {\n \"type\": \"boolean\",\n \"description\": \"True when chunking had to hard-cut text with no natural break.\"\n },\n \"duplicateOf\": {\n \"description\": \"Set when `onDuplicateHash` is `skip` and another sourceRef already holds the content.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"parseFailures\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkFailure\"\n }\n },\n \"embeddingFailures\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Write-phase embed failures counted during this ingest (`{ok: false}` per fact);\\nthe facts commit keyword-only and the re-embed maintenance path repairs them.\\nAbsent when every embed succeeded.\\n\"\n }\n }\n },\n \"LibrarianInferredFact\": {\n \"type\": \"object\",\n \"description\": \"A fact consolidated from events by the librarian.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"librarian_inferred\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"LifecycleStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"draft\",\n \"stable\",\n \"deprecated\"\n ]\n },\n \"MutableFactFields\": {\n \"type\": \"object\",\n \"description\": \"Fields shared by mutable facts. Not used on its own; see `Fact`.\",\n \"required\": [\n \"mutable\",\n \"sourceRef\",\n \"sourceHash\"\n ],\n \"properties\": {\n \"mutable\": {\n \"type\": \"boolean\",\n \"const\": true\n },\n \"sourceRef\": {\n \"type\": \"null\"\n },\n \"sourceHash\": {\n \"type\": \"null\"\n }\n }\n },\n \"MutableSourceType\": {\n \"type\": \"string\",\n \"enum\": [\n \"user_stated\",\n \"user_confirmed\",\n \"librarian_inferred\"\n ]\n },\n \"Namespace\": {\n \"type\": \"string\",\n \"description\": \"A namespace inside the tenant database (the engine's entity_id).\",\n \"pattern\": \"^[a-z0-9][a-z0-9._:-]{0,127}$\",\n \"examples\": [\n \"repo:synapsetree\"\n ]\n },\n \"NamespaceList\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"data\",\n \"hasMore\",\n \"nextCursor\"\n ],\n \"properties\": {\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/NamespaceSummary\"\n }\n },\n \"hasMore\": {\n \"type\": \"boolean\"\n },\n \"nextCursor\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Cursor\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n },\n \"NamespaceSummary\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n }\n }\n },\n \"NewFactReplacement\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"kind\",\n \"title\",\n \"body\"\n ],\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"new\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"sourceType\": {\n \"$ref\": \"#/components/schemas/MutableSourceType\"\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"OauthErrorBody\": {\n \"type\": \"object\",\n \"description\": \"RFC 6749 §5.2 error body: `error` plus optional `error_description`;\\n`interval` rides on `authorization_pending` (RFC 8628 §3.5).\\n`key_limit_reached`, `database_name_taken` and `database_quota_exceeded`\\nare documented SynapseTree extensions of the `error` member — account\\nwalls a human must clear, after which the agent resumes polling (the\\nclaim grant survives until its TTL):\\n`key_limit_reached` (the organization's 10-key cap — prune keys in the\\ndashboard), `database_name_taken` (the default database name is held by\\na deleted database until GC cleanup — create a differently-named\\ndatabase in the dashboard), `database_quota_exceeded` (the plan has no\\nfree database slot — delete a database or upgrade, then poll again).\\nThey are error-member values here, not problem+json ProblemCodes.\\n\",\n \"additionalProperties\": false,\n \"required\": [\n \"error\"\n ],\n \"properties\": {\n \"error\": {\n \"type\": \"string\",\n \"description\": \"An RFC 6749 §5.2 code, an RFC 8628 §3.5 code, or a documented SynapseTree extension (`key_limit_reached`, `database_name_taken`, `database_quota_exceeded`).\",\n \"enum\": [\n \"invalid_request\",\n \"invalid_grant\",\n \"authorization_pending\",\n \"slow_down\",\n \"unsupported_grant_type\",\n \"server_error\",\n \"key_limit_reached\",\n \"database_name_taken\",\n \"database_quota_exceeded\"\n ]\n },\n \"error_description\": {\n \"type\": \"string\",\n \"description\": \"Human-readable detail (RFC 6749 §5.2).\"\n },\n \"error_uri\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Optional RFC 6749 §5.2 pointer to the dashboard page that clears the wall.\"\n },\n \"interval\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Seconds to wait before polling again (RFC 8628 §3.5).\"\n }\n }\n },\n \"OkfType\": {\n \"description\": \"Ontology node type. Open: each namespace's manifest defines its own types and `emergent`\\nmode adds more; facts imported from OKF bundles keep their original type string. The\\nlisted values are the schema-software-org types.\\n\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"person\",\n \"organization\",\n \"place\",\n \"event\",\n \"project\",\n \"action\",\n \"creativework\",\n \"review\",\n \"product\",\n \"software_application\",\n \"service\",\n \"role\",\n \"design_spec\",\n \"handoff\",\n \"procedure\",\n \"session_recap\",\n \"reference_doc\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n }\n ]\n },\n \"OnDuplicateHash\": {\n \"type\": \"string\",\n \"description\": \"When another sourceRef already holds this content: `skip` (write nothing), `ingest` anyway, or `error` (409 source_hash_conflict).\",\n \"enum\": [\n \"skip\",\n \"ingest\",\n \"error\"\n ],\n \"default\": \"skip\"\n },\n \"PlanFingerprint\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\",\n \"examples\": [\n \"sha256:4e6a8c0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c\"\n ]\n },\n \"PollGrant\": {\n \"type\": \"object\",\n \"description\": \"Where and how to poll for the minted key.\",\n \"additionalProperties\": false,\n \"required\": [\n \"token_endpoint\",\n \"grant\",\n \"interval\"\n ],\n \"properties\": {\n \"token_endpoint\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"The api.-host token endpoint.\"\n },\n \"grant\": {\n \"type\": \"string\",\n \"const\": \"urn:synapsetree:claim\",\n \"description\": \"The claim-grant type to send as `grant_type`.\"\n },\n \"interval\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Seconds to wait between polls of `token_endpoint` (ruled\\n2026-11-01). Modeled on the RFC 8628 §3.2 `interval`, but nested in\\n`poll` rather than at the top level. An `authorization_pending` or\\n`slow_down` answer carries an `interval` too (`slow_down` a larger\\none), which replaces this one from then on.\\n\"\n }\n }\n },\n \"Problem\": {\n \"type\": \"object\",\n \"description\": \"RFC 7807 problem details.\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"title\",\n \"status\",\n \"code\",\n \"detail\",\n \"requestId\",\n \"retryable\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"`urn:synapsetree:problem:<code>`.\",\n \"pattern\": \"^urn:synapsetree:problem:[a-z_]+$\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"integer\",\n \"minimum\": 400,\n \"maximum\": 599\n },\n \"code\": {\n \"$ref\": \"#/components/schemas/ProblemCode\"\n },\n \"detail\": {\n \"type\": \"string\"\n },\n \"requestId\": {\n \"type\": \"string\",\n \"pattern\": \"^req_[A-Za-z0-9]{8,64}$\"\n },\n \"retryable\": {\n \"type\": \"boolean\"\n },\n \"retryAfterSeconds\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"errors\": {\n \"type\": \"array\",\n \"description\": \"Validation failures (`invalid_request`).\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"path\",\n \"message\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\",\n \"description\": \"JSON Pointer into the request.\"\n },\n \"message\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"parseFailures\": {\n \"type\": \"array\",\n \"description\": \"Per-chunk failures (`ingest_failed`).\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkFailure\"\n }\n },\n \"duplicateOf\": {\n \"description\": \"The sourceRef already holding this content (`source_hash_conflict`).\",\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\n \"node\",\n \"edge\"\n ],\n \"description\": \"What violated the ontology (`ontology_violation`).\"\n },\n \"ontologyType\": {\n \"type\": \"string\",\n \"description\": \"The out-of-manifest type (`ontology_violation`).\"\n },\n \"reason\": {\n \"type\": \"string\",\n \"description\": \"Machine-readable sub-reason, e.g. `immutable_target` for `invalid_state`.\"\n }\n }\n },\n \"ProblemCode\": {\n \"description\": \"Stable machine-readable error code. Open: new codes may be added in minor versions, so\\nclients must treat an unlisted code as a generic error of its HTTP status. The listed\\nvalues are the codes this version defines.\\n\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"invalid_request\",\n \"insufficient_scope\",\n \"subscription_inactive\",\n \"quota_exceeded\",\n \"not_found\",\n \"namespace_exists\",\n \"conflict\",\n \"invalid_state\",\n \"source_hash_conflict\",\n \"node_id_unavailable\",\n \"namespace_busy\",\n \"idempotency_in_progress\",\n \"extraction_plan_stale\",\n \"inference_not_configured\",\n \"inference_config_invalid\",\n \"payload_too_large\",\n \"idempotency_key_reused\",\n \"ontology_violation\",\n \"ingest_failed\",\n \"embedding_dimension_mismatch\",\n \"embedding_model_mismatch\",\n \"rate_limited\",\n \"internal\",\n \"not_implemented\",\n \"unavailable\",\n \"upstream_inference_unavailable\",\n \"fenced\",\n \"unauthorized\"\n ]\n },\n {\n \"type\": \"string\",\n \"pattern\": \"^[a-z_]+$\",\n \"maxLength\": 64\n }\n ]\n },\n \"QueryDiagnostics\": {\n \"type\": \"object\",\n \"description\": \"Named BYOK diagnostics for a query response. A typed map: keys are diagnostic\\nnames, values are scalars; unknown names are legal and clients must ignore them.\\nReported reasons include `keyword_only: true` (the organization has no embeddings\\nregistration) and `embed_unavailable: <reason>` (key or provider fault, or the tier\\ncap exhausted). While a maintenance run holds the namespace, vector search is\\npaused and reads answer keyword-only; the run itself is surfaced through\\n`currentRunId` and `currentRunState` on the pending-maintenance object. All of\\nthese are normal keyword-only degradation, not errors.\\n\",\n \"additionalProperties\": {\n \"description\": \"A named diagnostic flag, count or label.\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"examples\": [\n {\n \"keyword_only\": true\n }\n ]\n },\n \"QueryRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespaces\",\n \"query\"\n ],\n \"properties\": {\n \"namespaces\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 20,\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n }\n },\n \"query\": {\n \"type\": \"string\",\n \"maxLength\": 4096,\n \"description\": \"Search text. Empty returns the most recent facts.\"\n },\n \"queryEmbedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n },\n \"limit\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100,\n \"default\": 10\n },\n \"hybridWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"0 = keyword only, 1 = semantic only. Omit for the default semantic ranking.\"\n },\n \"excludeDrafts\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"asOf\": {\n \"description\": \"Return facts that were true at this instant, using current knowledge.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"weights\": {\n \"type\": \"object\",\n \"description\": \"Per-namespace score multipliers (default 1; 0 skips the namespace).\",\n \"propertyNames\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"additionalProperties\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"floors\": {\n \"type\": \"object\",\n \"description\": \"Minimum results reserved per namespace before the global `limit` cut.\",\n \"propertyNames\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"additionalProperties\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100\n }\n },\n \"tokenBudget\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200000,\n \"description\": \"Pack facts into this many estimated tokens.\",\n \"x-synapsetree-engine\": \"read({ tokenBudget }) (core-llm-wiki 7.8.0 phase D)\"\n }\n }\n },\n \"QueryResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"facts\",\n \"scores\",\n \"tasks\",\n \"events\"\n ],\n \"properties\": {\n \"facts\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n },\n \"scores\": {\n \"type\": \"object\",\n \"description\": \"Score per returned fact id (empty for recency reads).\",\n \"additionalProperties\": {\n \"type\": \"number\"\n }\n },\n \"tasks\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Task\"\n }\n },\n \"events\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Event\"\n }\n },\n \"diagnostics\": {\n \"description\": \"Additive BYOK diagnostics; present only when there is something to report\\n(e.g. the searched namespaces serve keyword-only facts because the org has\\nno embeddings registration).\\n\",\n \"$ref\": \"#/components/schemas/QueryDiagnostics\"\n }\n }\n },\n \"RememberRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"title\",\n \"body\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"sourceType\": {\n \"type\": \"string\",\n \"enum\": [\n \"user_stated\",\n \"user_confirmed\"\n ],\n \"default\": \"user_stated\"\n },\n \"okfType\": {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n \"validFrom\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"RevokeRequest\": {\n \"type\": \"object\",\n \"description\": \"Form-urlencoded revocation body (RFC 7009 §2.1).\",\n \"additionalProperties\": false,\n \"required\": [\n \"token\"\n ],\n \"properties\": {\n \"token\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The API key to revoke (revocation is defined for keys only).\"\n },\n \"token_type_hint\": {\n \"type\": \"string\",\n \"enum\": [\n \"access_token\"\n ],\n \"description\": \"Optional RFC 7009 §2.1 hint.\"\n }\n }\n },\n \"ServerExtractionIngest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"mode\",\n \"namespace\",\n \"sourceRef\",\n \"sourceHash\",\n \"content\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"const\": \"server_extraction\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n \"content\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 524288\n },\n \"onDuplicateHash\": {\n \"$ref\": \"#/components/schemas/OnDuplicateHash\"\n },\n \"chunking\": {\n \"$ref\": \"#/components/schemas/Chunking\"\n }\n }\n },\n \"SourceHash\": {\n \"type\": \"string\",\n \"description\": \"Lowercase hex SHA-256 of the source's bytes.\",\n \"pattern\": \"^[0-9a-f]{64}$\",\n \"examples\": [\n \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\"\n ]\n },\n \"SourceRef\": {\n \"type\": \"string\",\n \"description\": \"Identifies one source document within a namespace. Restricted to characters the engine\\nstores unchanged; the SDK's `toSourceRef(path)` encodes `/` as `__`.\\n\",\n \"pattern\": \"^[A-Za-z0-9._\\\\- ]{1,255}$\",\n \"examples\": [\n \"infra__stack.ts\"\n ]\n },\n \"SourceType\": {\n \"type\": \"string\",\n \"description\": \"How a fact was produced. `immutable_document` facts change only by re-ingesting their source.\",\n \"enum\": [\n \"immutable_document\",\n \"librarian_inferred\",\n \"user_stated\",\n \"user_confirmed\"\n ]\n },\n \"SupersedeRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"replacement\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"validFrom\": {\n \"description\": \"When the old fact stopped being true and the replacement became true. Defaults to now.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"replacement\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/NewFactReplacement\"\n },\n {\n \"$ref\": \"#/components/schemas/ExistingFactReplacement\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"kind\",\n \"mapping\": {\n \"new\": \"#/components/schemas/NewFactReplacement\",\n \"existing\": \"#/components/schemas/ExistingFactReplacement\"\n }\n }\n }\n }\n },\n \"SupersedeResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"superseded\",\n \"replacement\"\n ],\n \"properties\": {\n \"superseded\": {\n \"$ref\": \"#/components/schemas/Fact\"\n },\n \"replacement\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n }\n },\n \"Task\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"description\",\n \"status\",\n \"priority\",\n \"okfType\",\n \"createdAt\",\n \"updatedAt\",\n \"resolvedAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"description\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"pending\",\n \"in_progress\",\n \"done\",\n \"abandoned\"\n ]\n },\n \"priority\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 10\n },\n \"okfType\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"updatedAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"resolvedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n },\n \"Timestamp\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"RFC 3339 timestamp, UTC.\",\n \"examples\": [\n \"2026-09-29T10:00:00Z\"\n ]\n },\n \"TokenResponse\": {\n \"type\": \"object\",\n \"description\": \"RFC 6749 §5.1 success response — exactly one freshly minted API key.\",\n \"additionalProperties\": false,\n \"required\": [\n \"access_token\",\n \"token_type\",\n \"account_id\",\n \"scope\"\n ],\n \"properties\": {\n \"access_token\": {\n \"type\": \"string\",\n \"pattern\": \"^stree_[A-Za-z0-9_-]{43}$\",\n \"description\": \"The minted API key. The only time it is ever shown.\"\n },\n \"token_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Bearer\"\n ],\n \"description\": \"RFC 6749 §5.1 — keys authenticate as bearer tokens.\"\n },\n \"account_id\": {\n \"type\": \"string\",\n \"description\": \"The organization the key belongs to (its `account_id` context).\"\n },\n \"scope\": {\n \"type\": \"string\",\n \"const\": \"memory:full\",\n \"description\": \"Agent keys always carry the full memory scope.\"\n }\n }\n },\n \"TraverseRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"sourceId\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"maxDepth\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 3,\n \"default\": 1\n },\n \"direction\": {\n \"$ref\": \"#/components/schemas/Direction\"\n },\n \"edgeTypes\": {\n \"type\": \"array\",\n \"description\": \"Allowed edge types. Omit for all; an empty array matches none.\",\n \"maxItems\": 100,\n \"items\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n }\n },\n \"maxNodes\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200,\n \"default\": 20\n },\n \"minConfidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"excludeSourceTypes\": {\n \"type\": \"array\",\n \"maxItems\": 4,\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/components/schemas/SourceType\"\n }\n },\n \"excludeDrafts\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"asOf\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"tokenBudget\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200000,\n \"x-synapsetree-engine\": \"traverseGraph({ tokenBudget }) (core-llm-wiki 7.8.0 phase D)\"\n }\n }\n },\n \"TraverseResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"nodes\",\n \"edges\"\n ],\n \"properties\": {\n \"nodes\": {\n \"type\": \"array\",\n \"description\": \"Anchor first, then neighbours by depth.\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n },\n \"edges\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Edge\"\n }\n }\n }\n },\n \"TrustTier\": {\n \"type\": \"string\",\n \"enum\": [\n \"unverified\",\n \"machine-confirmed\",\n \"human-reviewed\"\n ]\n },\n \"UserConfirmedFact\": {\n \"type\": \"object\",\n \"description\": \"A fact a user has confirmed.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"user_confirmed\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"UserStatedFact\": {\n \"type\": \"object\",\n \"description\": \"A fact stated directly by a user or agent.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"user_stated\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"Whoami\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"apiKeyId\",\n \"organizationId\",\n \"tenantDatabaseId\",\n \"scope\",\n \"planCode\",\n \"subscriptionStatus\"\n ],\n \"properties\": {\n \"apiKeyId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"organizationId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"tenantDatabaseId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"scope\": {\n \"type\": \"string\",\n \"enum\": [\n \"read\",\n \"read_write\",\n \"memory:full\",\n \"memory:admin\"\n ],\n \"description\": \"The key's scope. `read` and `read_write` are dashboard-issued keys; `memory:full`\\nis the agent key issued through auth.md; `memory:admin` is accepted but not issued\\nin v1. A `memory:full` key is refused the export and destructive operations;\\n`memory:admin` passes them.\\n\"\n },\n \"planCode\": {\n \"description\": \"Open; new plans may be added.\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"hobby\",\n \"pro\",\n \"team\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1\n }\n ]\n },\n \"subscriptionStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"inactive\",\n \"trialing\",\n \"active\",\n \"past_due\",\n \"canceled\",\n \"unpaid\",\n \"incomplete\",\n \"incomplete_expired\",\n \"paused\"\n ]\n }\n }\n }\n },\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"type\": \"http\",\n \"scheme\": \"bearer\",\n \"bearerFormat\": \"stree_<43 base64url chars>\",\n \"description\": \"A SynapseTree API key: `Authorization: Bearer stree_…`.\"\n }\n }\n },\n \"tags\": [\n {\n \"name\": \"memory\",\n \"description\": \"Search, ingest, and record memory.\"\n },\n {\n \"name\": \"facts\",\n \"description\": \"Individual facts, their history, and temporal supersession.\"\n },\n {\n \"name\": \"graph\",\n \"description\": \"Graph traversal and deterministic graph writes.\"\n },\n {\n \"name\": \"namespaces\",\n \"description\": \"Namespaces inside the tenant database.\"\n },\n {\n \"name\": \"account\",\n \"description\": \"The calling key's routing context.\"\n },\n {\n \"name\": \"agent\",\n \"description\": \"auth.md agent registration — an AI agent signs a user up and the human\\nstays in charge. Unauthenticated registration, the RFC 8628-style claim\\npoll, and RFC 7009 revocation.\\n\"\n }\n ]\n}\n","import contractJson from '../contract/synapsetree-openapi.subset.json';\n\nexport type OperationId =\n | 'queryMemory'\n | 'rememberFact'\n | 'supersedeFact'\n | 'ingestDocument'\n | 'createEvent'\n | 'traverseGraph'\n | 'listNamespaces'\n | 'whoami'\n | 'registerAgentIdentity'\n | 'oauthToken'\n | 'oauthRevoke';\n\nexport const OPERATION_IDS: readonly OperationId[] = [\n 'queryMemory',\n 'rememberFact',\n 'supersedeFact',\n 'ingestDocument',\n 'createEvent',\n 'traverseGraph',\n 'listNamespaces',\n 'whoami',\n 'registerAgentIdentity',\n 'oauthToken',\n 'oauthRevoke',\n];\n\n/** memory:admin operations withheld from agents (SynapseTree ruling D3). Never called, never vendored. */\nexport const WITHHELD_OPERATION_IDS: readonly string[] = [\n 'exportMemory',\n 'importMemory',\n 'forgetFact',\n 'forgetSource',\n 'deleteNamespace',\n 'createMaintenanceRun',\n 'putOntology',\n];\n\nexport interface Operation {\n operationId: OperationId;\n method: 'GET' | 'POST';\n path: string;\n scope: 'read' | 'read_write' | null;\n /** Top-level request-body property names (union across oneOf/anyOf/allOf branches). */\n requestProperties: string[];\n /** Properties required in every branch. */\n requiredProperties: string[];\n queryParameters: string[];\n pathParameters: string[];\n acceptsIdempotencyKey: boolean;\n}\n\n// The subset is a plain OpenAPI 3 document; only the parts below are read.\ntype Json = Record<string, unknown>;\ninterface OpenApiDoc {\n info: Json & { version?: string; 'x-operations'?: string[] };\n paths: Record<string, Record<string, unknown>>;\n components: Record<string, Record<string, unknown>>;\n}\n\nconst doc = contractJson as unknown as OpenApiDoc;\n\nfunction resolve(node: unknown): Json | undefined {\n if (!node || typeof node !== 'object') return undefined;\n const ref = (node as Json).$ref;\n if (typeof ref === 'string') {\n const [, , kind, name] = ref.split('/');\n return resolve(doc.components[kind]?.[name]);\n }\n return node as Json;\n}\n\nfunction shape(schema: unknown): { props: Set<string>; required: Set<string> } {\n const props = new Set<string>();\n const required = new Set<string>();\n const s = resolve(schema);\n if (!s) return { props, required };\n const branches = (s.oneOf ?? s.anyOf) as unknown[] | undefined;\n if (branches && branches.length > 0) {\n const shapes = branches.map(shape);\n for (const sh of shapes) for (const p of sh.props) props.add(p);\n for (const p of shapes[0].required) if (shapes.every((sh) => sh.required.has(p))) required.add(p);\n }\n for (const part of (s.allOf as unknown[] | undefined) ?? []) {\n const sh = shape(part);\n for (const p of sh.props) props.add(p);\n for (const p of sh.required) required.add(p);\n }\n for (const p of Object.keys((s.properties as Json | undefined) ?? {})) props.add(p);\n for (const p of (s.required as string[] | undefined) ?? []) required.add(p);\n return { props, required };\n}\n\nfunction parameters(pathItem: Record<string, unknown>, op: Json): Json[] {\n const raw = [...((pathItem.parameters as unknown[]) ?? []), ...((op.parameters as unknown[]) ?? [])];\n return raw.map((p) => resolve(p)).filter((p): p is Json => p !== undefined);\n}\n\nfunction build(): Record<OperationId, Operation> {\n const table = {} as Record<OperationId, Operation>;\n for (const [path, pathItem] of Object.entries(doc.paths)) {\n for (const method of ['get', 'post'] as const) {\n const op = pathItem[method] as Json | undefined;\n if (!op) continue;\n const id = op.operationId as OperationId;\n if (!OPERATION_IDS.includes(id)) continue;\n const params = parameters(pathItem, op);\n const body = resolve(op.requestBody);\n const content = (body?.content as Record<string, Json> | undefined) ?? {};\n const media = Object.values(content)[0];\n const { props, required } = shape(media?.schema);\n table[id] = {\n operationId: id,\n method: method.toUpperCase() as 'GET' | 'POST',\n path,\n scope: (op['x-synapsetree-scope'] as 'read' | 'read_write' | undefined) ?? null,\n requestProperties: [...props],\n requiredProperties: [...required],\n queryParameters: params.filter((p) => p.in === 'query').map((p) => String(p.name)),\n pathParameters: params.filter((p) => p.in === 'path').map((p) => String(p.name)),\n acceptsIdempotencyKey: params.some((p) => p.in === 'header' && p.name === 'Idempotency-Key'),\n };\n }\n }\n const missing = OPERATION_IDS.filter((id) => !(id in table));\n if (missing.length > 0) throw new Error(`contract subset is missing operations: ${missing.join(', ')}`);\n return table;\n}\n\nexport const OPERATIONS: Readonly<Record<OperationId, Operation>> = build();\n\nexport const CONTRACT_INFO = {\n version: String(doc.info.version ?? ''),\n operations: [...(doc.info['x-operations'] ?? [])],\n};\n","import { randomUUID } from 'node:crypto';\nimport { OPERATIONS, type Operation, type OperationId } from './contract';\nimport { NO_KEY_MESSAGE, SynapseTreeError, UsageError } from './errors';\n\nexport const DEFAULT_BASE_URL = 'https://api.synapsetree.dev';\n\n/** Strips trailing slashes without a regex: CodeQL flags a slash-repetition\n * regex applied to library-controlled input as polynomial ReDoS. */\nexport function stripTrailingSlashes(url: string): string {\n let end = url.length;\n while (end > 0 && url[end - 1] === '/') end--;\n return url.slice(0, end);\n}\n\nexport interface ClientOptions {\n /** Optional only so `auth --email` can register and poll; every other operation needs it. */\n apiKey?: string;\n baseUrl: string;\n userAgent: string;\n fetch?: typeof fetch;\n sleep?: (ms: number) => Promise<void>;\n random?: () => number;\n}\n\nexport interface CallInput {\n path?: Record<string, string>;\n query?: Record<string, string | number | boolean | undefined>;\n body?: Record<string, unknown>;\n form?: Record<string, string | undefined>;\n timeoutMs?: number;\n}\n\nexport interface CallResult<T> {\n status: number;\n data: T;\n requestId?: string;\n rateLimit?: string;\n rateLimitPolicy?: string;\n idempotentReplayed: boolean;\n}\n\nconst RETRY_STATUSES = new Set([408, 429, 502, 503, 504]);\nconst MAX_ATTEMPTS = 3;\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst TIMEOUTS: Partial<Record<OperationId, number>> = { ingestDocument: 120_000 };\nconst UNAUTHENTICATED: ReadonlySet<OperationId> = new Set(['registerAgentIdentity', 'oauthToken']);\n\nfunction buildUrl(baseUrl: string, op: Operation, input: CallInput): string {\n let path = op.path;\n for (const name of op.pathParameters) {\n const value = input.path?.[name];\n if (value === undefined) throw new UsageError(`missing path parameter ${name} for ${op.operationId}`);\n path = path.replace(`{${name}}`, encodeURIComponent(value));\n }\n const url = new URL(baseUrl + path);\n for (const [k, v] of Object.entries(input.query ?? {})) {\n if (v !== undefined) url.searchParams.set(k, String(v));\n }\n return url.toString();\n}\n\nconst MAX_RETRY_AFTER_MS = 30_000;\n\nfunction retryAfterMs(res: Response, body: unknown): number | undefined {\n // Cap the wait: a huge Retry-After (or a day-long hint in the body) must\n // not hang a single tool call for that long; the capped wait keeps the\n // call bounded while still honoring the server's intent.\n const cap = (ms: number) => Math.min(MAX_RETRY_AFTER_MS, ms);\n const header = res.headers.get('retry-after');\n if (header) {\n const seconds = Number(header);\n if (Number.isFinite(seconds)) return cap(Math.max(0, seconds * 1000));\n const date = Date.parse(header);\n if (Number.isFinite(date)) return cap(Math.max(0, date - Date.now()));\n }\n const fromBody = (body as { retryAfterSeconds?: unknown } | undefined)?.retryAfterSeconds;\n return typeof fromBody === 'number' ? cap(fromBody * 1000) : undefined;\n}\n\nasync function readBody(res: Response): Promise<{ text: string; json: unknown; isProblem: boolean; isJson: boolean }> {\n const type = res.headers.get('content-type') ?? '';\n const text = await res.text();\n const isProblem = type.startsWith('application/problem+json');\n const isJson = isProblem || type.startsWith('application/json');\n let json: unknown;\n if (isJson && text.length > 0) {\n try { json = JSON.parse(text); } catch { json = undefined; }\n }\n return { text, json, isProblem, isJson: json !== undefined };\n}\n\nfunction toError(res: Response, parsed: { text: string; json: unknown; isProblem: boolean; isJson: boolean }): SynapseTreeError {\n const requestId = res.headers.get('request-id') ?? undefined;\n const body = (parsed.json ?? {}) as Record<string, unknown>;\n if (parsed.isProblem && typeof body.code === 'string') {\n return new SynapseTreeError({\n status: res.status,\n code: body.code,\n detail: typeof body.detail === 'string' ? body.detail : undefined,\n requestId: typeof body.requestId === 'string' ? body.requestId : requestId,\n retryAfterSeconds: typeof body.retryAfterSeconds === 'number' ? body.retryAfterSeconds : undefined,\n });\n }\n if (parsed.isJson && typeof body.error === 'string') {\n // RFC 6749 §5.2 body from the OAuth endpoints\n return new SynapseTreeError({ status: res.status, code: body.error, detail: typeof body.error_description === 'string' ? body.error_description : undefined, requestId });\n }\n if (res.status === 401 || res.status === 403) {\n return new SynapseTreeError({ status: res.status, code: 'unauthorized', detail: parsed.text.slice(0, 500) || undefined, requestId });\n }\n return new SynapseTreeError({ status: res.status, code: `http_${res.status}`, detail: parsed.text.slice(0, 500) || undefined, requestId });\n}\n\nexport class SynapseTreeClient {\n readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly userAgent: string;\n private readonly fetchImpl: typeof fetch;\n private readonly sleep: (ms: number) => Promise<void>;\n private readonly random: () => number;\n\n constructor(opts: ClientOptions) {\n this.apiKey = opts.apiKey;\n this.baseUrl = stripTrailingSlashes(opts.baseUrl);\n this.userAgent = opts.userAgent;\n this.fetchImpl = opts.fetch ?? globalThis.fetch;\n this.sleep = opts.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n this.random = opts.random ?? Math.random;\n }\n\n get hasKey(): boolean {\n return this.apiKey !== undefined;\n }\n\n async call<T = unknown>(opId: OperationId, input: CallInput = {}): Promise<CallResult<T>> {\n const op = OPERATIONS[opId];\n const authenticated = !UNAUTHENTICATED.has(opId);\n if (authenticated && !this.apiKey) throw new UsageError(NO_KEY_MESSAGE);\n\n const url = buildUrl(this.baseUrl, op, input);\n const headers: Record<string, string> = {\n Accept: 'application/json, application/problem+json',\n 'User-Agent': this.userAgent,\n };\n if (authenticated && this.apiKey) headers.Authorization = `Bearer ${this.apiKey}`;\n let body: string | undefined;\n if (input.form) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(input.form)) if (v !== undefined) params.set(k, v);\n body = params.toString();\n } else if (input.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n body = JSON.stringify(input.body);\n }\n if (op.acceptsIdempotencyKey) headers['Idempotency-Key'] = randomUUID();\n const timeoutMs = input.timeoutMs ?? TIMEOUTS[opId] ?? DEFAULT_TIMEOUT_MS;\n\n let lastError: SynapseTreeError | undefined;\n let waitMs: number | undefined;\n // registerAgentIdentity and oauthToken are single-attempt: neither has\n // an Idempotency-Key in the contract and both mint server-side state\n // (a claim; the one-time key that frees the claim). A blind retry after\n // an ambiguous failure (502/504 or a stalled body after the 200\n // committed) would burn the claim or orphan a minted key.\n const canRetry = opId !== 'registerAgentIdentity' && opId !== 'oauthToken';\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n if (attempt > 0) {\n if (!canRetry) break;\n await this.sleep(waitMs ?? Math.min(1000 * 2 ** attempt, 8000) + Math.floor(this.random() * 250));\n }\n let res: Response;\n let done: () => void;\n try {\n ({ res, done } = await this.send(url, { method: op.method, headers, body }, timeoutMs));\n } catch (err) {\n lastError = new SynapseTreeError({ status: 0, code: 'network_error', detail: err instanceof Error ? err.message : String(err) });\n waitMs = undefined;\n continue;\n }\n // The abort timer stays armed until the body has been consumed: a\n // server that sends headers and stalls the body must still hit the\n // timeout instead of hanging the tool call forever.\n try {\n let parsed: Awaited<ReturnType<typeof readBody>>;\n try {\n parsed = await readBody(res);\n } catch (err) {\n // A body that fails after the headers (connection reset mid-body,\n // or the stall abort firing) is transient: map it so the retry\n // loop and the auth polling loop treat it like any other\n // network error instead of surfacing a raw TypeError.\n if (err instanceof SynapseTreeError) throw err;\n lastError = new SynapseTreeError({ status: 0, code: 'network_error', detail: err instanceof Error ? err.message : String(err) });\n waitMs = undefined;\n continue;\n }\n if (RETRY_STATUSES.has(res.status)) {\n lastError = toError(res, parsed);\n waitMs = retryAfterMs(res, parsed.json);\n continue;\n }\n if (res.ok || (opId === 'oauthToken' && res.status === 400)) {\n return {\n status: res.status,\n data: parsed.json as T,\n requestId: res.headers.get('request-id') ?? undefined,\n rateLimit: res.headers.get('ratelimit') ?? undefined,\n rateLimitPolicy: res.headers.get('ratelimit-policy') ?? undefined,\n idempotentReplayed: res.headers.get('idempotent-replayed') === 'true',\n };\n }\n throw toError(res, parsed);\n } finally {\n done();\n }\n }\n throw lastError ?? new SynapseTreeError({ status: 0, code: 'network_error' });\n }\n\n private async send(url: string, init: RequestInit, timeoutMs: number): Promise<{ res: Response; done: () => void }> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(new Error(`timeout after ${timeoutMs} ms`)), timeoutMs);\n let res: Response;\n try {\n res = await this.fetchImpl(url, { ...init, signal: controller.signal });\n } catch (err) {\n // A rejected fetch must not leave the timer pending (it would keep the\n // process alive until it fires).\n clearTimeout(timer);\n throw err;\n }\n return { res, done: () => clearTimeout(timer) };\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport { chmod, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { DEFAULT_BASE_URL, stripTrailingSlashes } from './client';\nimport { UsageError } from './errors';\n\nexport interface Credentials {\n apiKey: string;\n accountId: string | null;\n source: 'dashboard' | 'authmd';\n obtainedAt: string;\n}\n\nexport interface Config {\n namespace?: string;\n baseUrl?: string;\n}\n\nexport interface DirEnv {\n SYNAPSETREE_CONFIG_DIR?: string;\n XDG_CONFIG_HOME?: string;\n APPDATA?: string;\n}\n\nexport const KEY_PATTERN = /^stree_[A-Za-z0-9_-]{43}$/;\nconst CREDENTIALS_FILE = 'credentials.json';\nconst CONFIG_FILE = 'config.json';\n\nexport function configDir(env: DirEnv = process.env, platform: NodeJS.Platform = process.platform, home: string = homedir()): string {\n if (env.SYNAPSETREE_CONFIG_DIR) return env.SYNAPSETREE_CONFIG_DIR;\n if (env.XDG_CONFIG_HOME) return join(env.XDG_CONFIG_HOME, 'synapsetree');\n if (platform === 'darwin') return join(home, 'Library', 'Application Support', 'synapsetree');\n if (platform === 'win32') return join(env.APPDATA ?? join(home, 'AppData', 'Roaming'), 'synapsetree');\n return join(home, '.config', 'synapsetree');\n}\n\nasync function readJson<T>(path: string): Promise<T | null> {\n let text: string;\n try {\n text = await readFile(path, 'utf8');\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return null;\n throw err;\n }\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new UsageError(`${path} is not valid JSON. Fix it or delete it.`);\n }\n}\n\n/** Atomic: temp file in the same directory, mode 0600, then rename over the target. Modes are best-effort on Windows. */\nasync function writeJson(dir: string, name: string, value: unknown): Promise<void> {\n // Tighten permissions only on a directory this process just created:\n // never rechmod a directory the user pointed the config at (it may be\n // shared or be $HOME itself). The file is still written 0600.\n const created = await mkdir(dir, { recursive: true, mode: 0o700 });\n if (created) await chmod(created, 0o700).catch(() => undefined);\n const target = join(dir, name);\n const tmp = join(dir, `${name}.${randomUUID()}.tmp`);\n await writeFile(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 });\n try {\n await rename(tmp, target);\n } catch (err) {\n await unlink(tmp).catch(() => undefined);\n throw err;\n }\n}\n\nexport async function readCredentials(dir: string): Promise<Credentials | null> {\n const value = await readJson<Credentials>(join(dir, CREDENTIALS_FILE));\n if (value && typeof value.apiKey !== 'string') throw new UsageError(`${join(dir, CREDENTIALS_FILE)} has no apiKey. Fix it or delete it.`);\n return value;\n}\n\nexport function writeCredentials(dir: string, creds: Credentials): Promise<void> {\n return writeJson(dir, CREDENTIALS_FILE, creds);\n}\n\nexport async function deleteCredentials(dir: string): Promise<boolean> {\n try {\n await unlink(join(dir, CREDENTIALS_FILE));\n return true;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return false;\n throw err;\n }\n}\n\nexport async function readConfig(dir: string): Promise<Config> {\n return (await readJson<Config>(join(dir, CONFIG_FILE))) ?? {};\n}\n\nexport function writeConfig(dir: string, config: Config): Promise<void> {\n return writeJson(dir, CONFIG_FILE, config);\n}\n\n/**\n * Guards every base-URL source (flag, config file, env): the bearer key may\n * never traverse plaintext HTTP except to a loopback host.\n */\nexport function validateBaseUrl(url: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new UsageError(`base-url is not a valid URL: ${url}`);\n }\n if (parsed.protocol === 'https:') return url;\n const loopback = ['localhost', '127.0.0.1', '[::1]', '::1'].includes(parsed.hostname);\n if (parsed.protocol === 'http:' && loopback) return url;\n throw new UsageError('base-url must use https:// (http:// is only allowed for localhost) so the API key is never sent in cleartext.');\n}\n\nexport interface Settings {\n apiKey?: string;\n keySource: 'env' | 'file' | null;\n accountId: string | null;\n baseUrl: string;\n namespace?: string;\n dir: string;\n}\n\nexport async function resolveSettings(env: NodeJS.ProcessEnv = process.env, dir: string = configDir(env)): Promise<Settings> {\n const creds = await readCredentials(dir);\n const config = await readConfig(dir);\n const envKey = env.SYNAPSETREE_API_KEY;\n const apiKey = envKey || creds?.apiKey;\n return {\n apiKey,\n keySource: envKey ? 'env' : creds ? 'file' : null,\n accountId: envKey ? null : (creds?.accountId ?? null),\n baseUrl: validateBaseUrl(stripTrailingSlashes(env.SYNAPSETREE_BASE_URL || config.baseUrl || DEFAULT_BASE_URL)),\n namespace: env.SYNAPSETREE_NAMESPACE || config.namespace,\n dir,\n };\n}\n\nexport function maskKey(key: string): string {\n return `stree_…${key.slice(-4)}`;\n}\n","import { z } from 'zod';\nimport type { SynapseTreeClient } from '../client';\nimport type { OperationId } from '../contract';\nimport { NO_NAMESPACE_MESSAGE, UsageError } from '../errors';\n\nexport interface ToolContext {\n client: SynapseTreeClient;\n defaultNamespace?: string;\n}\n\nexport interface ToolDefinition<S extends z.ZodObject<z.ZodRawShape> = z.ZodObject<z.ZodRawShape>> {\n name: string;\n /** The text the model reads. Spec §8 wording is verbatim. */\n description: string;\n operation: OperationId;\n inputSchema: S;\n handler: (input: z.output<S>, ctx: ToolContext) => Promise<unknown>;\n}\n\nexport function defineTool<S extends z.ZodObject<z.ZodRawShape>>(def: ToolDefinition<S>): ToolDefinition<S> {\n return def;\n}\n\nexport const NAMESPACE_PATTERN = /^[a-z0-9][a-z0-9._:-]{0,127}$/;\n\nexport const namespaceField = z\n .string()\n .regex(NAMESPACE_PATTERN, 'namespace must match ^[a-z0-9][a-z0-9._:-]{0,127}$')\n .optional()\n .describe('Namespace to use. Defaults to the configured namespace (synapsetree-mcp config set namespace repo:<name>).');\n\nexport const dateTimeField = z.iso.datetime({ offset: true });\n\nexport const confidenceField = z.enum(['certain', 'inferred', 'tentative']);\n\nexport function resolveNamespace(given: string | undefined, ctx: ToolContext): string {\n const namespace = given ?? ctx.defaultNamespace;\n if (!namespace) throw new UsageError(NO_NAMESPACE_MESSAGE);\n return namespace;\n}\n\n/** Drops undefined values so the request body carries only what the caller set. */\nexport function compact<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Partial<T> = {};\n for (const [k, v] of Object.entries(obj)) if (v !== undefined) (out as Record<string, unknown>)[k] = v;\n return out;\n}\n","import { z } from 'zod';\nimport { compact, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const graphTraverse = defineTool({\n name: 'graph_traverse',\n description: 'Walk the knowledge graph from a fact or node id, up to three hops. Returns the anchor first, then neighbours by depth, and the edges between them.',\n operation: 'traverseGraph',\n inputSchema: z.object({\n namespace: namespaceField,\n sourceId: z.string().min(1).max(255).describe('The fact or graph node id to start from.'),\n maxDepth: z.number().int().min(1).max(3).default(1),\n direction: z.enum(['inbound', 'outbound', 'both']).optional(),\n edgeTypes: z.array(z.string().min(1).max(128)).max(100).optional().describe('Allowed edge types, e.g. dependsOn, documents, supersedes. Omit for all.'),\n maxNodes: z.number().int().min(1).max(200).default(20),\n excludeDrafts: z.boolean().optional(),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('traverseGraph', {\n body: compact({\n namespace,\n sourceId: input.sourceId,\n maxDepth: input.maxDepth,\n direction: input.direction,\n edgeTypes: input.edgeTypes,\n maxNodes: input.maxNodes,\n excludeDrafts: input.excludeDrafts,\n }),\n });\n return res.data;\n },\n});\n","import { createHash } from 'node:crypto';\nimport { z } from 'zod';\nimport { INGEST_PROVIDER_MESSAGE, UsageError } from '../errors';\nimport { compact, defineTool, namespaceField, resolveNamespace } from './shared';\n\nconst SOURCE_REF_PATTERN = /^[A-Za-z0-9._\\- ]{1,255}$/;\n\n/** `/` becomes `__` (the SDK's rule); anything else illegal is an error naming the characters. */\nexport function encodeSourceRef(raw: string): string {\n const encoded = raw.replace(/\\//g, '__');\n if (!SOURCE_REF_PATTERN.test(encoded)) {\n const bad = [...new Set(encoded.replace(/[A-Za-z0-9._\\- ]/g, ''))].join(' ');\n throw new UsageError(`sourceRef may only contain letters, digits, \".\", \"_\", \"-\", and spaces (1–255 chars); \"/\" is encoded as \"__\". Illegal: ${bad || 'length'}`);\n }\n return encoded;\n}\n\nexport const memoryIngest = defineTool({\n name: 'memory_ingest',\n description: `Store a whole document; SynapseTree extracts the facts. ${INGEST_PROVIDER_MESSAGE}`,\n operation: 'ingestDocument',\n inputSchema: z.object({\n namespace: namespaceField,\n sourceRef: z.string().min(1).max(255).describe('Identifies the document, e.g. a repo-relative path. \"/\" is encoded as \"__\".'),\n content: z.string().min(1).max(524288),\n onDuplicateHash: z.enum(['skip', 'ingest', 'error']).default('skip').describe('What to do when another sourceRef already holds identical content.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const sourceRef = encodeSourceRef(input.sourceRef);\n const sourceHash = createHash('sha256').update(input.content, 'utf8').digest('hex');\n const res = await ctx.client.call('ingestDocument', {\n body: compact({ mode: 'server_extraction', namespace, sourceRef, sourceHash, content: input.content, onDuplicateHash: input.onDuplicateHash }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memoryLogEvent = defineTool({\n name: 'memory_log_event',\n description: 'Record that something happened: an observation, decision, action, or outcome, optionally tied to a fact.',\n operation: 'createEvent',\n inputSchema: z.object({\n namespace: namespaceField,\n eventType: z.enum(['observation', 'decision', 'action', 'outcome']),\n // SynapseTree trims, then allows 1-4000 UTF-16 units (contract CreateEventRequest.summary).\n // zod's max() and JSON Schema's maxLength count code points, so the refine enforces UTF-16 units.\n summary: z\n .string()\n .trim()\n .min(1)\n .max(4000)\n .refine((s) => s.length <= 4000, { message: 'summary is over 4000 UTF-16 code units (astral characters count twice)' }),\n relatedFactId: z.string().min(1).max(255).optional(),\n occurredAt: dateTimeField.optional().describe('When it happened. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('createEvent', {\n body: compact({ namespace, eventType: input.eventType, summary: input.summary, relatedFactId: input.relatedFactId, occurredAt: input.occurredAt }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, confidenceField, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memoryRemember = defineTool({\n name: 'memory_remember',\n description:\n 'Store one fact the user decided or you observed. Works with no provider registered. Use `memory_ingest` for a whole document.',\n operation: 'rememberFact',\n inputSchema: z.object({\n namespace: namespaceField,\n title: z.string().min(1).max(1000),\n body: z.string().min(1).max(100000),\n tags: z.array(z.string().min(1).max(100)).max(100).optional(),\n confidence: confidenceField.optional(),\n okfType: z.string().min(1).max(128).optional().describe('Ontology node type, e.g. project, person, design_spec, procedure.'),\n validFrom: dateTimeField.optional().describe('When the fact became true. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('rememberFact', {\n body: compact({\n namespace,\n title: input.title,\n body: input.body,\n tags: input.tags,\n confidence: input.confidence,\n sourceType: 'user_stated',\n okfType: input.okfType,\n validFrom: input.validFrom,\n }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memorySearch = defineTool({\n name: 'memory_search',\n description:\n \"Search the user's SynapseTree memory. Semantic search needs an embeddings provider registered by the account owner in the dashboard; \" +\n 'without one this is keyword search and `diagnostics.keyword_only` says so. That is normal, not an error. ' +\n 'Returns facts with scores, pending tasks, recent events, and diagnostics. Not paginated: raise `limit` (max 100) for more.',\n operation: 'queryMemory',\n inputSchema: z.object({\n namespace: namespaceField,\n query: z.string().max(4096).describe('Search text. Empty returns the most recent facts.'),\n limit: z.number().int().min(1).max(100).default(10),\n excludeDrafts: z.boolean().optional(),\n asOf: dateTimeField.optional().describe('RFC 3339 timestamp; search memory as it was at that moment.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('queryMemory', {\n body: compact({ namespaces: [namespace], query: input.query, limit: input.limit, excludeDrafts: input.excludeDrafts, asOf: input.asOf }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, confidenceField, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memorySupersede = defineTool({\n name: 'memory_supersede',\n description: 'Replace a fact with a corrected one and keep the old one in history. Never deletes.',\n operation: 'supersedeFact',\n inputSchema: z.object({\n namespace: namespaceField,\n factId: z.string().min(1).max(255).describe('The fact to replace.'),\n title: z.string().min(1).max(1000),\n body: z.string().min(1).max(100000),\n tags: z.array(z.string().min(1).max(100)).max(100).optional(),\n confidence: confidenceField.optional(),\n validFrom: dateTimeField.optional().describe('When the replacement became true. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('supersedeFact', {\n path: { factId: input.factId },\n body: compact({\n namespace,\n validFrom: input.validFrom,\n replacement: compact({ kind: 'new', title: input.title, body: input.body, tags: input.tags, confidence: input.confidence, sourceType: 'user_stated' }),\n }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { defineTool, namespaceField } from './shared';\n\nconst PAGE = 100;\nconst CAP = 500;\n\ninterface Page { data: { namespace: string }[]; hasMore: boolean; nextCursor: string | null }\n\nexport const namespacesList = defineTool({\n name: 'namespaces_list',\n description: \"List the namespaces in the user's database, optionally by prefix. Stops after 500 names and sets `truncated`.\",\n operation: 'listNamespaces',\n inputSchema: z.object({\n // Accepted for uniformity (spec §5.6, §8) but never sent: listNamespaces is database-wide in the contract.\n namespace: namespaceField.describe('Ignored: listing is database-wide. Use `prefix` to filter.'),\n prefix: z.string().max(128).optional(),\n }),\n async handler(input, ctx) {\n const namespaces: string[] = [];\n let after: string | undefined;\n let truncated = false;\n for (;;) {\n const res = await ctx.client.call<Page>('listNamespaces', { query: { prefix: input.prefix, limit: PAGE, after } });\n for (const row of res.data.data) namespaces.push(row.namespace);\n if (!res.data.data.length) break; // an empty page with hasMore would otherwise loop forever\n if (!res.data.hasMore || !res.data.nextCursor) break;\n if (namespaces.length >= CAP) { truncated = true; break; }\n after = res.data.nextCursor;\n }\n return { namespaces: namespaces.slice(0, CAP), truncated };\n },\n});\n","import { z } from 'zod';\nimport { defineTool } from './shared';\n\nexport interface WhoamiResult {\n apiKeyId: string;\n organizationId: string;\n tenantDatabaseId: string;\n /** `read`/`read_write`: dashboard keys; `memory:full`: auth.md agent keys; `memory:admin`: accepted, not issued in v1. */\n scope: 'read' | 'read_write' | 'memory:full' | 'memory:admin';\n planCode: string | null;\n subscriptionStatus: string;\n}\n\nexport const whoami = defineTool({\n name: 'whoami',\n description: 'Show which SynapseTree account, database, scope, and plan this server is using.',\n operation: 'whoami',\n inputSchema: z.object({}),\n async handler(_input, ctx) {\n const res = await ctx.client.call<WhoamiResult>('whoami');\n return res.data;\n },\n});\n","import { graphTraverse } from './graph-traverse';\nimport { memoryIngest } from './memory-ingest';\nimport { memoryLogEvent } from './memory-log-event';\nimport { memoryRemember } from './memory-remember';\nimport { memorySearch } from './memory-search';\nimport { memorySupersede } from './memory-supersede';\nimport { namespacesList } from './namespaces-list';\nimport type { ToolDefinition } from './shared';\nimport { whoami } from './whoami';\n\n/** The only place tools are enumerated. Order is the spec §8 table. Adding an entry is a spec amendment (R4). */\nexport const TOOLS: readonly ToolDefinition[] = [\n memorySearch,\n memoryRemember,\n memorySupersede,\n memoryIngest,\n memoryLogEvent,\n graphTraverse,\n namespacesList,\n whoami,\n] as unknown as readonly ToolDefinition[];\n\nexport const TOOL_NAMES: readonly string[] = TOOLS.map((t) => t.name);\n\n/**\n * The canonical tool names this server mirrors from SynapseTree's cloud surface\n * (spec §8, ruling R9; naming convention per SynapseTree PR #151). Written out\n * by hand on purpose, NOT derived from `TOOLS`: the parity test asserts set\n * equality between this list and the names the server actually registers, so\n * any rename or new tool must change both. Names that are ratified but not yet\n * wired here (`ontology_get`) stay out until the server wires them.\n */\nexport const CANONICAL_TOOL_NAMES = [\n 'memory_search',\n 'memory_remember',\n 'memory_supersede',\n 'memory_ingest',\n 'memory_log_event',\n 'graph_traverse',\n 'namespaces_list',\n 'whoami',\n] as const;\n\nexport type { ToolContext, ToolDefinition } from './shared';\n","declare const __PKG_VERSION__: string | undefined;\n\n/** Injected by tsup `define` at build time; `0.0.0-dev` under vitest and tsc. */\nexport const VERSION: string = typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : '0.0.0-dev';\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { z } from 'zod';\nimport { toolErrorText } from './errors';\nimport { TOOLS } from './tools';\nimport type { ToolContext } from './tools/shared';\nimport { VERSION } from './version';\n\nexport const SERVER_NAME = 'synapsetree';\n\n/** Registers exactly the eight tools (spec §8). No resources, prompts, or sampling. */\nexport function createServer(ctx: ToolContext): McpServer {\n const server = new McpServer({ name: SERVER_NAME, version: VERSION });\n for (const tool of TOOLS) {\n server.registerTool(\n tool.name,\n { description: tool.description, inputSchema: tool.inputSchema.shape as z.ZodRawShape },\n async (args: unknown) => {\n try {\n const input = tool.inputSchema.parse(args ?? {});\n const result = await tool.handler(input, ctx);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result ?? null, null, 2) }] };\n } catch (err) {\n return { isError: true, content: [{ type: 'text' as const, text: toolErrorText(err) }] };\n }\n },\n );\n }\n return server;\n}\n","import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { registerByEmail } from './authmd';\nimport { SynapseTreeClient } from './client';\nimport {\n KEY_PATTERN, configDir, deleteCredentials, maskKey, readConfig, readCredentials, resolveSettings, validateBaseUrl, writeConfig, writeCredentials, type Settings,\n} from './credentials';\nimport { NO_KEY_MESSAGE, SynapseTreeError, UsageError } from './errors';\nimport { stripTrailingSlashes } from './client';\nimport { createServer } from './server';\nimport { NAMESPACE_PATTERN } from './tools/shared';\nimport type { WhoamiResult } from './tools/whoami';\nimport { VERSION } from './version';\n\nexport type Command =\n | { kind: 'serve' }\n | { kind: 'auth-key'; key: string }\n | { kind: 'auth-email'; email: string; baseUrl?: string }\n | { kind: 'auth-revoke' }\n | { kind: 'status' }\n | { kind: 'config-set'; key: 'namespace' | 'base-url'; value: string }\n | { kind: 'help' }\n | { kind: 'version' };\n\nexport const HELP = `synapsetree-mcp ${VERSION} — SynapseTree memory for coding agents (MCP over stdio)\n\nUsage:\n synapsetree-mcp [serve] run the MCP server (what your MCP client launches)\n synapsetree-mcp auth --key stree_… store a dashboard API key\n synapsetree-mcp auth --email you@example.com [--base-url URL]\n register through auth.md: you approve by email\n synapsetree-mcp auth --revoke revoke the stored key, then an exported env key\n synapsetree-mcp status show account, scope, plan, key source, namespace\n synapsetree-mcp config set namespace repo:<name>\n synapsetree-mcp config set base-url URL\n synapsetree-mcp --version | --help\n\nEnvironment: SYNAPSETREE_API_KEY, SYNAPSETREE_BASE_URL, SYNAPSETREE_NAMESPACE, SYNAPSETREE_CONFIG_DIR\nDocs: https://github.com/equationalapplications/expo-llm-wiki/tree/main/packages/mcp-server#readme\n`;\n\nexport function parseArgs(argv: string[]): Command {\n const [first, ...rest] = argv;\n if (first === undefined || first === 'serve') {\n if (rest.length > 0) throw new UsageError(`unexpected arguments after serve: ${rest.join(' ')}`);\n return { kind: 'serve' };\n }\n if (first === '--help' || first === '-h' || first === 'help') return { kind: 'help' };\n if (first === '--version' || first === '-v' || first === 'version') return { kind: 'version' };\n if (first === 'status') return { kind: 'status' };\n if (first === 'auth') {\n const flag = rest[0];\n if (flag === '--key') {\n const key = rest[1];\n if (!key || !KEY_PATTERN.test(key)) throw new UsageError('auth --key needs a key of the form stree_ followed by 43 characters (not shown).');\n return { kind: 'auth-key', key };\n }\n if (flag === '--email') {\n const email = rest[1];\n if (!email || !email.includes('@')) throw new UsageError('auth --email needs an email address.');\n const baseIdx = rest.indexOf('--base-url');\n const baseUrl = baseIdx >= 0 ? rest[baseIdx + 1] : undefined;\n if (baseIdx >= 0 && !baseUrl) throw new UsageError('--base-url needs a URL.');\n if (baseUrl) validateBaseUrl(baseUrl);\n return baseUrl ? { kind: 'auth-email', email, baseUrl } : { kind: 'auth-email', email };\n }\n if (flag === '--revoke') return { kind: 'auth-revoke' };\n throw new UsageError('auth needs one of --key, --email, --revoke.');\n }\n if (first === 'config') {\n const [verb, key, value] = rest;\n if (verb !== 'set' || (key !== 'namespace' && key !== 'base-url') || !value) {\n throw new UsageError('usage: config set namespace <name> | config set base-url <url>');\n }\n if (key === 'namespace' && !NAMESPACE_PATTERN.test(value)) throw new UsageError('namespace must match ^[a-z0-9][a-z0-9._:-]{0,127}$ (e.g. repo:myproject).');\n if (key === 'base-url') validateBaseUrl(value);\n return { kind: 'config-set', key, value };\n }\n throw new UsageError(`unknown command: ${first}\\n${HELP}`);\n}\n\nexport interface Io {\n out: (s: string) => void;\n err: (s: string) => void;\n env: NodeJS.ProcessEnv;\n fetch?: typeof fetch;\n configDir?: string;\n}\n\nconst userAgent = `synapsetree-mcp/${VERSION}`;\n\nfunction makeClient(settings: Pick<Settings, 'apiKey' | 'baseUrl'>, io: Io): SynapseTreeClient {\n return new SynapseTreeClient({ apiKey: settings.apiKey, baseUrl: settings.baseUrl, userAgent, fetch: io.fetch });\n}\n\nasync function printStatus(client: SynapseTreeClient, settings: Settings, io: Io): Promise<void> {\n const res = await client.call<WhoamiResult>('whoami');\n const w = res.data;\n const lines = [\n `key source: ${settings.keySource ?? 'none'}`,\n `key: ${settings.apiKey ? maskKey(settings.apiKey) : '(none)'}`,\n `organization: ${w.organizationId}`,\n `database: ${w.tenantDatabaseId}`,\n `scope: ${w.scope}`,\n `plan: ${w.planCode ?? '(none)'}`,\n `subscription: ${w.subscriptionStatus}`,\n `base url: ${settings.baseUrl}`,\n `namespace: ${settings.namespace ?? '(none set)'}`,\n ];\n if (res.rateLimit) lines.push(`ratelimit: ${res.rateLimit}`);\n if (res.rateLimitPolicy) lines.push(`ratelimit-policy: ${res.rateLimitPolicy}`);\n io.err(lines.join('\\n'));\n}\n\n/** Runs one command. Returns the exit code; never throws. */\nexport async function run(cmd: Command, io: Io): Promise<number> {\n const dir = io.configDir ?? configDir(io.env);\n try {\n switch (cmd.kind) {\n case 'help':\n io.out(HELP);\n return 0;\n case 'version':\n io.out(`${VERSION}\\n`);\n return 0;\n case 'config-set': {\n const config = await readConfig(dir);\n if (cmd.key === 'namespace') config.namespace = cmd.value;\n else config.baseUrl = stripTrailingSlashes(cmd.value);\n await writeConfig(dir, config);\n io.err(`${cmd.key} set.`);\n return 0;\n }\n case 'auth-key': {\n const settings = await resolveSettings(io.env, dir);\n const client = makeClient({ apiKey: cmd.key, baseUrl: settings.baseUrl }, io);\n await client.call('whoami');\n await writeCredentials(dir, { apiKey: cmd.key, accountId: null, source: 'dashboard', obtainedAt: new Date().toISOString() });\n io.err('Key stored.');\n if (io.env.SYNAPSETREE_API_KEY) io.err('Note: SYNAPSETREE_API_KEY is exported and overrides the stored key until you unset it.');\n await printStatus(client, { ...settings, apiKey: cmd.key, keySource: 'file', accountId: null }, io);\n return 0;\n }\n case 'auth-email': {\n const settings = await resolveSettings(io.env, dir);\n const baseUrl = (cmd.baseUrl ? stripTrailingSlashes(cmd.baseUrl) : undefined) ?? settings.baseUrl;\n const anonymous = makeClient({ apiKey: undefined, baseUrl }, io);\n const result = await registerByEmail(anonymous, cmd.email, { info: io.err });\n await writeCredentials(dir, { apiKey: result.apiKey, accountId: result.accountId, source: 'authmd', obtainedAt: new Date().toISOString() });\n if (cmd.baseUrl) await writeConfig(dir, { ...(await readConfig(dir)), baseUrl });\n io.err('Approved. Key stored.');\n if (io.env.SYNAPSETREE_API_KEY) io.err('Note: SYNAPSETREE_API_KEY is exported and overrides the stored key until you unset it.');\n const client = makeClient({ apiKey: result.apiKey, baseUrl }, io);\n await printStatus(client, { ...settings, apiKey: result.apiKey, keySource: 'file', accountId: result.accountId, baseUrl }, io);\n return 0;\n }\n case 'auth-revoke': {\n // resolveSettings prefers an exported SYNAPSETREE_API_KEY, but the\n // STORED credential is the one a local user can forget about (e.g.\n // one left by `auth --email` while an env key shadows it). Revoke\n // the stored key first, then the env key if one is exported.\n const stored = await readCredentials(dir);\n let failed = false;\n if (stored) {\n const client = makeClient({ apiKey: stored.apiKey, baseUrl: (await resolveSettings(io.env, dir)).baseUrl }, io);\n try {\n await client.call('oauthRevoke', { form: { token: stored.apiKey, token_type_hint: 'access_token' } });\n io.err('Stored key revoked.');\n await deleteCredentials(dir);\n io.err('Local copy deleted.');\n } catch (err) {\n if (err instanceof SynapseTreeError && err.status === 401) {\n // The stored key is already dead on the server: nothing to\n // revoke, and the file carries nothing of value.\n await deleteCredentials(dir);\n io.err('The stored key was already dead on the server; local copy deleted.');\n } else if (err instanceof SynapseTreeError && err.status === 403) {\n // The server answered and refused the revocation (e.g. admin-only\n // or owner mismatch): the local copy is kept so nothing is lost.\n io.err(`The server refused the revocation (${err.code}); the local key was kept. Remove it in the dashboard if it should die.`);\n failed = true;\n } else {\n io.err(`SynapseTree was unreachable or the request failed; the local key was kept. (${err instanceof Error ? err.message : String(err)})`);\n failed = true;\n }\n }\n }\n const envKey = io.env.SYNAPSETREE_API_KEY;\n if (envKey) {\n const settings = await resolveSettings(io.env, dir);\n const client = makeClient(settings, io);\n try {\n await client.call('oauthRevoke', { form: { token: envKey, token_type_hint: 'access_token' } });\n io.err('Environment key revoked; unset SYNAPSETREE_API_KEY.');\n } catch (err) {\n if (err instanceof SynapseTreeError && err.status === 401) {\n io.err('The environment key was already dead on the server; unset SYNAPSETREE_API_KEY.');\n } else {\n io.err(`The environment key could not be revoked; unset SYNAPSETREE_API_KEY and remove it in the dashboard. (${err instanceof Error ? err.message : String(err)})`);\n failed = true;\n }\n }\n }\n if (!stored && !envKey) { io.err(NO_KEY_MESSAGE); return 3; }\n return failed ? 1 : 0;\n }\n case 'status': {\n const settings = await resolveSettings(io.env, dir);\n if (!settings.apiKey) { io.err(NO_KEY_MESSAGE); return 3; }\n await printStatus(makeClient(settings, io), settings, io);\n return 0;\n }\n case 'serve': {\n const settings = await resolveSettings(io.env, dir);\n if (!settings.apiKey) { io.err(NO_KEY_MESSAGE); return 3; }\n const server = createServer({ client: makeClient(settings, io), defaultNamespace: settings.namespace });\n const transport = new StdioServerTransport();\n await server.connect(transport);\n // The SDK chains its own onclose handler during connect(); wrap it\n // instead of replacing it so the SDK's cleanup still runs.\n const previousOnClose = transport.onclose;\n await new Promise<void>((resolve) => {\n transport.onclose = () => {\n previousOnClose?.();\n resolve();\n };\n });\n return 0;\n }\n }\n } catch (err) {\n if (err instanceof UsageError) { io.err(err.message); return 2; }\n if (err instanceof SynapseTreeError) { io.err(`${err.code}${err.detail ? `: ${err.detail}` : ''}${err.requestId ? ` (request-id: ${err.requestId})` : ''}`); return 1; }\n io.err(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n","import { parseArgs, run } from './commands';\nimport { UsageError } from './errors';\n\nasync function main(): Promise<number> {\n let cmd;\n try {\n cmd = parseArgs(process.argv.slice(2));\n } catch (err) {\n process.stderr.write(`${err instanceof UsageError ? err.message : String(err)}\\n`);\n return 2;\n }\n return run(cmd, {\n out: (s) => { process.stdout.write(s); },\n err: (s) => { process.stderr.write(s.endsWith('\\n') ? s : `${s}\\n`); },\n env: process.env,\n });\n}\n\nmain().then(\n (code) => { process.exitCode = code; },\n (err) => { process.stderr.write(`${err instanceof Error ? err.message : String(err)}\\n`); process.exitCode = 1; },\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/authmd.ts","../contract/synapsetree-openapi.subset.json","../src/contract.ts","../src/client.ts","../src/credentials.ts","../src/tools/shared.ts","../src/tools/graph-traverse.ts","../src/tools/memory-ingest.ts","../src/tools/memory-log-event.ts","../src/tools/memory-remember.ts","../src/tools/memory-search.ts","../src/tools/memory-supersede.ts","../src/tools/namespaces-list.ts","../src/tools/whoami.ts","../src/tools/index.ts","../src/version.ts","../src/server.ts","../src/commands.ts","../src/cli.ts"],"names":["ZodError","resolve","randomUUID","homedir","join","readFile","mkdir","chmod","writeFile","rename","unlink","z","createHash","McpServer","StdioServerTransport"],"mappings":"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","file":"cli.js","sourcesContent":["import { ZodError } from 'zod';\n\nexport interface SynapseTreeErrorInit {\n status: number;\n code: string;\n detail?: string;\n requestId?: string;\n retryAfterSeconds?: number;\n}\n\n/** A SynapseTree API error (problem+json, an OAuth error body, or a gateway rejection). */\nexport class SynapseTreeError extends Error {\n readonly status: number;\n readonly code: string;\n readonly detail?: string;\n readonly requestId?: string;\n readonly retryAfterSeconds?: number;\n\n constructor(init: SynapseTreeErrorInit) {\n super(init.detail ? `${init.code}: ${init.detail}` : init.code);\n this.name = 'SynapseTreeError';\n this.status = init.status;\n this.code = init.code;\n this.detail = init.detail;\n this.requestId = init.requestId;\n this.retryAfterSeconds = init.retryAfterSeconds;\n }\n}\n\n/** A local mistake: missing configuration or bad input. Never an HTTP failure. */\nexport class UsageError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'UsageError';\n }\n}\n\nexport const NO_NAMESPACE_MESSAGE =\n 'No namespace configured. Run `synapsetree-mcp config set namespace repo:<name>`, or pass `namespace`.';\n\nexport const NO_KEY_MESSAGE =\n 'No API key. Run `synapsetree-mcp auth --key stree_…` or `synapsetree-mcp auth --email you@example.com`.';\n\nexport const INGEST_PROVIDER_MESSAGE =\n 'Requires the account owner to have registered an extraction provider in the dashboard (bring-your-own-key). ' +\n 'Otherwise the server answers `inference_not_configured`; tell the user to register a provider at https://synapsetree.dev/dashboard.';\n\nconst DETAIL_CODES = new Set([\n 'quota_exceeded',\n 'payload_too_large',\n 'invalid_request',\n 'not_found',\n 'conflict',\n 'invalid_state',\n 'source_hash_conflict',\n 'idempotency_key_reused',\n 'ontology_violation',\n]);\n\nconst TRANSIENT_CODES = new Set(['namespace_busy', 'fenced', 'unavailable', 'idempotency_in_progress']);\n\nfunction describe(err: SynapseTreeError): string {\n switch (err.code) {\n case 'unauthorized':\n return 'SynapseTree rejected the stored API key (revoked, unknown, or its database is not reachable). Ask the user to run `synapsetree-mcp auth`.';\n case 'insufficient_scope':\n return 'This key cannot do that. The account owner does it in the dashboard at https://synapsetree.dev/dashboard.';\n case 'subscription_inactive':\n return \"The organization's SynapseTree plan is paused. Reads and export still work in the dashboard.\";\n case 'inference_not_configured':\n return INGEST_PROVIDER_MESSAGE;\n case 'upstream_inference_unavailable':\n return \"The account owner's inference provider is failing; searches fall back to keywords. Retry ingest later.\";\n case 'rate_limited':\n return `Rate limited by SynapseTree; retry after ${err.retryAfterSeconds !== undefined ? `${err.retryAfterSeconds} seconds` : 'a few seconds'}.`;\n case 'not_implemented':\n return 'SynapseTree has not enabled this operation yet (501). Tell the user; nothing to fix locally.';\n default:\n if (DETAIL_CODES.has(err.code)) return `${err.code}: ${err.detail ?? ''}`.trimEnd();\n if (TRANSIENT_CODES.has(err.code)) return 'SynapseTree is temporarily unavailable; retry in a few seconds.';\n return `${err.code}${err.detail ? `: ${err.detail}` : ''} (HTTP ${err.status})`;\n }\n}\n\n/** One paragraph a model can act on. Never throws. */\nexport function toolErrorText(err: unknown): string {\n if (err instanceof SynapseTreeError) {\n const text = describe(err);\n return err.requestId ? `${text} (request-id: ${err.requestId})` : text;\n }\n if (err instanceof ZodError) {\n return err.issues.map((i) => `${i.path.join('.') || '(input)'}: ${i.message}`).join('\\n');\n }\n if (err instanceof Error) return err.message;\n if (typeof err === 'string') return err;\n return 'Unknown error';\n}\n","import type { SynapseTreeClient } from './client';\nimport { SynapseTreeError } from './errors';\n\nexport interface AuthmdOptions {\n /** Human-facing progress lines (the CLI sends them to stderr). Never contains secrets. */\n info: (line: string) => void;\n sleep?: (ms: number) => Promise<void>;\n now?: () => number;\n /** Default 16 minutes: the claim itself expires after 15. */\n deadlineMs?: number;\n}\n\nexport interface RegisterResult {\n apiKey: string;\n accountId: string | null;\n}\n\nexport class ClaimError extends Error {\n readonly code: string;\n constructor(code: string, message: string) {\n super(message);\n this.name = 'ClaimError';\n this.code = code;\n }\n}\n\ninterface Registration {\n claim_token: string;\n user_code: string;\n poll: { token_endpoint: string; grant: string; interval?: number };\n}\n\ninterface TokenOk { access_token: string; token_type: string; account_id?: string; scope?: string }\ninterface TokenErr { error: string; error_description?: string; error_uri?: string; interval?: number }\n\nconst EXPIRED_MESSAGE = 'The claim expired (15 minutes) or was already used. Run `synapsetree-mcp auth --email` again.';\nconst REMEDY_CODES = new Set(['key_limit_reached', 'database_name_taken', 'database_quota_exceeded']);\n\nexport async function registerByEmail(client: SynapseTreeClient, email: string, opts: AuthmdOptions): Promise<RegisterResult> {\n const sleep = opts.sleep ?? ((ms) => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n const now = opts.now ?? Date.now;\n const deadline = now() + (opts.deadlineMs ?? 16 * 60 * 1000);\n\n const reg = (await client.call<Registration>('registerAgentIdentity', { body: { email } })).data;\n if (!reg || typeof reg !== 'object' || !reg.poll || typeof reg.user_code !== 'string' || typeof reg.claim_token !== 'string' || typeof reg.poll.grant !== 'string' || typeof reg.poll.token_endpoint !== 'string') {\n throw new ClaimError('invalid_response', 'The registration endpoint returned a malformed response.');\n }\n // Fail closed on a server-chosen token endpoint: posting the claim token\n // anywhere other than the configured base URL would be a phishing vector.\n if (reg.poll.token_endpoint !== `${client.baseUrl}/oauth2/token`) {\n throw new ClaimError('invalid_response', `The server returned an unexpected token endpoint (${reg.poll.token_endpoint}); expected ${client.baseUrl}/oauth2/token.`);\n }\n // A poll that failed ambiguously (network error or 5xx after the server may\n // have committed the 200) can leave a minted key undelivered; if the claim\n // then comes back invalid_grant, say so instead of claiming it expired.\n let ambiguousPoll = false;\n // Clamp to >= 1 s: a server sending interval 0 (or negative) must not\n // turn the poll loop into a hammer on /oauth2/token.\n let intervalSeconds = Math.max(1, reg.poll.interval ?? 5);\n // Account walls (#326, spec auth-email-remedy-poll §3): print each wall once\n // per occurrence, keyed on the error code alone, and back off while it\n // persists. Both reset when the server reports the claim pending again\n // (authorization_pending or slow_down); a transient error resets neither.\n let lastRemedy: string | null = null;\n let remedyBackoffSeconds = 0;\n\n opts.info(`Check ${email} for a SynapseTree approval link (usually within a minute; it expires in 15 minutes).`);\n opts.info(`Approve only if the page shows this code: ${reg.user_code}`);\n\n for (;;) {\n const remaining = deadline - now();\n if (remaining <= 0) throw new ClaimError('invalid_grant', EXPIRED_MESSAGE);\n // Bound the wait: a hostile or buggy `interval` (or 1e9) must neither\n // park the CLI past the deadline nor hammer the endpoint. The interval is\n // floored at 1 s and capped at 60 s, and no sleep runs past the deadline;\n // remaining > 0 is guaranteed by the check above, so the loop always\n // advances the clock. The deadline clamp means the single last sleep can\n // be shorter than 1 s; that is one final poll, not a hammer. The clamp is\n // done in milliseconds (#326: it used to compare milliseconds with seconds,\n // so it never bound and the last sleep could overshoot by up to 60 s).\n await sleep(Math.min(Math.max(intervalSeconds + remedyBackoffSeconds, 1) * 1000, 60_000, remaining));\n\n let res;\n try {\n res = await client.call<TokenOk | TokenErr>('oauthToken', { form: { grant_type: reg.poll.grant, assertion: reg.claim_token } });\n } catch (err) {\n // server_error (500), 408, network errors, and a surviving 429 are\n // transient: keep polling at the current interval. A 429 asks us to\n // slow down, so add 5 s like the slow_down case below. A 408 is\n // ambiguous the same way a 5xx is: the server may have committed the\n // 200 before the request timed out.\n if (err instanceof SynapseTreeError && (err.status >= 500 || err.status === 0 || err.status === 408 || err.status === 429)) {\n if (err.status === 429) intervalSeconds += 5;\n else ambiguousPoll = true;\n continue;\n }\n throw err;\n }\n\n if (res.status === 200) {\n const ok = res.data as TokenOk;\n if (!ok || typeof ok !== 'object' || typeof ok.access_token !== 'string') {\n throw new ClaimError('invalid_response', 'The token endpoint returned a malformed success response.');\n }\n return { apiKey: ok.access_token, accountId: ok.account_id ?? null };\n }\n\n const body = res.data as TokenErr;\n if (!body || typeof body !== 'object' || typeof body.error !== 'string') {\n throw new ClaimError('invalid_response', 'The token endpoint returned a malformed error response.');\n }\n switch (body.error) {\n case 'authorization_pending':\n if (typeof body.interval === 'number') intervalSeconds = Math.max(1, body.interval);\n lastRemedy = null;\n remedyBackoffSeconds = 0;\n continue;\n case 'slow_down':\n intervalSeconds = typeof body.interval === 'number' ? Math.max(1, body.interval) : intervalSeconds + 5;\n lastRemedy = null;\n remedyBackoffSeconds = 0;\n continue;\n case 'invalid_grant':\n throw new ClaimError(\n 'invalid_grant',\n ambiguousPoll\n ? 'A key may have been issued but was not received (a poll failed ambiguously before the claim was freed). Check the SynapseTree dashboard for an unexpected agent key, revoke it, then run `synapsetree-mcp auth --email` again.'\n : EXPIRED_MESSAGE,\n );\n default:\n if (REMEDY_CODES.has(body.error)) {\n if (body.error !== lastRemedy) {\n opts.info(`${body.error}: ${body.error_description ?? 'the account owner must clear this in the dashboard'}${body.error_uri ? ` — ${body.error_uri}` : ''}`);\n opts.info('Waiting; approve again once it is fixed.');\n lastRemedy = body.error;\n }\n // RFC 8628 makes the server's interval a floor: adopt it like\n // authorization_pending, then add the backoff (+5 s per answer, at\n // most +25 s, i.e. 30 s at the default interval).\n if (typeof body.interval === 'number') intervalSeconds = Math.max(1, body.interval);\n remedyBackoffSeconds = Math.min(remedyBackoffSeconds + 5, 25);\n continue;\n }\n throw new ClaimError(body.error, `${body.error}${body.error_description ? `: ${body.error_description}` : ''}`);\n }\n }\n}\n","{\n \"openapi\": \"3.1.0\",\n \"info\": {\n \"title\": \"SynapseTree Memory API (subset for @equationalapplications/mcp-server)\",\n \"version\": \"1.0.0-alpha.1\",\n \"summary\": \"Hosted shared memory for LLM agents, one SQLite database per tenant.\",\n \"description\": \"SynapseTree hosts `core-llm-wiki` memory databases. Each API key reaches exactly one\\ntenant database; inside it, data lives in **namespaces** (the engine's `entity_id`).\\n\\nDesign: `docs/superpowers/specs/2026-09-30-openapi-contract-design.md`.\\n\\n**Key scope.** Every operation declares `x-synapsetree-scope`: `read` operations accept\\n`read` and `read_write` keys; `read_write` operations refuse a `read` key with\\n`403 insufficient_scope`. Agent keys issued through auth.md carry `memory:full`\\n(`memory:admin` is accepted but not issued in v1); both pass `read` and `read_write`\\noperations, except that the export\\nand destructive operations (`exportMemory`, `forgetFact`, `forgetSource`,\\n`deleteNamespace`) refuse a `memory:full` key with `403 insufficient_scope`; a\\n`memory:admin` key passes them.\\n\\n**Errors.** Errors produced by SynapseTree are RFC 7807 `application/problem+json` with a\\nstable `code`. Two responses come from the AWS API Gateway authorizer itself and keep the\\ngateway's native shape `{\\\"message\\\": \\\"...\\\"}`: `401` (missing or malformed bearer token) and\\n`403` (unknown or revoked key, or a database that is not routable).\\n\\n**Writes and billing.** Writes are refused with `402 subscription_inactive` when the\\norganization is on a paid plan whose subscription is not `trialing`, `active` or\\n`past_due`. Reads always work.\\n\\n**Inference is bring-your-own-key (BYOK).** SynapseTree runs no inference on its own\\naccount: server-side extraction and semantic embeddings run against the organization's own\\nprovider keys. Owner/admin register, rotate and delete two custodial registrations per\\norganization in the dashboard — an **extraction** registration (required for\\n`server_extraction` ingest and consolidation) and an optional **embeddings** registration —\\neach envelope-encrypted with KMS, never logged or echoed, surfaced only as `keyLast4`.\\nRotation overwrites in place and takes effect on the next call. With no extraction\\nregistration `server_extraction` answers `409 inference_not_configured`; a key the provider\\nrejects answers `409 inference_config_invalid` and surfaces as failing key health. With no\\nembeddings registration namespaces serve **keyword-only** search — a supported\\nconfiguration, reported via `diagnostics`, never an error. Provider calls are metered\\nagainst the plan's tier caps (one shared window, first-come-first-served); usage is\\ndisplayed as token counts, never dollars. Changing a namespace's embedding model is gated by\\nits stored fingerprint and takes effect only through a maintenance run\\n(`POST /v1/namespaces/{namespace}/maintenance/runs`); while a run is active, vector search\\non that namespace pauses to keyword-only.\\n\\n**Engine extensions.** `x-synapsetree-engine` names the engine entry point. Entries marked\\n`upstream:` depend on a core-llm-wiki API that has been requested but not yet released;\\nuntil it ships the operation or field answers `501 not_implemented`.\\n\",\n \"license\": {\n \"name\": \"Proprietary\",\n \"identifier\": \"LicenseRef-Proprietary\"\n },\n \"contact\": {\n \"name\": \"Equational Applications LLC\",\n \"url\": \"https://equationalapplications.com/\"\n },\n \"x-subset-of\": \"SynapseTree openapi/openapi.yaml\",\n \"x-generated-by\": \"scripts/mcp-contract-subset.py (SynapseTree repo); regenerate, do not hand-edit\",\n \"x-operations\": [\n \"createEvent\",\n \"ingestDocument\",\n \"listNamespaces\",\n \"oauthRevoke\",\n \"oauthToken\",\n \"queryMemory\",\n \"registerAgentIdentity\",\n \"rememberFact\",\n \"supersedeFact\",\n \"traverseGraph\",\n \"whoami\"\n ]\n },\n \"servers\": [\n {\n \"url\": \"https://api.synapsetree.dev\",\n \"description\": \"Production\"\n }\n ],\n \"security\": [\n {\n \"bearerAuth\": []\n }\n ],\n \"paths\": {\n \"/v1/memory/query\": {\n \"post\": {\n \"operationId\": \"queryMemory\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Search memory\",\n \"description\": \"Ranked top-k hybrid search (semantic + keyword) across one or more namespaces. Returns\\nthe highest-scoring facts plus pending tasks and recent events. **Not paginated**: the\\nranking is not a stable order; raise `limit` (max 100) for more results.\\n\\nSemantic scoring needs embeddings. In namespaces under server extraction the query is\\nembedded with the organization's embeddings registration (BYOK); an organization without\\none serves keyword-only search. When the embeddings path is unavailable — no\\nregistration, a key or provider fault, the tier cap exhausted, or a maintenance run\\nre-embedding the namespace — the search degrades to keyword-only and reports why via\\n`diagnostics`. That degradation is normal operation, not an error. Alternatively pass\\n`queryEmbedding` (same dimension as the stored fact vectors) to supply the vector\\nyourself.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"read\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/QueryRequest\"\n },\n \"examples\": {\n \"single\": {\n \"summary\": \"One namespace\",\n \"value\": {\n \"namespaces\": [\n \"repo:synapsetree\"\n ],\n \"query\": \"how are API keys hashed\",\n \"limit\": 5\n }\n },\n \"weighted\": {\n \"summary\": \"Two namespaces, weighted, point in time\",\n \"value\": {\n \"namespaces\": [\n \"repo:synapsetree\",\n \"team:platform\"\n ],\n \"query\": \"deployment region\",\n \"weights\": {\n \"repo:synapsetree\": 2,\n \"team:platform\": 1\n },\n \"floors\": {\n \"team:platform\": 1\n },\n \"asOf\": \"2026-09-01T00:00:00Z\",\n \"excludeDrafts\": true\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ranked facts with pending tasks and recent events.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/QueryResponse\"\n },\n \"example\": {\n \"facts\": [\n {\n \"id\": \"fact_01j9x7k2m3\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceType\": \"immutable_document\",\n \"mutable\": false,\n \"sourceRef\": \"infra__stack.ts\",\n \"sourceHash\": \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\",\n \"title\": \"SynapseTree\",\n \"body\": \"Hosted LLM memory API. status active.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"software_application\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 3,\n \"lastAccessedAt\": \"2026-09-30T08:00:00Z\",\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\"\n }\n ],\n \"scores\": {\n \"fact_01j9x7k2m3\": 0.82\n },\n \"tasks\": [\n {\n \"id\": \"task_01j9x8a1b2\",\n \"namespace\": \"repo:synapsetree\",\n \"description\": \"Register the stree_ prefix with GitHub secret scanning\",\n \"status\": \"pending\",\n \"priority\": 5,\n \"okfType\": null,\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\",\n \"resolvedAt\": null\n }\n ],\n \"events\": [\n {\n \"id\": \"evt_01j9x8c3d4\",\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"relatedFactId\": null,\n \"occurredAt\": \"2026-09-29T09:00:00Z\",\n \"createdAt\": \"2026-09-29T09:05:00Z\"\n }\n ]\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"501\": {\n \"$ref\": \"#/components/responses/NotImplemented\"\n },\n \"503\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff)\\nor `fenced` (the writer lost its lease). Upstream inference failure never\\nsurfaces on the query path — spec §5.2 degrade-never-fail: provider trouble\\ndegrades to keyword search with `diagnostics` instead of failing.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"fenced\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"/v1/memory/facts\": {\n \"post\": {\n \"operationId\": \"rememberFact\",\n \"tags\": [\n \"facts\"\n ],\n \"summary\": \"Store a fact directly\",\n \"description\": \"Stores one mutable fact (`user_stated` by default) without an LLM step. To replace an\\nexisting fact, use `supersedeFact` instead so history is kept.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"remember\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RememberRequest\"\n },\n \"examples\": {\n \"preference\": {\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"title\": \"Prefers merge commits\",\n \"body\": \"Kurt wants PRs merged with merge commits, never squashed.\",\n \"tags\": [\n \"git\"\n ],\n \"confidence\": \"certain\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"The stored fact.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Fact\"\n },\n \"example\": {\n \"id\": \"fact_01j9xa0000\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 0,\n \"lastAccessedAt\": null,\n \"createdAt\": \"2026-09-30T09:00:00Z\",\n \"updatedAt\": \"2026-09-30T09:00:00Z\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/memory/facts/{factId}/supersede\": {\n \"post\": {\n \"operationId\": \"supersedeFact\",\n \"tags\": [\n \"facts\"\n ],\n \"summary\": \"Replace a fact, keeping its history\",\n \"description\": \"Ends the fact's validity at `validFrom` (default: now) and makes the replacement current\\nfrom that instant. The replacement is a new mutable fact or an existing fact id.\\n\\nRefused with `409 invalid_state` for `immutable_document` facts (re-ingest the document\\ninstead), and with `409 conflict` for a fact already superseded or a replacement that\\nwould form a cycle.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"supersede\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/FactId\"\n },\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SupersedeRequest\"\n },\n \"examples\": {\n \"newFact\": {\n \"summary\": \"Replace with a new fact, backdated\",\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"replacement\": {\n \"kind\": \"new\",\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\"\n }\n }\n },\n \"existingFact\": {\n \"summary\": \"Replace with a fact that already exists\",\n \"value\": {\n \"namespace\": \"user:kurt\",\n \"replacement\": {\n \"kind\": \"existing\",\n \"factId\": \"fact_01j9xa0000\"\n }\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The superseded fact and its replacement.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/SupersedeResponse\"\n },\n \"example\": {\n \"superseded\": {\n \"id\": \"fact_01j8z9y8x7\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in Seattle\",\n \"body\": \"Rents in Capitol Hill.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": \"2026-03-01T00:00:00Z\",\n \"supersededBy\": \"fact_01j9xa0000\",\n \"supersededAt\": \"2026-09-30T09:00:00Z\",\n \"accessCount\": 5,\n \"lastAccessedAt\": \"2026-09-28T12:00:00Z\",\n \"createdAt\": \"2026-01-10T12:00:00Z\",\n \"updatedAt\": \"2026-01-10T12:00:00Z\"\n },\n \"replacement\": {\n \"id\": \"fact_01j9xa0000\",\n \"namespace\": \"user:kurt\",\n \"sourceType\": \"user_stated\",\n \"mutable\": true,\n \"sourceRef\": null,\n \"sourceHash\": null,\n \"title\": \"Lives in San Francisco\",\n \"body\": \"Moved in March.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"place\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": \"2026-03-01T00:00:00Z\",\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 0,\n \"lastAccessedAt\": null,\n \"createdAt\": \"2026-09-30T09:00:00Z\",\n \"updatedAt\": \"2026-09-30T09:00:00Z\"\n }\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/memory/ingest\": {\n \"post\": {\n \"operationId\": \"ingestDocument\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Ingest a document\",\n \"description\": \"Extracts facts from a document and stores them as `immutable_document` facts under\\n`sourceRef`, replacing any earlier version.\\n\\n- `server_extraction`: SynapseTree runs extraction with the organization's registered\\n provider key (BYOK; envelope-encrypted, managed in the dashboard by owner/admin).\\n `409 inference_not_configured` when the organization has no extraction registration.\\n- `client_extraction`: the client ran the extraction itself against an\\n [extraction plan](#operation/createExtractionPlan) and posts each chunk's model\\n output. A plan whose fingerprint no longer matches is refused with\\n `409 extraction_plan_stale`.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"ingestDocument (server_extraction); upstream:ingestExtracted (client_extraction)\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/IngestRequest\"\n },\n \"examples\": {\n \"clientExtraction\": {\n \"summary\": \"Client-side extraction (BYOI)\",\n \"value\": {\n \"mode\": \"client_extraction\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceRef\": \"docs__runbook.md\",\n \"sourceHash\": \"1b3d5f7a9c0e2b4d6f8a0c2e4b6d8f0a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n \"planFingerprint\": \"sha256:4e6a8c0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c\",\n \"chunks\": [\n {\n \"index\": 0,\n \"response\": {\n \"facts\": [\n {\n \"title\": \"Deploys go to us-east-1\",\n \"body\": \"The test stage deploys to us-east-1.\",\n \"tags\": [\n \"deploy\"\n ],\n \"confidence\": \"certain\",\n \"okfType\": \"procedure\",\n \"evidence\": [\n \"Region: us-east-1 (Kurt, 2026-09-29).\"\n ],\n \"edges\": [\n {\n \"edgeType\": \"documents\",\n \"targetTitle\": \"SynapseTree\"\n }\n ]\n }\n ],\n \"tasks\": []\n }\n }\n ]\n }\n },\n \"serverExtraction\": {\n \"summary\": \"Server-side extraction (BYOK)\",\n \"value\": {\n \"mode\": \"server_extraction\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceRef\": \"docs__runbook.md\",\n \"sourceHash\": \"1b3d5f7a9c0e2b4d6f8a0c2e4b6d8f0a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n \"content\": \"# Deploy the test stage ...\",\n \"onDuplicateHash\": \"skip\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"Ingest summary.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/IngestResponse\"\n },\n \"example\": {\n \"chunks\": 1,\n \"ingestedChunks\": 1,\n \"failedChunks\": 0,\n \"truncated\": false,\n \"duplicateOf\": null,\n \"parseFailures\": []\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"409\": {\n \"description\": \"The write conflicts with current state: `conflict`, `extraction_plan_stale`,\\n`source_hash_conflict` (another sourceRef already holds this content hash),\\n`namespace_busy` (the namespace is under another write; retry),\\n`inference_not_configured` (server extraction requested but the organization has\\nno extraction registration), or `inference_config_invalid` (the provider rejected\\nthe organization's key as configuration-invalid — auth or bad option — on every\\nextraction call; nothing was written and the response is not retried).\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"sourceHashConflict\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:source_hash_conflict\",\n \"title\": \"Source hash already stored\",\n \"status\": 409,\n \"code\": \"source_hash_conflict\",\n \"detail\": \"Another sourceRef in this namespace already holds this content.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"duplicateOf\": \"docs__runbook-old.md\"\n }\n },\n \"inferenceConfigInvalid\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:inference_config_invalid\",\n \"title\": \"Inference configuration invalid\",\n \"status\": 409,\n \"code\": \"inference_config_invalid\",\n \"detail\": \"The provider rejected the tenant's model key as configuration-invalid on every extraction call; nothing was written.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n }\n }\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"description\": \"Well-formed but refused: `ontology_violation`, `ingest_failed`,\\n`idempotency_key_reused`, `embedding_dimension_mismatch` (client vector with a\\ndifferent dimension), or `embedding_model_mismatch` (the tenant's configured\\nembedding model differs from the namespace's stored-vector fingerprint; the\\nrefusal precedes any write and points at the re-embed maintenance path).\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"ontologyViolation\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:ontology_violation\",\n \"title\": \"Ontology violation\",\n \"status\": 422,\n \"code\": \"ontology_violation\",\n \"detail\": \"Node type \\\"microservice\\\" is not in this namespace's strict manifest.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"kind\": \"node\",\n \"ontologyType\": \"microservice\"\n }\n },\n \"embeddingModelMismatch\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:embedding_model_mismatch\",\n \"title\": \"Embedding model mismatch\",\n \"status\": 422,\n \"code\": \"embedding_model_mismatch\",\n \"detail\": \"The configured embedding model differs from the namespace's stored-vector fingerprint; run maintenance to re-embed.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n }\n }\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"501\": {\n \"$ref\": \"#/components/responses/NotImplemented\"\n },\n \"503\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff),\\n`fenced` (the writer lost its lease; the write did not commit), or\\n`upstream_inference_unavailable` (the tenant's inference provider failed on\\nevery extraction call, or either BYOK rate cap (extraction or embeddings)\\nis exhausted for the window (429/5xx/timeout; nothing was written; safe\\nto retry)). When the embeddings rate cap is exhausted by an active\\nmaintenance run, the problem `detail` names the run (`mrun_…`) as the\\nconsumer.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"examples\": {\n \"fenced\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n },\n \"upstreamInferenceUnavailable\": {\n \"value\": {\n \"type\": \"urn:synapsetree:problem:upstream_inference_unavailable\",\n \"title\": \"Upstream inference unavailable\",\n \"status\": 503,\n \"code\": \"upstream_inference_unavailable\",\n \"detail\": \"The tenant's inference provider failed on every extraction call (429/5xx/timeout); nothing was written.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 30\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"/v1/memory/events\": {\n \"post\": {\n \"operationId\": \"createEvent\",\n \"tags\": [\n \"memory\"\n ],\n \"summary\": \"Record an event\",\n \"description\": \"Appends an observation, decision, action, or outcome to a namespace's event log. Events\\nare the input to later consolidation into facts; recording one never runs inference.\\nA relatedFactId that does not exist in the namespace (superseded facts count as existing)\\nis refused with 404.\\n\",\n \"x-synapsetree-scope\": \"read_write\",\n \"x-synapsetree-engine\": \"write\",\n \"parameters\": [\n {\n \"$ref\": \"#/components/parameters/IdempotencyKey\"\n }\n ],\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/CreateEventRequest\"\n },\n \"examples\": {\n \"decision\": {\n \"value\": {\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"occurredAt\": \"2026-09-29T09:00:00Z\"\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"201\": {\n \"description\": \"The recorded event.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n },\n \"Idempotent-Replayed\": {\n \"$ref\": \"#/components/headers/Idempotent-Replayed\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Event\"\n },\n \"example\": {\n \"id\": \"evt_01j9x8c3d4\",\n \"namespace\": \"repo:synapsetree\",\n \"eventType\": \"decision\",\n \"summary\": \"Chose DynamoDB for the control plane\",\n \"relatedFactId\": null,\n \"occurredAt\": \"2026-09-29T09:00:00Z\",\n \"createdAt\": \"2026-09-29T09:05:00Z\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"402\": {\n \"$ref\": \"#/components/responses/PaymentRequired\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"413\": {\n \"$ref\": \"#/components/responses/PayloadTooLarge\"\n },\n \"422\": {\n \"$ref\": \"#/components/responses/UnprocessableContent\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/graph/traverse\": {\n \"post\": {\n \"operationId\": \"traverseGraph\",\n \"tags\": [\n \"graph\"\n ],\n \"summary\": \"Traverse the graph from an anchor fact\",\n \"description\": \"Walks edges from `sourceId` up to `maxDepth` hops (1–3). The anchor is always returned\\nfirst; discovered nodes follow in depth order. Only edges whose both endpoints are\\nreturned are included. With `asOf`, only facts live at that instant are walked.\\nBounded by `maxNodes`; not paginated.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"traverseGraph\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraverseRequest\"\n },\n \"examples\": {\n \"twoHops\": {\n \"summary\": \"Two hops, outbound, dependency edges only\",\n \"value\": {\n \"namespace\": \"repo:synapsetree\",\n \"sourceId\": \"app_synapsetree\",\n \"maxDepth\": 2,\n \"direction\": \"outbound\",\n \"edgeTypes\": [\n \"dependsOn\"\n ],\n \"maxNodes\": 50\n }\n }\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The anchor's neighbourhood.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TraverseResponse\"\n },\n \"example\": {\n \"nodes\": [\n {\n \"id\": \"fact_01j9x7k2m3\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceType\": \"immutable_document\",\n \"mutable\": false,\n \"sourceRef\": \"infra__stack.ts\",\n \"sourceHash\": \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\",\n \"title\": \"SynapseTree\",\n \"body\": \"Hosted LLM memory API. status active.\",\n \"tags\": [],\n \"confidence\": \"certain\",\n \"okfType\": \"software_application\",\n \"lifecycleStatus\": \"stable\",\n \"trustTier\": \"unverified\",\n \"isStale\": false,\n \"generatedBy\": null,\n \"lastVerifiedAt\": null,\n \"lastVerifiedBy\": null,\n \"validFrom\": null,\n \"validTo\": null,\n \"supersededBy\": null,\n \"supersededAt\": null,\n \"accessCount\": 3,\n \"lastAccessedAt\": \"2026-09-30T08:00:00Z\",\n \"createdAt\": \"2026-09-29T10:00:00Z\",\n \"updatedAt\": \"2026-09-29T10:00:00Z\"\n }\n ],\n \"edges\": [\n {\n \"id\": \"edge_01j9x9e5f6\",\n \"namespace\": \"repo:synapsetree\",\n \"sourceId\": \"app_synapsetree\",\n \"targetId\": \"svc_dynamodb\",\n \"edgeType\": \"dependsOn\",\n \"createdAt\": \"2026-09-29T10:00:00Z\"\n }\n ]\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"404\": {\n \"$ref\": \"#/components/responses/NotFound\"\n },\n \"409\": {\n \"$ref\": \"#/components/responses/Conflict\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/namespaces\": {\n \"get\": {\n \"operationId\": \"listNamespaces\",\n \"tags\": [\n \"namespaces\"\n ],\n \"summary\": \"List namespaces\",\n \"description\": \"Namespaces with at least one row, ordered by name (binary ascending). Includes namespaces\\nwhose rows are all deleted, until they are pruned.\\n\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"listEntityIds\",\n \"parameters\": [\n {\n \"name\": \"prefix\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"Only namespaces starting with this string.\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 128\n },\n \"example\": \"repo:\"\n },\n {\n \"$ref\": \"#/components/parameters/After\"\n },\n {\n \"$ref\": \"#/components/parameters/Limit\"\n }\n ],\n \"responses\": {\n \"200\": {\n \"description\": \"One page of namespaces.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/NamespaceList\"\n },\n \"example\": {\n \"data\": [\n {\n \"namespace\": \"repo:synapsetree\"\n },\n {\n \"namespace\": \"user:kurt\"\n }\n ],\n \"hasMore\": false,\n \"nextCursor\": null\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n },\n \"503\": {\n \"$ref\": \"#/components/responses/ServiceUnavailable\"\n }\n }\n }\n },\n \"/v1/whoami\": {\n \"get\": {\n \"operationId\": \"whoami\",\n \"tags\": [\n \"account\"\n ],\n \"summary\": \"Describe the calling key\",\n \"description\": \"The routing context the authorizer resolved for this key.\",\n \"x-synapsetree-scope\": \"read\",\n \"x-synapsetree-engine\": \"none (control plane)\",\n \"responses\": {\n \"200\": {\n \"description\": \"The key's routing context.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Whoami\"\n },\n \"example\": {\n \"apiKeyId\": \"key_01j9x5v7w8\",\n \"organizationId\": \"org_01j9x5t3u4\",\n \"tenantDatabaseId\": \"db_01j9x5r1s2\",\n \"scope\": \"read_write\",\n \"planCode\": \"hobby\",\n \"subscriptionStatus\": \"inactive\"\n }\n }\n }\n },\n \"401\": {\n \"$ref\": \"#/components/responses/Unauthorized\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/Forbidden\"\n },\n \"429\": {\n \"$ref\": \"#/components/responses/TooManyRequests\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n }\n }\n }\n },\n \"/agent/identity\": {\n \"post\": {\n \"operationId\": \"registerAgentIdentity\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Start agent registration for an email\",\n \"description\": \"First step of auth.md agent registration: an agent without an API key\\nasks SynapseTree to email the human a claim link. The endpoint is\\nunauthenticated; the response is byte-equal for known and unknown\\nemails (anti-enumeration). At most 5 claim tokens may be outstanding\\nfor one email — the 6th answers `quota_exceeded` (an existing\\nProblemCode; errors here are problem+json only). Success returns the\\n`stclaim_…` claim token the agent polls with, a short `user_code` the\\nhuman confirms on the consent interstitial, and the poll parameters. The\\noutstanding-token cap responds `quota_exceeded`.\\n\",\n \"security\": [],\n \"x-synapsetree-engine\": \"registerAgentIdentity (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AgentIdentityRequest\"\n },\n \"example\": {\n \"email\": \"ada@example.com\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The claim is pending; a confirmation email is on its way to the\\nhuman. Byte-equal whether or not the email is known to SynapseTree.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/AgentIdentityResponse\"\n },\n \"example\": {\n \"claim_token\": \"stclaim_exampleclaimtoken01\",\n \"user_code\": \"482913\",\n \"poll\": {\n \"token_endpoint\": \"https://api.synapsetree.dev/oauth2/token\",\n \"grant\": \"urn:synapsetree:claim\",\n \"interval\": 5\n }\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/BadRequest\"\n },\n \"403\": {\n \"$ref\": \"#/components/responses/QuotaExceeded\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/InternalError\"\n }\n }\n }\n },\n \"/oauth2/token\": {\n \"post\": {\n \"operationId\": \"oauthToken\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Poll the claim grant for the minted API key\",\n \"description\": \"Device-flow style poll (RFC 8628 §3.4/§3.5) with a claim grant: the\\nagent presents the `stclaim_…` token from POST /agent/identity as the\\n`assertion` (RFC 7523 jwt-bearer shape) with grant type\\n`urn:synapsetree:claim`. Before the human approves, the endpoint\\nanswers `authorization_pending` (with `interval`) or `slow_down`;\\nafter approval the FIRST poll mints exactly one API key (and, in the\\nsame transaction, frees the claim token) and answers with it — later\\npolls answer `invalid_grant`, as do expiry and absence. If the\\norganization already holds 10 live agent keys the poll answers\\n`key_limit_reached`, a documented extension of the RFC 6749 §5.2\\n`error` member (not a problem+json code). Errors here are RFC 6749\\n§5.2 bodies, never problem+json. No per-IP rate limit exists in v1.\\n\",\n \"security\": [],\n \"x-synapsetree-engine\": \"oauthToken (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/x-www-form-urlencoded\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/ClaimGrantRequest\"\n },\n \"example\": {\n \"grant_type\": \"urn:synapsetree:claim\",\n \"assertion\": \"stclaim_exampleclaimtoken01\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The claim was approved and redeemed; exactly one API key was\\nminted. Polling again answers `invalid_grant`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/TokenResponse\"\n },\n \"example\": {\n \"access_token\": \"stree_Tq3-vZ8_kLm2NpR5sUw7YxA9bC1dE4fG6hJ0iKlMnOp\",\n \"token_type\": \"Bearer\",\n \"account_id\": \"01890a5d-ac96-774b-bcce-b302099a8057\",\n \"scope\": \"memory:full\"\n }\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/OauthErrorResponse\"\n },\n \"500\": {\n \"$ref\": \"#/components/responses/OauthServerError\"\n }\n }\n }\n },\n \"/oauth2/revoke\": {\n \"post\": {\n \"operationId\": \"oauthRevoke\",\n \"tags\": [\n \"agent\"\n ],\n \"summary\": \"Revoke a token (RFC 7009)\",\n \"description\": \"RFC 7009 revocation, bearer-authenticated like every other key-bearing\\nendpoint. Revoking an agent key frees its seat against the\\norganization's 10-key cap. The endpoint answers 200 on every\\nrequest carrying a LIVE bearer — the response is byte-equal whether the\\ntoken was revoked or was unknown. A revoked, deleted or unknown CLIENT\\nbearer never reaches the handler: the edge answers 401 (the shared\\n`unauthorized` problem, RFC 6750 — byte-equal for unknown and revoked\\nbearers, anti-enumeration). A request with an ABSENT or MALFORMED\\n`Authorization` header is refused by the API Gateway authorizer before\\nthe handler runs, with the gateway's default native body\\n`{\\\"message\\\":\\\"Unauthorized\\\"}` (not problem+json, no `WWW-Authenticate`\\nchallenge). Errors from the handler are RFC 6749 §5.2 bodies, never\\nproblem+json (the two 401 bodies above excepted).\\n\",\n \"x-synapsetree-engine\": \"oauthRevoke (control plane)\",\n \"requestBody\": {\n \"required\": true,\n \"content\": {\n \"application/x-www-form-urlencoded\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/RevokeRequest\"\n },\n \"example\": {\n \"token\": \"stree_Tq3-vZ8_kLm2NpR5sUw7YxA9bC1dE4fG6hJ0iKlMnOp\",\n \"token_type_hint\": \"access_token\"\n }\n }\n }\n },\n \"responses\": {\n \"200\": {\n \"description\": \"The token is revoked, or was unknown; byte-equal either way. Requires a live bearer.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"description\": \"Empty body (RFC 7009 §2.2 — 200 confirms processing).\",\n \"additionalProperties\": false,\n \"required\": [],\n \"properties\": {}\n },\n \"example\": {}\n }\n }\n },\n \"400\": {\n \"$ref\": \"#/components/responses/OauthErrorResponse\"\n },\n \"401\": {\n \"description\": \"The CLIENT bearer is unknown, revoked or invalid (RFC 6750). Emitted by the\\napplication's shared 401 emitter, byte-equal to the pool's — anti-enumeration\\n(unknown and revoked bearers are indistinguishable). A missing/malformed\\n`Authorization` header instead yields the API Gateway default 401 body\\n`{\\\"message\\\":\\\"Unauthorized\\\"}` — see the operation description.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"WWW-Authenticate\": {\n \"$ref\": \"#/components/headers/WWW-Authenticate\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:unauthorized\",\n \"title\": \"Unauthorized\",\n \"status\": 401,\n \"code\": \"unauthorized\",\n \"detail\": \"The API key is missing, invalid, or revoked.\",\n \"requestId\": \"req_01j9x5v7w8example\",\n \"retryable\": false\n }\n }\n }\n },\n \"429\": {\n \"description\": \"Per-key throttle (60 requests/min) exceeded.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Too many requests for this key; retry later.\"\n }\n }\n }\n },\n \"500\": {\n \"$ref\": \"#/components/responses/OauthServerError\"\n },\n \"503\": {\n \"description\": \"Authorization store unavailable; the request fails closed (RFC 6749 `server_error`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Authorization is temporarily unavailable; retry later.\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"components\": {\n \"headers\": {\n \"Idempotent-Replayed\": {\n \"description\": \"Present and `true` when the response was replayed for a repeated `Idempotency-Key`.\",\n \"schema\": {\n \"type\": \"boolean\"\n },\n \"example\": true\n },\n \"RateLimit\": {\n \"description\": \"Remaining quota in the current window (draft-ietf-httpapi-ratelimit-headers).\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"example\": \"\\\"default\\\";r=412;t=17\"\n },\n \"RateLimit-Policy\": {\n \"description\": \"Rate-limit policy (draft-ietf-httpapi-ratelimit-headers, structured fields).\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"example\": \"\\\"default\\\";q=600;w=60\"\n },\n \"Request-Id\": {\n \"description\": \"Identifies this request in logs and support requests.\",\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^req_[A-Za-z0-9]{8,64}$\"\n },\n \"example\": \"req_01j9xb7c8d9e\"\n },\n \"Retry-After\": {\n \"description\": \"Seconds to wait before retrying.\",\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"example\": 5\n },\n \"WWW-Authenticate\": {\n \"description\": \"RFC 6750 challenge emitted with application-level 401s on key-bearing\\nroutes, pointing at the OAuth 2.0 Protected Resource Metadata document.\\n\",\n \"schema\": {\n \"type\": \"string\",\n \"maxLength\": 512\n },\n \"example\": \"Bearer resource_metadata=\\\"https://api.synapsetree.dev/.well-known/oauth-protected-resource\\\"\"\n }\n },\n \"parameters\": {\n \"After\": {\n \"name\": \"after\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"The `nextCursor` from the previous page. Opaque; never an offset.\",\n \"schema\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 512\n },\n \"example\": \"c_eyJrIjoiZG9jc19fcnVuYm9vay5tZCJ9.k3Jf\"\n },\n \"FactId\": {\n \"name\": \"factId\",\n \"in\": \"path\",\n \"required\": true,\n \"description\": \"A fact id.\",\n \"schema\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"example\": \"fact_01j9x7k2m3\"\n },\n \"IdempotencyKey\": {\n \"name\": \"Idempotency-Key\",\n \"in\": \"header\",\n \"required\": false,\n \"description\": \"Makes a retry safe. Retained 24 hours per API key. A replay returns the stored response\\nwith `Idempotent-Replayed: true`; the same key with a different body is refused with\\n`422 idempotency_key_reused`.\\n\",\n \"schema\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z0-9_-]{1,255}$\"\n },\n \"example\": \"7f1c2e9a-ingest-runbook\"\n },\n \"Limit\": {\n \"name\": \"limit\",\n \"in\": \"query\",\n \"required\": false,\n \"description\": \"Page size.\",\n \"schema\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100,\n \"default\": 50\n },\n \"example\": 50\n }\n },\n \"responses\": {\n \"BadRequest\": {\n \"description\": \"The request is invalid (`invalid_request`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:invalid_request\",\n \"title\": \"Invalid request\",\n \"status\": 400,\n \"code\": \"invalid_request\",\n \"detail\": \"The request body does not match the schema.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"errors\": [\n {\n \"path\": \"/sourceRef\",\n \"message\": \"must match pattern \\\"^[A-Za-z0-9._\\\\- ]{1,255}$\\\"\"\n }\n ]\n }\n }\n }\n },\n \"Conflict\": {\n \"description\": \"The write conflicts with current state: `conflict`, `invalid_state`,\\n`source_hash_conflict`, `node_id_unavailable`, `namespace_busy`,\\n`namespace_exists`, `idempotency_in_progress`, `extraction_plan_stale`, or\\n`inference_not_configured`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:source_hash_conflict\",\n \"title\": \"Source hash already stored\",\n \"status\": 409,\n \"code\": \"source_hash_conflict\",\n \"detail\": \"Another sourceRef in this namespace already holds this content.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"duplicateOf\": \"docs__runbook-old.md\"\n }\n }\n }\n },\n \"Forbidden\": {\n \"description\": \"`application/json` (API Gateway): the key is unknown or revoked, or its database is not\\nroutable. `application/problem+json`: `insufficient_scope` (a `read` key on a\\n`read_write` operation, or a `memory:full` key on an export or destructive operation)\\nor `quota_exceeded` (the organization is over its storage quota).\\n\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GatewayError\"\n },\n \"example\": {\n \"message\": \"Forbidden\"\n }\n },\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:insufficient_scope\",\n \"title\": \"Insufficient scope\",\n \"status\": 403,\n \"code\": \"insufficient_scope\",\n \"detail\": \"This operation needs a read_write key.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"InternalError\": {\n \"description\": \"Unexpected server error (`internal`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:internal\",\n \"title\": \"Internal error\",\n \"status\": 500,\n \"code\": \"internal\",\n \"detail\": \"An unexpected error occurred.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true\n }\n }\n }\n },\n \"NotFound\": {\n \"description\": \"The fact or draft does not exist in this namespace (`not_found`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:not_found\",\n \"title\": \"Not found\",\n \"status\": 404,\n \"code\": \"not_found\",\n \"detail\": \"No fact with that id exists in this namespace.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"NotImplemented\": {\n \"description\": \"The operation or option depends on an engine release that has not shipped (`not_implemented`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:not_implemented\",\n \"title\": \"Not implemented\",\n \"status\": 501,\n \"code\": \"not_implemented\",\n \"detail\": \"tokenBudget is not available yet.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"OauthErrorResponse\": {\n \"description\": \"RFC 6749 §5.2 error (or an RFC 8628 §3.5 polling signal). JSON with an\\n`error` member — never problem+json.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"examples\": {\n \"authorization_pending\": {\n \"value\": {\n \"error\": \"authorization_pending\",\n \"error_description\": \"The claim is awaiting human approval.\",\n \"interval\": 5\n }\n },\n \"slow_down\": {\n \"value\": {\n \"error\": \"slow_down\",\n \"error_description\": \"Polling faster than the granted interval.\"\n }\n },\n \"invalid_grant\": {\n \"value\": {\n \"error\": \"invalid_grant\",\n \"error_description\": \"The claim grant is expired, unknown, or already redeemed.\"\n }\n },\n \"key_limit_reached\": {\n \"value\": {\n \"error\": \"key_limit_reached\",\n \"error_description\": \"The organization already holds the maximum number of live agent keys.\"\n }\n }\n }\n }\n }\n },\n \"OauthServerError\": {\n \"description\": \"A transient provisioning failure with the claim grant still\\nredeemable. RFC 6749 §5.2 `server_error` — retry with the same grant.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/OauthErrorBody\"\n },\n \"example\": {\n \"error\": \"server_error\",\n \"error_description\": \"Provisioning failed transiently; retry with the same claim grant.\"\n }\n }\n }\n },\n \"PayloadTooLarge\": {\n \"description\": \"The request body is over the limit for this operation (`payload_too_large`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:payload_too_large\",\n \"title\": \"Payload too large\",\n \"status\": 413,\n \"code\": \"payload_too_large\",\n \"detail\": \"Request bodies are limited to 1 MiB.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"PaymentRequired\": {\n \"description\": \"The organization's paid subscription is not active (`subscription_inactive`). Reads still work.\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:subscription_inactive\",\n \"title\": \"Subscription inactive\",\n \"status\": 402,\n \"code\": \"subscription_inactive\",\n \"detail\": \"The organization's subscription is canceled; writes are disabled.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"QuotaExceeded\": {\n \"description\": \"The email already has the maximum number of outstanding claim tokens (`quota_exceeded`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:quota_exceeded\",\n \"title\": \"Quota exceeded\",\n \"status\": 403,\n \"code\": \"quota_exceeded\",\n \"detail\": \"This email already has the maximum number of pending claim tokens.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false\n }\n }\n }\n },\n \"ServiceUnavailable\": {\n \"description\": \"Temporarily unavailable: `unavailable` (tenant cold start or writer handoff) or `fenced`\\n(the writer lost its lease; the write did not commit). Safe to retry.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:fenced\",\n \"title\": \"Writer fenced\",\n \"status\": 503,\n \"code\": \"fenced\",\n \"detail\": \"The write did not commit; retry.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 1\n }\n }\n }\n },\n \"TooManyRequests\": {\n \"description\": \"Rate limit exceeded (`rate_limited`).\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n },\n \"Retry-After\": {\n \"$ref\": \"#/components/headers/Retry-After\"\n },\n \"RateLimit-Policy\": {\n \"$ref\": \"#/components/headers/RateLimit-Policy\"\n },\n \"RateLimit\": {\n \"$ref\": \"#/components/headers/RateLimit\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:rate_limited\",\n \"title\": \"Rate limited\",\n \"status\": 429,\n \"code\": \"rate_limited\",\n \"detail\": \"Too many requests for this key.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": true,\n \"retryAfterSeconds\": 17\n }\n }\n }\n },\n \"Unauthorized\": {\n \"description\": \"Missing or malformed bearer token. Produced by API Gateway, so the body is the gateway's\\nnative shape, not problem+json.\\n\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/GatewayError\"\n },\n \"example\": {\n \"message\": \"Unauthorized\"\n }\n }\n }\n },\n \"UnprocessableContent\": {\n \"description\": \"Well-formed but refused: `ontology_violation`, `ingest_failed`,\\n`idempotency_key_reused`, or `embedding_dimension_mismatch`.\\n\",\n \"headers\": {\n \"Request-Id\": {\n \"$ref\": \"#/components/headers/Request-Id\"\n }\n },\n \"content\": {\n \"application/problem+json\": {\n \"schema\": {\n \"$ref\": \"#/components/schemas/Problem\"\n },\n \"example\": {\n \"type\": \"urn:synapsetree:problem:ontology_violation\",\n \"title\": \"Ontology violation\",\n \"status\": 422,\n \"code\": \"ontology_violation\",\n \"detail\": \"Node type \\\"microservice\\\" is not in this namespace's strict manifest.\",\n \"requestId\": \"req_01j9xb7c8d9e\",\n \"retryable\": false,\n \"kind\": \"node\",\n \"ontologyType\": \"microservice\"\n }\n }\n }\n }\n },\n \"schemas\": {\n \"AgentIdentityRequest\": {\n \"type\": \"object\",\n \"description\": \"Who the human behind the agent is. `assertion` carries whatever identity assertion the agent can present (it is logged, never used to change the flow).\",\n \"additionalProperties\": false,\n \"required\": [\n \"email\"\n ],\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The human's email; the claim link is sent here.\"\n },\n \"assertion\": {\n \"type\": \"string\",\n \"description\": \"Optional identity assertion from the agent's provider, parsed and logged for audit only.\"\n }\n }\n },\n \"AgentIdentityResponse\": {\n \"type\": \"object\",\n \"description\": \"The pending claim's poll parameters. Byte-equal for known and unknown emails.\",\n \"additionalProperties\": false,\n \"required\": [\n \"claim_token\",\n \"user_code\",\n \"poll\"\n ],\n \"properties\": {\n \"claim_token\": {\n \"type\": \"string\",\n \"pattern\": \"^stclaim_[A-Za-z0-9._-]{8,128}$\",\n \"description\": \"The claim grant to present as the OAuth `assertion` at POST /oauth2/token.\"\n },\n \"user_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{6}$\",\n \"description\": \"Six-digit code the human confirms on the consent interstitial.\"\n },\n \"poll\": {\n \"$ref\": \"#/components/schemas/PollGrant\"\n }\n }\n },\n \"ChunkExtraction\": {\n \"type\": \"object\",\n \"description\": \"One chunk's model output, as described by the plan's `outputSchema`.\",\n \"additionalProperties\": false,\n \"required\": [\n \"facts\",\n \"tasks\"\n ],\n \"properties\": {\n \"facts\": {\n \"type\": \"array\",\n \"maxItems\": 200,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedFact\"\n }\n },\n \"tasks\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedTask\"\n }\n }\n }\n },\n \"ChunkFailure\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"chunkIndex\",\n \"reason\"\n ],\n \"properties\": {\n \"chunkIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"reason\": {\n \"type\": \"string\",\n \"enum\": [\n \"parse\",\n \"llm\",\n \"schema\"\n ],\n \"description\": \"Why the chunk was not ingested. Messages never include content.\"\n }\n }\n },\n \"ChunkResult\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"index\",\n \"response\"\n ],\n \"properties\": {\n \"index\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"The chunk's position in the plan's chunking of the source.\"\n },\n \"response\": {\n \"$ref\": \"#/components/schemas/ChunkExtraction\"\n }\n }\n },\n \"Chunking\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"maxChunkLength\",\n \"chunkOverlap\"\n ],\n \"properties\": {\n \"maxChunkLength\": {\n \"type\": \"integer\",\n \"minimum\": 2,\n \"maximum\": 100000\n },\n \"chunkOverlap\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 99999\n }\n }\n },\n \"ClaimGrantRequest\": {\n \"type\": \"object\",\n \"description\": \"Form-urlencoded claim-grant poll body (RFC 8628-style poll with an\\nRFC 7523 jwt-bearer-shaped assertion).\\n\",\n \"additionalProperties\": false,\n \"required\": [\n \"grant_type\",\n \"assertion\"\n ],\n \"properties\": {\n \"grant_type\": {\n \"type\": \"string\",\n \"const\": \"urn:synapsetree:claim\",\n \"description\": \"The claim-grant flow's only grant type.\"\n },\n \"assertion\": {\n \"type\": \"string\",\n \"pattern\": \"^stclaim_[A-Za-z0-9._-]{8,128}$\",\n \"description\": \"The `stclaim_…` claim token from POST /agent/identity.\"\n }\n }\n },\n \"ClientExtractionIngest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"mode\",\n \"namespace\",\n \"sourceRef\",\n \"sourceHash\",\n \"planFingerprint\",\n \"chunks\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"const\": \"client_extraction\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n \"planFingerprint\": {\n \"$ref\": \"#/components/schemas/PlanFingerprint\"\n },\n \"onDuplicateHash\": {\n \"$ref\": \"#/components/schemas/OnDuplicateHash\"\n },\n \"chunks\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 1000,\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkResult\"\n }\n }\n }\n },\n \"Confidence\": {\n \"type\": \"string\",\n \"enum\": [\n \"certain\",\n \"inferred\",\n \"tentative\"\n ]\n },\n \"CreateEventRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"eventType\",\n \"summary\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"eventType\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000,\n \"description\": \"Trimmed of surrounding whitespace, then at most 4000 UTF-16 code units (the engine's limit; JSON Schema's maxLength counts code points, so astral characters count twice). Narrowed from 8000 by the dated 2026-11-01 D12 exception.\"\n },\n \"relatedFactId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"occurredAt\": {\n \"description\": \"When it happened. Defaults to now.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"Cursor\": {\n \"type\": \"string\",\n \"description\": \"Opaque pagination cursor.\",\n \"minLength\": 1,\n \"maxLength\": 512,\n \"examples\": [\n \"c_eyJrIjoiZG9jc19fcnVuYm9vay5tZCJ9.k3Jf\"\n ]\n },\n \"Direction\": {\n \"type\": \"string\",\n \"enum\": [\n \"inbound\",\n \"outbound\",\n \"both\"\n ]\n },\n \"Edge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"sourceId\",\n \"targetId\",\n \"edgeType\",\n \"createdAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"targetId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"edgeType\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"EdgeType\": {\n \"description\": \"Edge type. Open, like OkfType; the listed values are the schema-software-org edges.\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"knows\",\n \"spouse\",\n \"parent\",\n \"worksFor\",\n \"memberOf\",\n \"homeLocation\",\n \"workLocation\",\n \"location\",\n \"containedInPlace\",\n \"subOrganization\",\n \"object\",\n \"agent\",\n \"attendee\",\n \"organizer\",\n \"author\",\n \"publisher\",\n \"about\",\n \"itemReviewed\",\n \"owns\",\n \"dependsOn\",\n \"specifies\",\n \"documents\",\n \"handoffFor\",\n \"supersedes\",\n \"hasRole\",\n \"operates\",\n \"provides\",\n \"maintains\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n }\n ]\n },\n \"Embedding\": {\n \"type\": \"array\",\n \"description\": \"A client-computed embedding vector. All vectors in a namespace must share one model and\\ndimension; a different dimension is refused with `422 embedding_dimension_mismatch`.\\n\",\n \"minItems\": 1,\n \"maxItems\": 8192,\n \"items\": {\n \"type\": \"number\"\n },\n \"examples\": [\n [\n 0.0123,\n -0.0456,\n 0.0789\n ]\n ]\n },\n \"Event\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"eventType\",\n \"summary\",\n \"relatedFactId\",\n \"occurredAt\",\n \"createdAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"eventType\": {\n \"$ref\": \"#/components/schemas/EventType\"\n },\n \"summary\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 8000\n },\n \"relatedFactId\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"occurredAt\": {\n \"description\": \"When the event happened. Null means at `createdAt`.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"EventType\": {\n \"type\": \"string\",\n \"enum\": [\n \"observation\",\n \"decision\",\n \"action\",\n \"outcome\"\n ]\n },\n \"ExistingFactReplacement\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"kind\",\n \"factId\"\n ],\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"existing\"\n },\n \"factId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n }\n }\n },\n \"ExtractedEdge\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"edgeType\",\n \"targetTitle\"\n ],\n \"properties\": {\n \"edgeType\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n },\n \"targetTitle\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000,\n \"description\": \"Title of another fact in this response or already in the namespace.\"\n }\n }\n },\n \"ExtractedFact\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"title\",\n \"body\",\n \"tags\",\n \"confidence\"\n ],\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"okfType\": {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n \"evidence\": {\n \"type\": \"array\",\n \"description\": \"Quotes copied from the chunk, checked when grounding is on. Never stored.\",\n \"maxItems\": 10,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 2000\n }\n },\n \"edges\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": {\n \"$ref\": \"#/components/schemas/ExtractedEdge\"\n }\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"ExtractedTask\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"description\",\n \"priority\"\n ],\n \"properties\": {\n \"description\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000\n },\n \"priority\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 10\n }\n }\n },\n \"Fact\": {\n \"description\": \"A fact, discriminated by `sourceType`.\",\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/ImmutableDocumentFact\"\n },\n {\n \"$ref\": \"#/components/schemas/LibrarianInferredFact\"\n },\n {\n \"$ref\": \"#/components/schemas/UserStatedFact\"\n },\n {\n \"$ref\": \"#/components/schemas/UserConfirmedFact\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"sourceType\",\n \"mapping\": {\n \"immutable_document\": \"#/components/schemas/ImmutableDocumentFact\",\n \"librarian_inferred\": \"#/components/schemas/LibrarianInferredFact\",\n \"user_stated\": \"#/components/schemas/UserStatedFact\",\n \"user_confirmed\": \"#/components/schemas/UserConfirmedFact\"\n }\n }\n },\n \"FactBase\": {\n \"type\": \"object\",\n \"description\": \"Fields shared by every fact. Not used on its own; see `Fact`.\",\n \"required\": [\n \"id\",\n \"namespace\",\n \"title\",\n \"body\",\n \"tags\",\n \"confidence\",\n \"okfType\",\n \"lifecycleStatus\",\n \"trustTier\",\n \"isStale\",\n \"generatedBy\",\n \"lastVerifiedAt\",\n \"lastVerifiedBy\",\n \"validFrom\",\n \"validTo\",\n \"supersededBy\",\n \"supersededAt\",\n \"accessCount\",\n \"lastAccessedAt\",\n \"createdAt\",\n \"updatedAt\"\n ],\n \"properties\": {\n \"id\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"okfType\": {\n \"description\": \"Ontology node type, or null when untyped.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"lifecycleStatus\": {\n \"$ref\": \"#/components/schemas/LifecycleStatus\"\n },\n \"trustTier\": {\n \"$ref\": \"#/components/schemas/TrustTier\"\n },\n \"isStale\": {\n \"type\": \"boolean\"\n },\n \"generatedBy\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": 256,\n \"description\": \"Producing actor, e.g. `process:librarian` or `human:kurt`.\"\n },\n \"lastVerifiedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"lastVerifiedBy\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": 256\n },\n \"validFrom\": {\n \"description\": \"When the fact became true in the world. Null means since `createdAt`.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"validTo\": {\n \"description\": \"When the fact stopped being true. Null means still current.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"supersededBy\": {\n \"description\": \"The fact that replaced this one.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"supersededAt\": {\n \"description\": \"When the replacement was recorded.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"accessCount\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"lastAccessedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"updatedAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n }\n }\n },\n \"FactId\": {\n \"type\": \"string\",\n \"description\": \"An opaque fact id. Engine-generated ids start with `fact_`; graph node ids are caller-chosen.\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"examples\": [\n \"fact_01j9x7k2m3\"\n ]\n },\n \"GatewayError\": {\n \"type\": \"object\",\n \"description\": \"API Gateway's native error body (authorizer denials). Not problem+json.\",\n \"additionalProperties\": false,\n \"required\": [\n \"message\"\n ],\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n }\n },\n \"ImmutableDocumentFact\": {\n \"type\": \"object\",\n \"description\": \"A fact extracted from or written for a source document. Changes only by re-ingesting the source.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\",\n \"mutable\",\n \"sourceRef\",\n \"sourceHash\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"immutable_document\"\n },\n \"mutable\": {\n \"type\": \"boolean\",\n \"const\": false\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"description\": \"Null after a partially failed ingest; re-ingest to complete it.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"IngestRequest\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/ServerExtractionIngest\"\n },\n {\n \"$ref\": \"#/components/schemas/ClientExtractionIngest\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"mode\",\n \"mapping\": {\n \"server_extraction\": \"#/components/schemas/ServerExtractionIngest\",\n \"client_extraction\": \"#/components/schemas/ClientExtractionIngest\"\n }\n }\n },\n \"IngestResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"chunks\",\n \"ingestedChunks\",\n \"failedChunks\",\n \"truncated\",\n \"duplicateOf\",\n \"parseFailures\"\n ],\n \"properties\": {\n \"chunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"ingestedChunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failedChunks\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"truncated\": {\n \"type\": \"boolean\",\n \"description\": \"True when chunking had to hard-cut text with no natural break.\"\n },\n \"duplicateOf\": {\n \"description\": \"Set when `onDuplicateHash` is `skip` and another sourceRef already holds the content.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"parseFailures\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkFailure\"\n }\n },\n \"embeddingFailures\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Write-phase embed failures counted during this ingest (`{ok: false}` per fact);\\nthe facts commit keyword-only and the re-embed maintenance path repairs them.\\nAbsent when every embed succeeded.\\n\"\n }\n }\n },\n \"LibrarianInferredFact\": {\n \"type\": \"object\",\n \"description\": \"A fact consolidated from events by the librarian.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"librarian_inferred\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"LifecycleStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"draft\",\n \"stable\",\n \"deprecated\"\n ]\n },\n \"MutableFactFields\": {\n \"type\": \"object\",\n \"description\": \"Fields shared by mutable facts. Not used on its own; see `Fact`.\",\n \"required\": [\n \"mutable\",\n \"sourceRef\",\n \"sourceHash\"\n ],\n \"properties\": {\n \"mutable\": {\n \"type\": \"boolean\",\n \"const\": true\n },\n \"sourceRef\": {\n \"type\": \"null\"\n },\n \"sourceHash\": {\n \"type\": \"null\"\n }\n }\n },\n \"MutableSourceType\": {\n \"type\": \"string\",\n \"enum\": [\n \"user_stated\",\n \"user_confirmed\",\n \"librarian_inferred\"\n ]\n },\n \"Namespace\": {\n \"type\": \"string\",\n \"description\": \"A namespace inside the tenant database (the engine's entity_id).\",\n \"pattern\": \"^[a-z0-9][a-z0-9._:-]{0,127}$\",\n \"examples\": [\n \"repo:synapsetree\"\n ]\n },\n \"NamespaceList\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"data\",\n \"hasMore\",\n \"nextCursor\"\n ],\n \"properties\": {\n \"data\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/NamespaceSummary\"\n }\n },\n \"hasMore\": {\n \"type\": \"boolean\"\n },\n \"nextCursor\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Cursor\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n },\n \"NamespaceSummary\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n }\n }\n },\n \"NewFactReplacement\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"kind\",\n \"title\",\n \"body\"\n ],\n \"properties\": {\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"new\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"sourceType\": {\n \"$ref\": \"#/components/schemas/MutableSourceType\"\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"OauthErrorBody\": {\n \"type\": \"object\",\n \"description\": \"RFC 6749 §5.2 error body: `error` plus optional `error_description`;\\n`interval` rides on `authorization_pending` (RFC 8628 §3.5).\\n`key_limit_reached`, `database_name_taken` and `database_quota_exceeded`\\nare documented SynapseTree extensions of the `error` member — account\\nwalls a human must clear, after which the agent resumes polling (the\\nclaim grant survives until its TTL):\\n`key_limit_reached` (the organization's 10-key cap — prune keys in the\\ndashboard), `database_name_taken` (the default database name is held by\\na deleted database until GC cleanup — create a differently-named\\ndatabase in the dashboard), `database_quota_exceeded` (the plan has no\\nfree database slot — delete a database or upgrade, then poll again).\\nThey are error-member values here, not problem+json ProblemCodes.\\n\",\n \"additionalProperties\": false,\n \"required\": [\n \"error\"\n ],\n \"properties\": {\n \"error\": {\n \"type\": \"string\",\n \"description\": \"An RFC 6749 §5.2 code, an RFC 8628 §3.5 code, or a documented SynapseTree extension (`key_limit_reached`, `database_name_taken`, `database_quota_exceeded`).\",\n \"enum\": [\n \"invalid_request\",\n \"invalid_grant\",\n \"authorization_pending\",\n \"slow_down\",\n \"unsupported_grant_type\",\n \"server_error\",\n \"key_limit_reached\",\n \"database_name_taken\",\n \"database_quota_exceeded\"\n ]\n },\n \"error_description\": {\n \"type\": \"string\",\n \"description\": \"Human-readable detail (RFC 6749 §5.2).\"\n },\n \"error_uri\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"Optional RFC 6749 §5.2 pointer to the dashboard page that clears the wall.\"\n },\n \"interval\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Seconds to wait before polling again (RFC 8628 §3.5).\"\n }\n }\n },\n \"OkfType\": {\n \"description\": \"Ontology node type. Open: each namespace's manifest defines its own types and `emergent`\\nmode adds more; facts imported from OKF bundles keep their original type string. The\\nlisted values are the schema-software-org types.\\n\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"person\",\n \"organization\",\n \"place\",\n \"event\",\n \"project\",\n \"action\",\n \"creativework\",\n \"review\",\n \"product\",\n \"software_application\",\n \"service\",\n \"role\",\n \"design_spec\",\n \"handoff\",\n \"procedure\",\n \"session_recap\",\n \"reference_doc\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128\n }\n ]\n },\n \"OnDuplicateHash\": {\n \"type\": \"string\",\n \"description\": \"When another sourceRef already holds this content: `skip` (write nothing), `ingest` anyway, or `error` (409 source_hash_conflict).\",\n \"enum\": [\n \"skip\",\n \"ingest\",\n \"error\"\n ],\n \"default\": \"skip\"\n },\n \"PlanFingerprint\": {\n \"type\": \"string\",\n \"pattern\": \"^sha256:[0-9a-f]{64}$\",\n \"examples\": [\n \"sha256:4e6a8c0b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a6c\"\n ]\n },\n \"PollGrant\": {\n \"type\": \"object\",\n \"description\": \"Where and how to poll for the minted key.\",\n \"additionalProperties\": false,\n \"required\": [\n \"token_endpoint\",\n \"grant\",\n \"interval\"\n ],\n \"properties\": {\n \"token_endpoint\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"The api.-host token endpoint.\"\n },\n \"grant\": {\n \"type\": \"string\",\n \"const\": \"urn:synapsetree:claim\",\n \"description\": \"The claim-grant type to send as `grant_type`.\"\n },\n \"interval\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"description\": \"Seconds to wait between polls of `token_endpoint` (ruled\\n2026-11-01). Modeled on the RFC 8628 §3.2 `interval`, but nested in\\n`poll` rather than at the top level. An `authorization_pending` or\\n`slow_down` answer carries an `interval` too (`slow_down` a larger\\none), which replaces this one from then on.\\n\"\n }\n }\n },\n \"Problem\": {\n \"type\": \"object\",\n \"description\": \"RFC 7807 problem details.\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"title\",\n \"status\",\n \"code\",\n \"detail\",\n \"requestId\",\n \"retryable\"\n ],\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"`urn:synapsetree:problem:<code>`.\",\n \"pattern\": \"^urn:synapsetree:problem:[a-z_]+$\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"type\": \"integer\",\n \"minimum\": 400,\n \"maximum\": 599\n },\n \"code\": {\n \"$ref\": \"#/components/schemas/ProblemCode\"\n },\n \"detail\": {\n \"type\": \"string\"\n },\n \"requestId\": {\n \"type\": \"string\",\n \"pattern\": \"^req_[A-Za-z0-9]{8,64}$\"\n },\n \"retryable\": {\n \"type\": \"boolean\"\n },\n \"retryAfterSeconds\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"errors\": {\n \"type\": \"array\",\n \"description\": \"Validation failures (`invalid_request`).\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"path\",\n \"message\"\n ],\n \"properties\": {\n \"path\": {\n \"type\": \"string\",\n \"description\": \"JSON Pointer into the request.\"\n },\n \"message\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"parseFailures\": {\n \"type\": \"array\",\n \"description\": \"Per-chunk failures (`ingest_failed`).\",\n \"items\": {\n \"$ref\": \"#/components/schemas/ChunkFailure\"\n }\n },\n \"duplicateOf\": {\n \"description\": \"The sourceRef already holding this content (`source_hash_conflict`).\",\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\n \"node\",\n \"edge\"\n ],\n \"description\": \"What violated the ontology (`ontology_violation`).\"\n },\n \"ontologyType\": {\n \"type\": \"string\",\n \"description\": \"The out-of-manifest type (`ontology_violation`).\"\n },\n \"reason\": {\n \"type\": \"string\",\n \"description\": \"Machine-readable sub-reason, e.g. `immutable_target` for `invalid_state`.\"\n }\n }\n },\n \"ProblemCode\": {\n \"description\": \"Stable machine-readable error code. Open: new codes may be added in minor versions, so\\nclients must treat an unlisted code as a generic error of its HTTP status. The listed\\nvalues are the codes this version defines.\\n\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"invalid_request\",\n \"insufficient_scope\",\n \"subscription_inactive\",\n \"quota_exceeded\",\n \"not_found\",\n \"namespace_exists\",\n \"conflict\",\n \"invalid_state\",\n \"source_hash_conflict\",\n \"node_id_unavailable\",\n \"namespace_busy\",\n \"idempotency_in_progress\",\n \"extraction_plan_stale\",\n \"inference_not_configured\",\n \"inference_config_invalid\",\n \"payload_too_large\",\n \"idempotency_key_reused\",\n \"ontology_violation\",\n \"ingest_failed\",\n \"embedding_dimension_mismatch\",\n \"embedding_model_mismatch\",\n \"rate_limited\",\n \"internal\",\n \"not_implemented\",\n \"unavailable\",\n \"upstream_inference_unavailable\",\n \"fenced\",\n \"unauthorized\"\n ]\n },\n {\n \"type\": \"string\",\n \"pattern\": \"^[a-z_]+$\",\n \"maxLength\": 64\n }\n ]\n },\n \"QueryDiagnostics\": {\n \"type\": \"object\",\n \"description\": \"Named BYOK diagnostics for a query response. A typed map: keys are diagnostic\\nnames, values are scalars; unknown names are legal and clients must ignore them.\\nReported reasons include `keyword_only: true` (the organization has no embeddings\\nregistration) and `embed_unavailable: <reason>` (key or provider fault, or the tier\\ncap exhausted). While a maintenance run holds the namespace, vector search is\\npaused and reads answer keyword-only; the run itself is surfaced through\\n`currentRunId` and `currentRunState` on the pending-maintenance object. All of\\nthese are normal keyword-only degradation, not errors.\\n\",\n \"additionalProperties\": {\n \"description\": \"A named diagnostic flag, count or label.\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"examples\": [\n {\n \"keyword_only\": true\n }\n ]\n },\n \"QueryRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespaces\",\n \"query\"\n ],\n \"properties\": {\n \"namespaces\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 20,\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n }\n },\n \"query\": {\n \"type\": \"string\",\n \"maxLength\": 4096,\n \"description\": \"Search text. Empty returns the most recent facts.\"\n },\n \"queryEmbedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n },\n \"limit\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 100,\n \"default\": 10\n },\n \"hybridWeight\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1,\n \"description\": \"0 = keyword only, 1 = semantic only. Omit for the default semantic ranking.\"\n },\n \"excludeDrafts\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"asOf\": {\n \"description\": \"Return facts that were true at this instant, using current knowledge.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"weights\": {\n \"type\": \"object\",\n \"description\": \"Per-namespace score multipliers (default 1; 0 skips the namespace).\",\n \"propertyNames\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"additionalProperties\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"floors\": {\n \"type\": \"object\",\n \"description\": \"Minimum results reserved per namespace before the global `limit` cut.\",\n \"propertyNames\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"additionalProperties\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 100\n }\n },\n \"tokenBudget\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200000,\n \"description\": \"Pack facts into this many estimated tokens.\",\n \"x-synapsetree-engine\": \"read({ tokenBudget }) (core-llm-wiki 7.8.0 phase D)\"\n }\n }\n },\n \"QueryResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"facts\",\n \"scores\",\n \"tasks\",\n \"events\"\n ],\n \"properties\": {\n \"facts\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n },\n \"scores\": {\n \"type\": \"object\",\n \"description\": \"Score per returned fact id (empty for recency reads).\",\n \"additionalProperties\": {\n \"type\": \"number\"\n }\n },\n \"tasks\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Task\"\n }\n },\n \"events\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Event\"\n }\n },\n \"diagnostics\": {\n \"description\": \"Additive BYOK diagnostics; present only when there is something to report\\n(e.g. the searched namespaces serve keyword-only facts because the org has\\nno embeddings registration).\\n\",\n \"$ref\": \"#/components/schemas/QueryDiagnostics\"\n }\n }\n },\n \"RememberRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"title\",\n \"body\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1000\n },\n \"body\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100000\n },\n \"tags\": {\n \"type\": \"array\",\n \"maxItems\": 100,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 100\n }\n },\n \"confidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"sourceType\": {\n \"type\": \"string\",\n \"enum\": [\n \"user_stated\",\n \"user_confirmed\"\n ],\n \"default\": \"user_stated\"\n },\n \"okfType\": {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n \"validFrom\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"embedding\": {\n \"$ref\": \"#/components/schemas/Embedding\"\n }\n }\n },\n \"RevokeRequest\": {\n \"type\": \"object\",\n \"description\": \"Form-urlencoded revocation body (RFC 7009 §2.1).\",\n \"additionalProperties\": false,\n \"required\": [\n \"token\"\n ],\n \"properties\": {\n \"token\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"The API key to revoke (revocation is defined for keys only).\"\n },\n \"token_type_hint\": {\n \"type\": \"string\",\n \"enum\": [\n \"access_token\"\n ],\n \"description\": \"Optional RFC 7009 §2.1 hint.\"\n }\n }\n },\n \"ServerExtractionIngest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"mode\",\n \"namespace\",\n \"sourceRef\",\n \"sourceHash\",\n \"content\"\n ],\n \"properties\": {\n \"mode\": {\n \"type\": \"string\",\n \"const\": \"server_extraction\"\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceRef\": {\n \"$ref\": \"#/components/schemas/SourceRef\"\n },\n \"sourceHash\": {\n \"$ref\": \"#/components/schemas/SourceHash\"\n },\n \"content\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 524288\n },\n \"onDuplicateHash\": {\n \"$ref\": \"#/components/schemas/OnDuplicateHash\"\n },\n \"chunking\": {\n \"$ref\": \"#/components/schemas/Chunking\"\n }\n }\n },\n \"SourceHash\": {\n \"type\": \"string\",\n \"description\": \"Lowercase hex SHA-256 of the source's bytes.\",\n \"pattern\": \"^[0-9a-f]{64}$\",\n \"examples\": [\n \"9f2c4b8e1a7d3f6c5b0e2d4a8c1f3e5b7d9a0c2e4f6b8d0a1c3e5f7b9d1a3c5e\"\n ]\n },\n \"SourceRef\": {\n \"type\": \"string\",\n \"description\": \"Identifies one source document within a namespace. Restricted to characters the engine\\nstores unchanged; the SDK's `toSourceRef(path)` encodes `/` as `__`.\\n\",\n \"pattern\": \"^[A-Za-z0-9._\\\\- ]{1,255}$\",\n \"examples\": [\n \"infra__stack.ts\"\n ]\n },\n \"SourceType\": {\n \"type\": \"string\",\n \"description\": \"How a fact was produced. `immutable_document` facts change only by re-ingesting their source.\",\n \"enum\": [\n \"immutable_document\",\n \"librarian_inferred\",\n \"user_stated\",\n \"user_confirmed\"\n ]\n },\n \"SupersedeRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"replacement\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"validFrom\": {\n \"description\": \"When the old fact stopped being true and the replacement became true. Defaults to now.\",\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"replacement\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/components/schemas/NewFactReplacement\"\n },\n {\n \"$ref\": \"#/components/schemas/ExistingFactReplacement\"\n }\n ],\n \"discriminator\": {\n \"propertyName\": \"kind\",\n \"mapping\": {\n \"new\": \"#/components/schemas/NewFactReplacement\",\n \"existing\": \"#/components/schemas/ExistingFactReplacement\"\n }\n }\n }\n }\n },\n \"SupersedeResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"superseded\",\n \"replacement\"\n ],\n \"properties\": {\n \"superseded\": {\n \"$ref\": \"#/components/schemas/Fact\"\n },\n \"replacement\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n }\n },\n \"Task\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"namespace\",\n \"description\",\n \"status\",\n \"priority\",\n \"okfType\",\n \"createdAt\",\n \"updatedAt\",\n \"resolvedAt\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"description\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4000\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"pending\",\n \"in_progress\",\n \"done\",\n \"abandoned\"\n ]\n },\n \"priority\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 10\n },\n \"okfType\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/OkfType\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"createdAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"updatedAt\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"resolvedAt\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n }\n },\n \"Timestamp\": {\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"description\": \"RFC 3339 timestamp, UTC.\",\n \"examples\": [\n \"2026-09-29T10:00:00Z\"\n ]\n },\n \"TokenResponse\": {\n \"type\": \"object\",\n \"description\": \"RFC 6749 §5.1 success response — exactly one freshly minted API key.\",\n \"additionalProperties\": false,\n \"required\": [\n \"access_token\",\n \"token_type\",\n \"account_id\",\n \"scope\"\n ],\n \"properties\": {\n \"access_token\": {\n \"type\": \"string\",\n \"pattern\": \"^stree_[A-Za-z0-9_-]{43}$\",\n \"description\": \"The minted API key. The only time it is ever shown.\"\n },\n \"token_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"Bearer\"\n ],\n \"description\": \"RFC 6749 §5.1 — keys authenticate as bearer tokens.\"\n },\n \"account_id\": {\n \"type\": \"string\",\n \"description\": \"The organization the key belongs to (its `account_id` context).\"\n },\n \"scope\": {\n \"type\": \"string\",\n \"const\": \"memory:full\",\n \"description\": \"Agent keys always carry the full memory scope.\"\n }\n }\n },\n \"TraverseRequest\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"namespace\",\n \"sourceId\"\n ],\n \"properties\": {\n \"namespace\": {\n \"$ref\": \"#/components/schemas/Namespace\"\n },\n \"sourceId\": {\n \"$ref\": \"#/components/schemas/FactId\"\n },\n \"maxDepth\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 3,\n \"default\": 1\n },\n \"direction\": {\n \"$ref\": \"#/components/schemas/Direction\"\n },\n \"edgeTypes\": {\n \"type\": \"array\",\n \"description\": \"Allowed edge types. Omit for all; an empty array matches none.\",\n \"maxItems\": 100,\n \"items\": {\n \"$ref\": \"#/components/schemas/EdgeType\"\n }\n },\n \"maxNodes\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200,\n \"default\": 20\n },\n \"minConfidence\": {\n \"$ref\": \"#/components/schemas/Confidence\"\n },\n \"excludeSourceTypes\": {\n \"type\": \"array\",\n \"maxItems\": 4,\n \"uniqueItems\": true,\n \"items\": {\n \"$ref\": \"#/components/schemas/SourceType\"\n }\n },\n \"excludeDrafts\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"asOf\": {\n \"$ref\": \"#/components/schemas/Timestamp\"\n },\n \"tokenBudget\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 200000,\n \"x-synapsetree-engine\": \"traverseGraph({ tokenBudget }) (core-llm-wiki 7.8.0 phase D)\"\n }\n }\n },\n \"TraverseResponse\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"nodes\",\n \"edges\"\n ],\n \"properties\": {\n \"nodes\": {\n \"type\": \"array\",\n \"description\": \"Anchor first, then neighbours by depth.\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Fact\"\n }\n },\n \"edges\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Edge\"\n }\n }\n }\n },\n \"TrustTier\": {\n \"type\": \"string\",\n \"enum\": [\n \"unverified\",\n \"machine-confirmed\",\n \"human-reviewed\"\n ]\n },\n \"UserConfirmedFact\": {\n \"type\": \"object\",\n \"description\": \"A fact a user has confirmed.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"user_confirmed\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"UserStatedFact\": {\n \"type\": \"object\",\n \"description\": \"A fact stated directly by a user or agent.\",\n \"allOf\": [\n {\n \"$ref\": \"#/components/schemas/FactBase\"\n },\n {\n \"$ref\": \"#/components/schemas/MutableFactFields\"\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"sourceType\"\n ],\n \"properties\": {\n \"sourceType\": {\n \"type\": \"string\",\n \"const\": \"user_stated\"\n }\n }\n }\n ],\n \"unevaluatedProperties\": false\n },\n \"Whoami\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"apiKeyId\",\n \"organizationId\",\n \"tenantDatabaseId\",\n \"scope\",\n \"planCode\",\n \"subscriptionStatus\"\n ],\n \"properties\": {\n \"apiKeyId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"organizationId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"tenantDatabaseId\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"scope\": {\n \"type\": \"string\",\n \"enum\": [\n \"read\",\n \"read_write\",\n \"memory:full\",\n \"memory:admin\"\n ],\n \"description\": \"The key's scope. `read` and `read_write` are dashboard-issued keys; `memory:full`\\nis the agent key issued through auth.md; `memory:admin` is accepted but not issued\\nin v1. A `memory:full` key is refused the export and destructive operations;\\n`memory:admin` passes them.\\n\"\n },\n \"planCode\": {\n \"description\": \"Open; new plans may be added.\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"hobby\",\n \"pro\",\n \"team\"\n ]\n },\n {\n \"type\": \"string\",\n \"minLength\": 1\n }\n ]\n },\n \"subscriptionStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"inactive\",\n \"trialing\",\n \"active\",\n \"past_due\",\n \"canceled\",\n \"unpaid\",\n \"incomplete\",\n \"incomplete_expired\",\n \"paused\"\n ]\n }\n }\n }\n },\n \"securitySchemes\": {\n \"bearerAuth\": {\n \"type\": \"http\",\n \"scheme\": \"bearer\",\n \"bearerFormat\": \"stree_<43 base64url chars>\",\n \"description\": \"A SynapseTree API key: `Authorization: Bearer stree_…`.\"\n }\n }\n },\n \"tags\": [\n {\n \"name\": \"memory\",\n \"description\": \"Search, ingest, and record memory.\"\n },\n {\n \"name\": \"facts\",\n \"description\": \"Individual facts, their history, and temporal supersession.\"\n },\n {\n \"name\": \"graph\",\n \"description\": \"Graph traversal and deterministic graph writes.\"\n },\n {\n \"name\": \"namespaces\",\n \"description\": \"Namespaces inside the tenant database.\"\n },\n {\n \"name\": \"account\",\n \"description\": \"The calling key's routing context.\"\n },\n {\n \"name\": \"agent\",\n \"description\": \"auth.md agent registration — an AI agent signs a user up and the human\\nstays in charge. Unauthenticated registration, the RFC 8628-style claim\\npoll, and RFC 7009 revocation.\\n\"\n }\n ]\n}\n","import contractJson from '../contract/synapsetree-openapi.subset.json';\n\nexport type OperationId =\n | 'queryMemory'\n | 'rememberFact'\n | 'supersedeFact'\n | 'ingestDocument'\n | 'createEvent'\n | 'traverseGraph'\n | 'listNamespaces'\n | 'whoami'\n | 'registerAgentIdentity'\n | 'oauthToken'\n | 'oauthRevoke';\n\nexport const OPERATION_IDS: readonly OperationId[] = [\n 'queryMemory',\n 'rememberFact',\n 'supersedeFact',\n 'ingestDocument',\n 'createEvent',\n 'traverseGraph',\n 'listNamespaces',\n 'whoami',\n 'registerAgentIdentity',\n 'oauthToken',\n 'oauthRevoke',\n];\n\n/** memory:admin operations withheld from agents (SynapseTree ruling D3). Never called, never vendored. */\nexport const WITHHELD_OPERATION_IDS: readonly string[] = [\n 'exportMemory',\n 'importMemory',\n 'forgetFact',\n 'forgetSource',\n 'deleteNamespace',\n 'createMaintenanceRun',\n 'putOntology',\n];\n\nexport interface Operation {\n operationId: OperationId;\n method: 'GET' | 'POST';\n path: string;\n scope: 'read' | 'read_write' | null;\n /** Top-level request-body property names (union across oneOf/anyOf/allOf branches). */\n requestProperties: string[];\n /** Properties required in every branch. */\n requiredProperties: string[];\n queryParameters: string[];\n pathParameters: string[];\n acceptsIdempotencyKey: boolean;\n}\n\n// The subset is a plain OpenAPI 3 document; only the parts below are read.\ntype Json = Record<string, unknown>;\ninterface OpenApiDoc {\n info: Json & { version?: string; 'x-operations'?: string[] };\n paths: Record<string, Record<string, unknown>>;\n components: Record<string, Record<string, unknown>>;\n}\n\nconst doc = contractJson as unknown as OpenApiDoc;\n\nfunction resolve(node: unknown): Json | undefined {\n if (!node || typeof node !== 'object') return undefined;\n const ref = (node as Json).$ref;\n if (typeof ref === 'string') {\n const [, , kind, name] = ref.split('/');\n return resolve(doc.components[kind]?.[name]);\n }\n return node as Json;\n}\n\nfunction shape(schema: unknown): { props: Set<string>; required: Set<string> } {\n const props = new Set<string>();\n const required = new Set<string>();\n const s = resolve(schema);\n if (!s) return { props, required };\n const branches = (s.oneOf ?? s.anyOf) as unknown[] | undefined;\n if (branches && branches.length > 0) {\n const shapes = branches.map(shape);\n for (const sh of shapes) for (const p of sh.props) props.add(p);\n for (const p of shapes[0].required) if (shapes.every((sh) => sh.required.has(p))) required.add(p);\n }\n for (const part of (s.allOf as unknown[] | undefined) ?? []) {\n const sh = shape(part);\n for (const p of sh.props) props.add(p);\n for (const p of sh.required) required.add(p);\n }\n for (const p of Object.keys((s.properties as Json | undefined) ?? {})) props.add(p);\n for (const p of (s.required as string[] | undefined) ?? []) required.add(p);\n return { props, required };\n}\n\nfunction parameters(pathItem: Record<string, unknown>, op: Json): Json[] {\n const raw = [...((pathItem.parameters as unknown[]) ?? []), ...((op.parameters as unknown[]) ?? [])];\n return raw.map((p) => resolve(p)).filter((p): p is Json => p !== undefined);\n}\n\nfunction build(): Record<OperationId, Operation> {\n const table = {} as Record<OperationId, Operation>;\n for (const [path, pathItem] of Object.entries(doc.paths)) {\n for (const method of ['get', 'post'] as const) {\n const op = pathItem[method] as Json | undefined;\n if (!op) continue;\n const id = op.operationId as OperationId;\n if (!OPERATION_IDS.includes(id)) continue;\n const params = parameters(pathItem, op);\n const body = resolve(op.requestBody);\n const content = (body?.content as Record<string, Json> | undefined) ?? {};\n const media = Object.values(content)[0];\n const { props, required } = shape(media?.schema);\n table[id] = {\n operationId: id,\n method: method.toUpperCase() as 'GET' | 'POST',\n path,\n scope: (op['x-synapsetree-scope'] as 'read' | 'read_write' | undefined) ?? null,\n requestProperties: [...props],\n requiredProperties: [...required],\n queryParameters: params.filter((p) => p.in === 'query').map((p) => String(p.name)),\n pathParameters: params.filter((p) => p.in === 'path').map((p) => String(p.name)),\n acceptsIdempotencyKey: params.some((p) => p.in === 'header' && p.name === 'Idempotency-Key'),\n };\n }\n }\n const missing = OPERATION_IDS.filter((id) => !(id in table));\n if (missing.length > 0) throw new Error(`contract subset is missing operations: ${missing.join(', ')}`);\n return table;\n}\n\nexport const OPERATIONS: Readonly<Record<OperationId, Operation>> = build();\n\nexport const CONTRACT_INFO = {\n version: String(doc.info.version ?? ''),\n operations: [...(doc.info['x-operations'] ?? [])],\n};\n","import { randomUUID } from 'node:crypto';\nimport { OPERATIONS, type Operation, type OperationId } from './contract';\nimport { NO_KEY_MESSAGE, SynapseTreeError, UsageError } from './errors';\n\nexport const DEFAULT_BASE_URL = 'https://api.synapsetree.dev';\n\n/** Strips trailing slashes without a regex: CodeQL flags a slash-repetition\n * regex applied to library-controlled input as polynomial ReDoS. */\nexport function stripTrailingSlashes(url: string): string {\n let end = url.length;\n while (end > 0 && url[end - 1] === '/') end--;\n return url.slice(0, end);\n}\n\nexport interface ClientOptions {\n /** Optional only so `auth --email` can register and poll; every other operation needs it. */\n apiKey?: string;\n baseUrl: string;\n userAgent: string;\n fetch?: typeof fetch;\n sleep?: (ms: number) => Promise<void>;\n random?: () => number;\n}\n\nexport interface CallInput {\n path?: Record<string, string>;\n query?: Record<string, string | number | boolean | undefined>;\n body?: Record<string, unknown>;\n form?: Record<string, string | undefined>;\n timeoutMs?: number;\n}\n\nexport interface CallResult<T> {\n status: number;\n data: T;\n requestId?: string;\n rateLimit?: string;\n rateLimitPolicy?: string;\n idempotentReplayed: boolean;\n}\n\nconst RETRY_STATUSES = new Set([408, 429, 502, 503, 504]);\nconst MAX_ATTEMPTS = 3;\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst TIMEOUTS: Partial<Record<OperationId, number>> = { ingestDocument: 120_000 };\nconst UNAUTHENTICATED: ReadonlySet<OperationId> = new Set(['registerAgentIdentity', 'oauthToken']);\n\nfunction buildUrl(baseUrl: string, op: Operation, input: CallInput): string {\n let path = op.path;\n for (const name of op.pathParameters) {\n const value = input.path?.[name];\n if (value === undefined) throw new UsageError(`missing path parameter ${name} for ${op.operationId}`);\n path = path.replace(`{${name}}`, encodeURIComponent(value));\n }\n const url = new URL(baseUrl + path);\n for (const [k, v] of Object.entries(input.query ?? {})) {\n if (v !== undefined) url.searchParams.set(k, String(v));\n }\n return url.toString();\n}\n\nconst MAX_RETRY_AFTER_MS = 30_000;\n\nfunction retryAfterMs(res: Response, body: unknown): number | undefined {\n // Cap the wait: a huge Retry-After (or a day-long hint in the body) must\n // not hang a single tool call for that long; the capped wait keeps the\n // call bounded while still honoring the server's intent.\n const cap = (ms: number) => Math.min(MAX_RETRY_AFTER_MS, ms);\n const header = res.headers.get('retry-after');\n if (header) {\n const seconds = Number(header);\n if (Number.isFinite(seconds)) return cap(Math.max(0, seconds * 1000));\n const date = Date.parse(header);\n if (Number.isFinite(date)) return cap(Math.max(0, date - Date.now()));\n }\n const fromBody = (body as { retryAfterSeconds?: unknown } | undefined)?.retryAfterSeconds;\n return typeof fromBody === 'number' ? cap(fromBody * 1000) : undefined;\n}\n\nasync function readBody(res: Response): Promise<{ text: string; json: unknown; isProblem: boolean; isJson: boolean }> {\n const type = res.headers.get('content-type') ?? '';\n const text = await res.text();\n const isProblem = type.startsWith('application/problem+json');\n const isJson = isProblem || type.startsWith('application/json');\n let json: unknown;\n if (isJson && text.length > 0) {\n try { json = JSON.parse(text); } catch { json = undefined; }\n }\n return { text, json, isProblem, isJson: json !== undefined };\n}\n\nfunction toError(res: Response, parsed: { text: string; json: unknown; isProblem: boolean; isJson: boolean }): SynapseTreeError {\n const requestId = res.headers.get('request-id') ?? undefined;\n const body = (parsed.json ?? {}) as Record<string, unknown>;\n if (parsed.isProblem && typeof body.code === 'string') {\n return new SynapseTreeError({\n status: res.status,\n code: body.code,\n detail: typeof body.detail === 'string' ? body.detail : undefined,\n requestId: typeof body.requestId === 'string' ? body.requestId : requestId,\n retryAfterSeconds: typeof body.retryAfterSeconds === 'number' ? body.retryAfterSeconds : undefined,\n });\n }\n if (parsed.isJson && typeof body.error === 'string') {\n // RFC 6749 §5.2 body from the OAuth endpoints\n return new SynapseTreeError({ status: res.status, code: body.error, detail: typeof body.error_description === 'string' ? body.error_description : undefined, requestId });\n }\n if (res.status === 401 || res.status === 403) {\n return new SynapseTreeError({ status: res.status, code: 'unauthorized', detail: parsed.text.slice(0, 500) || undefined, requestId });\n }\n return new SynapseTreeError({ status: res.status, code: `http_${res.status}`, detail: parsed.text.slice(0, 500) || undefined, requestId });\n}\n\nexport class SynapseTreeClient {\n readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly userAgent: string;\n private readonly fetchImpl: typeof fetch;\n private readonly sleep: (ms: number) => Promise<void>;\n private readonly random: () => number;\n\n constructor(opts: ClientOptions) {\n this.apiKey = opts.apiKey;\n this.baseUrl = stripTrailingSlashes(opts.baseUrl);\n this.userAgent = opts.userAgent;\n this.fetchImpl = opts.fetch ?? globalThis.fetch;\n this.sleep = opts.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n this.random = opts.random ?? Math.random;\n }\n\n get hasKey(): boolean {\n return this.apiKey !== undefined;\n }\n\n async call<T = unknown>(opId: OperationId, input: CallInput = {}): Promise<CallResult<T>> {\n const op = OPERATIONS[opId];\n const authenticated = !UNAUTHENTICATED.has(opId);\n if (authenticated && !this.apiKey) throw new UsageError(NO_KEY_MESSAGE);\n\n const url = buildUrl(this.baseUrl, op, input);\n const headers: Record<string, string> = {\n Accept: 'application/json, application/problem+json',\n 'User-Agent': this.userAgent,\n };\n if (authenticated && this.apiKey) headers.Authorization = `Bearer ${this.apiKey}`;\n let body: string | undefined;\n if (input.form) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(input.form)) if (v !== undefined) params.set(k, v);\n body = params.toString();\n } else if (input.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n body = JSON.stringify(input.body);\n }\n if (op.acceptsIdempotencyKey) headers['Idempotency-Key'] = randomUUID();\n const timeoutMs = input.timeoutMs ?? TIMEOUTS[opId] ?? DEFAULT_TIMEOUT_MS;\n\n let lastError: SynapseTreeError | undefined;\n let waitMs: number | undefined;\n // registerAgentIdentity and oauthToken are single-attempt: neither has\n // an Idempotency-Key in the contract and both mint server-side state\n // (a claim; the one-time key that frees the claim). A blind retry after\n // an ambiguous failure (502/504 or a stalled body after the 200\n // committed) would burn the claim or orphan a minted key.\n const canRetry = opId !== 'registerAgentIdentity' && opId !== 'oauthToken';\n for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {\n if (attempt > 0) {\n if (!canRetry) break;\n await this.sleep(waitMs ?? Math.min(1000 * 2 ** attempt, 8000) + Math.floor(this.random() * 250));\n }\n let res: Response;\n let done: () => void;\n try {\n ({ res, done } = await this.send(url, { method: op.method, headers, body }, timeoutMs));\n } catch (err) {\n lastError = new SynapseTreeError({ status: 0, code: 'network_error', detail: err instanceof Error ? err.message : String(err) });\n waitMs = undefined;\n continue;\n }\n // The abort timer stays armed until the body has been consumed: a\n // server that sends headers and stalls the body must still hit the\n // timeout instead of hanging the tool call forever.\n try {\n let parsed: Awaited<ReturnType<typeof readBody>>;\n try {\n parsed = await readBody(res);\n } catch (err) {\n // A body that fails after the headers (connection reset mid-body,\n // or the stall abort firing) is transient: map it so the retry\n // loop and the auth polling loop treat it like any other\n // network error instead of surfacing a raw TypeError.\n if (err instanceof SynapseTreeError) throw err;\n lastError = new SynapseTreeError({ status: 0, code: 'network_error', detail: err instanceof Error ? err.message : String(err) });\n waitMs = undefined;\n continue;\n }\n if (RETRY_STATUSES.has(res.status)) {\n lastError = toError(res, parsed);\n waitMs = retryAfterMs(res, parsed.json);\n continue;\n }\n if (res.ok || (opId === 'oauthToken' && res.status === 400)) {\n return {\n status: res.status,\n data: parsed.json as T,\n requestId: res.headers.get('request-id') ?? undefined,\n rateLimit: res.headers.get('ratelimit') ?? undefined,\n rateLimitPolicy: res.headers.get('ratelimit-policy') ?? undefined,\n idempotentReplayed: res.headers.get('idempotent-replayed') === 'true',\n };\n }\n throw toError(res, parsed);\n } finally {\n done();\n }\n }\n throw lastError ?? new SynapseTreeError({ status: 0, code: 'network_error' });\n }\n\n private async send(url: string, init: RequestInit, timeoutMs: number): Promise<{ res: Response; done: () => void }> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(new Error(`timeout after ${timeoutMs} ms`)), timeoutMs);\n let res: Response;\n try {\n res = await this.fetchImpl(url, { ...init, signal: controller.signal });\n } catch (err) {\n // A rejected fetch must not leave the timer pending (it would keep the\n // process alive until it fires).\n clearTimeout(timer);\n throw err;\n }\n return { res, done: () => clearTimeout(timer) };\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport { chmod, mkdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { DEFAULT_BASE_URL, stripTrailingSlashes } from './client';\nimport { UsageError } from './errors';\n\nexport interface Credentials {\n apiKey: string;\n accountId: string | null;\n source: 'dashboard' | 'authmd';\n obtainedAt: string;\n}\n\nexport interface Config {\n namespace?: string;\n baseUrl?: string;\n}\n\nexport interface DirEnv {\n SYNAPSETREE_CONFIG_DIR?: string;\n XDG_CONFIG_HOME?: string;\n APPDATA?: string;\n}\n\nexport const KEY_PATTERN = /^stree_[A-Za-z0-9_-]{43}$/;\nconst CREDENTIALS_FILE = 'credentials.json';\nconst CONFIG_FILE = 'config.json';\n\nexport function configDir(env: DirEnv = process.env, platform: NodeJS.Platform = process.platform, home: string = homedir()): string {\n if (env.SYNAPSETREE_CONFIG_DIR) return env.SYNAPSETREE_CONFIG_DIR;\n if (env.XDG_CONFIG_HOME) return join(env.XDG_CONFIG_HOME, 'synapsetree');\n if (platform === 'darwin') return join(home, 'Library', 'Application Support', 'synapsetree');\n if (platform === 'win32') return join(env.APPDATA ?? join(home, 'AppData', 'Roaming'), 'synapsetree');\n return join(home, '.config', 'synapsetree');\n}\n\nasync function readJson<T>(path: string): Promise<T | null> {\n let text: string;\n try {\n text = await readFile(path, 'utf8');\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return null;\n throw err;\n }\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new UsageError(`${path} is not valid JSON. Fix it or delete it.`);\n }\n}\n\n/** Atomic: temp file in the same directory, mode 0600, then rename over the target. Modes are best-effort on Windows. */\nasync function writeJson(dir: string, name: string, value: unknown): Promise<void> {\n // Tighten permissions only on a directory this process just created:\n // never rechmod a directory the user pointed the config at (it may be\n // shared or be $HOME itself). The file is still written 0600.\n const created = await mkdir(dir, { recursive: true, mode: 0o700 });\n if (created) await chmod(created, 0o700).catch(() => undefined);\n const target = join(dir, name);\n const tmp = join(dir, `${name}.${randomUUID()}.tmp`);\n await writeFile(tmp, `${JSON.stringify(value, null, 2)}\\n`, { mode: 0o600 });\n try {\n await rename(tmp, target);\n } catch (err) {\n await unlink(tmp).catch(() => undefined);\n throw err;\n }\n}\n\nexport async function readCredentials(dir: string): Promise<Credentials | null> {\n const value = await readJson<Credentials>(join(dir, CREDENTIALS_FILE));\n if (value && typeof value.apiKey !== 'string') throw new UsageError(`${join(dir, CREDENTIALS_FILE)} has no apiKey. Fix it or delete it.`);\n return value;\n}\n\nexport function writeCredentials(dir: string, creds: Credentials): Promise<void> {\n return writeJson(dir, CREDENTIALS_FILE, creds);\n}\n\nexport async function deleteCredentials(dir: string): Promise<boolean> {\n try {\n await unlink(join(dir, CREDENTIALS_FILE));\n return true;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return false;\n throw err;\n }\n}\n\nexport async function readConfig(dir: string): Promise<Config> {\n return (await readJson<Config>(join(dir, CONFIG_FILE))) ?? {};\n}\n\nexport function writeConfig(dir: string, config: Config): Promise<void> {\n return writeJson(dir, CONFIG_FILE, config);\n}\n\n/**\n * Guards every base-URL source (flag, config file, env): the bearer key may\n * never traverse plaintext HTTP except to a loopback host.\n */\nexport function validateBaseUrl(url: string): string {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new UsageError(`base-url is not a valid URL: ${url}`);\n }\n if (parsed.protocol === 'https:') return url;\n const loopback = ['localhost', '127.0.0.1', '[::1]', '::1'].includes(parsed.hostname);\n if (parsed.protocol === 'http:' && loopback) return url;\n throw new UsageError('base-url must use https:// (http:// is only allowed for localhost) so the API key is never sent in cleartext.');\n}\n\nexport interface Settings {\n apiKey?: string;\n keySource: 'env' | 'file' | null;\n accountId: string | null;\n baseUrl: string;\n namespace?: string;\n dir: string;\n}\n\nexport async function resolveSettings(env: NodeJS.ProcessEnv = process.env, dir: string = configDir(env)): Promise<Settings> {\n const creds = await readCredentials(dir);\n const config = await readConfig(dir);\n const envKey = env.SYNAPSETREE_API_KEY;\n const apiKey = envKey || creds?.apiKey;\n return {\n apiKey,\n keySource: envKey ? 'env' : creds ? 'file' : null,\n accountId: envKey ? null : (creds?.accountId ?? null),\n baseUrl: validateBaseUrl(stripTrailingSlashes(env.SYNAPSETREE_BASE_URL || config.baseUrl || DEFAULT_BASE_URL)),\n namespace: env.SYNAPSETREE_NAMESPACE || config.namespace,\n dir,\n };\n}\n\nexport function maskKey(key: string): string {\n return `stree_…${key.slice(-4)}`;\n}\n","import { z } from 'zod';\nimport type { SynapseTreeClient } from '../client';\nimport type { OperationId } from '../contract';\nimport { NO_NAMESPACE_MESSAGE, UsageError } from '../errors';\n\nexport interface ToolContext {\n client: SynapseTreeClient;\n defaultNamespace?: string;\n}\n\nexport interface ToolDefinition<S extends z.ZodObject<z.ZodRawShape> = z.ZodObject<z.ZodRawShape>> {\n name: string;\n /** The text the model reads. Spec §8 wording is verbatim. */\n description: string;\n operation: OperationId;\n inputSchema: S;\n handler: (input: z.output<S>, ctx: ToolContext) => Promise<unknown>;\n}\n\nexport function defineTool<S extends z.ZodObject<z.ZodRawShape>>(def: ToolDefinition<S>): ToolDefinition<S> {\n return def;\n}\n\nexport const NAMESPACE_PATTERN = /^[a-z0-9][a-z0-9._:-]{0,127}$/;\n\nexport const namespaceField = z\n .string()\n .regex(NAMESPACE_PATTERN, 'namespace must match ^[a-z0-9][a-z0-9._:-]{0,127}$')\n .optional()\n .describe('Namespace to use. Defaults to the configured namespace (synapsetree-mcp config set namespace repo:<name>).');\n\nexport const dateTimeField = z.iso.datetime({ offset: true });\n\nexport const confidenceField = z.enum(['certain', 'inferred', 'tentative']);\n\nexport function resolveNamespace(given: string | undefined, ctx: ToolContext): string {\n const namespace = given ?? ctx.defaultNamespace;\n if (!namespace) throw new UsageError(NO_NAMESPACE_MESSAGE);\n return namespace;\n}\n\n/** Drops undefined values so the request body carries only what the caller set. */\nexport function compact<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Partial<T> = {};\n for (const [k, v] of Object.entries(obj)) if (v !== undefined) (out as Record<string, unknown>)[k] = v;\n return out;\n}\n","import { z } from 'zod';\nimport { compact, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const graphTraverse = defineTool({\n name: 'graph_traverse',\n description: 'Walk the knowledge graph from a fact or node id, up to three hops. Returns the anchor first, then neighbours by depth, and the edges between them.',\n operation: 'traverseGraph',\n inputSchema: z.object({\n namespace: namespaceField,\n sourceId: z.string().min(1).max(255).describe('The fact or graph node id to start from.'),\n maxDepth: z.number().int().min(1).max(3).default(1),\n direction: z.enum(['inbound', 'outbound', 'both']).optional(),\n edgeTypes: z.array(z.string().min(1).max(128)).max(100).optional().describe('Allowed edge types, e.g. dependsOn, documents, supersedes. Omit for all.'),\n maxNodes: z.number().int().min(1).max(200).default(20),\n excludeDrafts: z.boolean().optional(),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('traverseGraph', {\n body: compact({\n namespace,\n sourceId: input.sourceId,\n maxDepth: input.maxDepth,\n direction: input.direction,\n edgeTypes: input.edgeTypes,\n maxNodes: input.maxNodes,\n excludeDrafts: input.excludeDrafts,\n }),\n });\n return res.data;\n },\n});\n","import { createHash } from 'node:crypto';\nimport { z } from 'zod';\nimport { INGEST_PROVIDER_MESSAGE, UsageError } from '../errors';\nimport { compact, defineTool, namespaceField, resolveNamespace } from './shared';\n\nconst SOURCE_REF_PATTERN = /^[A-Za-z0-9._\\- ]{1,255}$/;\n\n/** `/` becomes `__` (the SDK's rule); anything else illegal is an error naming the characters. */\nexport function encodeSourceRef(raw: string): string {\n const encoded = raw.replace(/\\//g, '__');\n if (!SOURCE_REF_PATTERN.test(encoded)) {\n const bad = [...new Set(encoded.replace(/[A-Za-z0-9._\\- ]/g, ''))].join(' ');\n throw new UsageError(`sourceRef may only contain letters, digits, \".\", \"_\", \"-\", and spaces (1–255 chars); \"/\" is encoded as \"__\". Illegal: ${bad || 'length'}`);\n }\n return encoded;\n}\n\nexport const memoryIngest = defineTool({\n name: 'memory_ingest',\n description: `Store a whole document; SynapseTree extracts the facts. ${INGEST_PROVIDER_MESSAGE}`,\n operation: 'ingestDocument',\n inputSchema: z.object({\n namespace: namespaceField,\n sourceRef: z.string().min(1).max(255).describe('Identifies the document, e.g. a repo-relative path. \"/\" is encoded as \"__\".'),\n content: z.string().min(1).max(524288),\n onDuplicateHash: z.enum(['skip', 'ingest', 'error']).default('skip').describe('What to do when another sourceRef already holds identical content.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const sourceRef = encodeSourceRef(input.sourceRef);\n const sourceHash = createHash('sha256').update(input.content, 'utf8').digest('hex');\n const res = await ctx.client.call('ingestDocument', {\n body: compact({ mode: 'server_extraction', namespace, sourceRef, sourceHash, content: input.content, onDuplicateHash: input.onDuplicateHash }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memoryLogEvent = defineTool({\n name: 'memory_log_event',\n description: 'Record that something happened: an observation, decision, action, or outcome, optionally tied to a fact.',\n operation: 'createEvent',\n inputSchema: z.object({\n namespace: namespaceField,\n eventType: z.enum(['observation', 'decision', 'action', 'outcome']),\n // SynapseTree trims, then allows 1-4000 UTF-16 units (contract CreateEventRequest.summary).\n // zod's max() and JSON Schema's maxLength count code points, so the refine enforces UTF-16 units.\n summary: z\n .string()\n .trim()\n .min(1)\n .max(4000)\n .refine((s) => s.length <= 4000, { message: 'summary is over 4000 UTF-16 code units (astral characters count twice)' }),\n relatedFactId: z.string().min(1).max(255).optional(),\n occurredAt: dateTimeField.optional().describe('When it happened. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('createEvent', {\n body: compact({ namespace, eventType: input.eventType, summary: input.summary, relatedFactId: input.relatedFactId, occurredAt: input.occurredAt }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, confidenceField, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memoryRemember = defineTool({\n name: 'memory_remember',\n description:\n 'Store one fact the user decided or you observed. Works with no provider registered. Use `memory_ingest` for a whole document.',\n operation: 'rememberFact',\n inputSchema: z.object({\n namespace: namespaceField,\n title: z.string().min(1).max(1000),\n body: z.string().min(1).max(100000),\n tags: z.array(z.string().min(1).max(100)).max(100).optional(),\n confidence: confidenceField.optional(),\n okfType: z.string().min(1).max(128).optional().describe('Ontology node type, e.g. project, person, design_spec, procedure.'),\n validFrom: dateTimeField.optional().describe('When the fact became true. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('rememberFact', {\n body: compact({\n namespace,\n title: input.title,\n body: input.body,\n tags: input.tags,\n confidence: input.confidence,\n sourceType: 'user_stated',\n okfType: input.okfType,\n validFrom: input.validFrom,\n }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memorySearch = defineTool({\n name: 'memory_search',\n description:\n \"Search the user's SynapseTree memory. Semantic search needs an embeddings provider registered by the account owner in the dashboard; \" +\n 'without one this is keyword search and `diagnostics.keyword_only` says so. That is normal, not an error. ' +\n 'Returns facts with scores, pending tasks, recent events, and diagnostics. Not paginated: raise `limit` (max 100) for more.',\n operation: 'queryMemory',\n inputSchema: z.object({\n namespace: namespaceField,\n query: z.string().max(4096).describe('Search text. Empty returns the most recent facts.'),\n limit: z.number().int().min(1).max(100).default(10),\n excludeDrafts: z.boolean().optional(),\n asOf: dateTimeField.optional().describe('RFC 3339 timestamp; search memory as it was at that moment.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('queryMemory', {\n body: compact({ namespaces: [namespace], query: input.query, limit: input.limit, excludeDrafts: input.excludeDrafts, asOf: input.asOf }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { compact, confidenceField, dateTimeField, defineTool, namespaceField, resolveNamespace } from './shared';\n\nexport const memorySupersede = defineTool({\n name: 'memory_supersede',\n description: 'Replace a fact with a corrected one and keep the old one in history. Never deletes.',\n operation: 'supersedeFact',\n inputSchema: z.object({\n namespace: namespaceField,\n factId: z.string().min(1).max(255).describe('The fact to replace.'),\n title: z.string().min(1).max(1000),\n body: z.string().min(1).max(100000),\n tags: z.array(z.string().min(1).max(100)).max(100).optional(),\n confidence: confidenceField.optional(),\n validFrom: dateTimeField.optional().describe('When the replacement became true. Defaults to now.'),\n }),\n async handler(input, ctx) {\n const namespace = resolveNamespace(input.namespace, ctx);\n const res = await ctx.client.call('supersedeFact', {\n path: { factId: input.factId },\n body: compact({\n namespace,\n validFrom: input.validFrom,\n replacement: compact({ kind: 'new', title: input.title, body: input.body, tags: input.tags, confidence: input.confidence, sourceType: 'user_stated' }),\n }),\n });\n return res.data;\n },\n});\n","import { z } from 'zod';\nimport { defineTool, namespaceField } from './shared';\n\nconst PAGE = 100;\nconst CAP = 500;\n\ninterface Page { data: { namespace: string }[]; hasMore: boolean; nextCursor: string | null }\n\nexport const namespacesList = defineTool({\n name: 'namespaces_list',\n description: \"List the namespaces in the user's database, optionally by prefix. Stops after 500 names and sets `truncated`.\",\n operation: 'listNamespaces',\n inputSchema: z.object({\n // Accepted for uniformity (spec §5.6, §8) but never sent: listNamespaces is database-wide in the contract.\n namespace: namespaceField.describe('Ignored: listing is database-wide. Use `prefix` to filter.'),\n prefix: z.string().max(128).optional(),\n }),\n async handler(input, ctx) {\n const namespaces: string[] = [];\n let after: string | undefined;\n let truncated = false;\n for (;;) {\n const res = await ctx.client.call<Page>('listNamespaces', { query: { prefix: input.prefix, limit: PAGE, after } });\n for (const row of res.data.data) namespaces.push(row.namespace);\n if (!res.data.data.length) break; // an empty page with hasMore would otherwise loop forever\n if (!res.data.hasMore || !res.data.nextCursor) break;\n if (namespaces.length >= CAP) { truncated = true; break; }\n after = res.data.nextCursor;\n }\n return { namespaces: namespaces.slice(0, CAP), truncated };\n },\n});\n","import { z } from 'zod';\nimport { defineTool } from './shared';\n\nexport interface WhoamiResult {\n apiKeyId: string;\n organizationId: string;\n tenantDatabaseId: string;\n /** `read`/`read_write`: dashboard keys; `memory:full`: auth.md agent keys; `memory:admin`: accepted, not issued in v1. */\n scope: 'read' | 'read_write' | 'memory:full' | 'memory:admin';\n planCode: string | null;\n subscriptionStatus: string;\n}\n\nexport const whoami = defineTool({\n name: 'whoami',\n description: 'Show which SynapseTree account, database, scope, and plan this server is using.',\n operation: 'whoami',\n inputSchema: z.object({}),\n async handler(_input, ctx) {\n const res = await ctx.client.call<WhoamiResult>('whoami');\n return res.data;\n },\n});\n","import { graphTraverse } from './graph-traverse';\nimport { memoryIngest } from './memory-ingest';\nimport { memoryLogEvent } from './memory-log-event';\nimport { memoryRemember } from './memory-remember';\nimport { memorySearch } from './memory-search';\nimport { memorySupersede } from './memory-supersede';\nimport { namespacesList } from './namespaces-list';\nimport type { ToolDefinition } from './shared';\nimport { whoami } from './whoami';\n\n/** The only place tools are enumerated. Order is the spec §8 table. Adding an entry is a spec amendment (R4). */\nexport const TOOLS: readonly ToolDefinition[] = [\n memorySearch,\n memoryRemember,\n memorySupersede,\n memoryIngest,\n memoryLogEvent,\n graphTraverse,\n namespacesList,\n whoami,\n] as unknown as readonly ToolDefinition[];\n\nexport const TOOL_NAMES: readonly string[] = TOOLS.map((t) => t.name);\n\n/**\n * The canonical tool names this server mirrors from SynapseTree's cloud surface\n * (spec §8, ruling R9; naming convention per SynapseTree PR #151). Written out\n * by hand on purpose, NOT derived from `TOOLS`: the parity test asserts set\n * equality between this list and the names the server actually registers, so\n * any rename or new tool must change both. Names that are ratified but not yet\n * wired here (`ontology_get`) stay out until the server wires them.\n */\nexport const CANONICAL_TOOL_NAMES = [\n 'memory_search',\n 'memory_remember',\n 'memory_supersede',\n 'memory_ingest',\n 'memory_log_event',\n 'graph_traverse',\n 'namespaces_list',\n 'whoami',\n] as const;\n\nexport type { ToolContext, ToolDefinition } from './shared';\n","declare const __PKG_VERSION__: string | undefined;\n\n/** Injected by tsup `define` at build time; `0.0.0-dev` under vitest and tsc. */\nexport const VERSION: string = typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : '0.0.0-dev';\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { z } from 'zod';\nimport { toolErrorText } from './errors';\nimport { TOOLS } from './tools';\nimport type { ToolContext } from './tools/shared';\nimport { VERSION } from './version';\n\nexport const SERVER_NAME = 'synapsetree';\n\n/** Registers exactly the eight tools (spec §8). No resources, prompts, or sampling. */\nexport function createServer(ctx: ToolContext): McpServer {\n const server = new McpServer({ name: SERVER_NAME, version: VERSION });\n for (const tool of TOOLS) {\n server.registerTool(\n tool.name,\n { description: tool.description, inputSchema: tool.inputSchema.shape as z.ZodRawShape },\n async (args: unknown) => {\n try {\n const input = tool.inputSchema.parse(args ?? {});\n const result = await tool.handler(input, ctx);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result ?? null, null, 2) }] };\n } catch (err) {\n return { isError: true, content: [{ type: 'text' as const, text: toolErrorText(err) }] };\n }\n },\n );\n }\n return server;\n}\n","import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { registerByEmail } from './authmd';\nimport { SynapseTreeClient } from './client';\nimport {\n KEY_PATTERN, configDir, deleteCredentials, maskKey, readConfig, readCredentials, resolveSettings, validateBaseUrl, writeConfig, writeCredentials, type Settings,\n} from './credentials';\nimport { NO_KEY_MESSAGE, SynapseTreeError, UsageError } from './errors';\nimport { stripTrailingSlashes } from './client';\nimport { createServer } from './server';\nimport { NAMESPACE_PATTERN } from './tools/shared';\nimport type { WhoamiResult } from './tools/whoami';\nimport { VERSION } from './version';\n\nexport type Command =\n | { kind: 'serve' }\n | { kind: 'auth-key'; key: string }\n | { kind: 'auth-email'; email: string; baseUrl?: string }\n | { kind: 'auth-revoke' }\n | { kind: 'status' }\n | { kind: 'config-set'; key: 'namespace' | 'base-url'; value: string }\n | { kind: 'help' }\n | { kind: 'version' };\n\nexport const HELP = `synapsetree-mcp ${VERSION} — SynapseTree memory for coding agents (MCP over stdio)\n\nUsage:\n synapsetree-mcp [serve] run the MCP server (what your MCP client launches)\n synapsetree-mcp auth --key stree_… store a dashboard API key\n synapsetree-mcp auth --email you@example.com [--base-url URL]\n register through auth.md: you approve by email\n synapsetree-mcp auth --revoke revoke the stored key, then an exported env key\n synapsetree-mcp status show account, scope, plan, key source, namespace\n synapsetree-mcp config set namespace repo:<name>\n synapsetree-mcp config set base-url URL\n synapsetree-mcp --version | --help\n\nEnvironment: SYNAPSETREE_API_KEY, SYNAPSETREE_BASE_URL, SYNAPSETREE_NAMESPACE, SYNAPSETREE_CONFIG_DIR\nDocs: https://github.com/equationalapplications/expo-llm-wiki/tree/main/packages/mcp-server#readme\n`;\n\nexport function parseArgs(argv: string[]): Command {\n const [first, ...rest] = argv;\n if (first === undefined || first === 'serve') {\n if (rest.length > 0) throw new UsageError(`unexpected arguments after serve: ${rest.join(' ')}`);\n return { kind: 'serve' };\n }\n if (first === '--help' || first === '-h' || first === 'help') return { kind: 'help' };\n if (first === '--version' || first === '-v' || first === 'version') return { kind: 'version' };\n if (first === 'status') return { kind: 'status' };\n if (first === 'auth') {\n const flag = rest[0];\n if (flag === '--key') {\n const key = rest[1];\n if (!key || !KEY_PATTERN.test(key)) throw new UsageError('auth --key needs a key of the form stree_ followed by 43 characters (not shown).');\n return { kind: 'auth-key', key };\n }\n if (flag === '--email') {\n const email = rest[1];\n if (!email || !email.includes('@')) throw new UsageError('auth --email needs an email address.');\n const baseIdx = rest.indexOf('--base-url');\n const baseUrl = baseIdx >= 0 ? rest[baseIdx + 1] : undefined;\n if (baseIdx >= 0 && !baseUrl) throw new UsageError('--base-url needs a URL.');\n if (baseUrl) validateBaseUrl(baseUrl);\n return baseUrl ? { kind: 'auth-email', email, baseUrl } : { kind: 'auth-email', email };\n }\n if (flag === '--revoke') return { kind: 'auth-revoke' };\n throw new UsageError('auth needs one of --key, --email, --revoke.');\n }\n if (first === 'config') {\n const [verb, key, value] = rest;\n if (verb !== 'set' || (key !== 'namespace' && key !== 'base-url') || !value) {\n throw new UsageError('usage: config set namespace <name> | config set base-url <url>');\n }\n if (key === 'namespace' && !NAMESPACE_PATTERN.test(value)) throw new UsageError('namespace must match ^[a-z0-9][a-z0-9._:-]{0,127}$ (e.g. repo:myproject).');\n if (key === 'base-url') validateBaseUrl(value);\n return { kind: 'config-set', key, value };\n }\n throw new UsageError(`unknown command: ${first}\\n${HELP}`);\n}\n\nexport interface Io {\n out: (s: string) => void;\n err: (s: string) => void;\n env: NodeJS.ProcessEnv;\n fetch?: typeof fetch;\n configDir?: string;\n}\n\nconst userAgent = `synapsetree-mcp/${VERSION}`;\n\nfunction makeClient(settings: Pick<Settings, 'apiKey' | 'baseUrl'>, io: Io): SynapseTreeClient {\n return new SynapseTreeClient({ apiKey: settings.apiKey, baseUrl: settings.baseUrl, userAgent, fetch: io.fetch });\n}\n\nasync function printStatus(client: SynapseTreeClient, settings: Settings, io: Io): Promise<void> {\n const res = await client.call<WhoamiResult>('whoami');\n const w = res.data;\n const lines = [\n `key source: ${settings.keySource ?? 'none'}`,\n `key: ${settings.apiKey ? maskKey(settings.apiKey) : '(none)'}`,\n `organization: ${w.organizationId}`,\n `database: ${w.tenantDatabaseId}`,\n `scope: ${w.scope}`,\n `plan: ${w.planCode ?? '(none)'}`,\n `subscription: ${w.subscriptionStatus}`,\n `base url: ${settings.baseUrl}`,\n `namespace: ${settings.namespace ?? '(none set)'}`,\n ];\n if (res.rateLimit) lines.push(`ratelimit: ${res.rateLimit}`);\n if (res.rateLimitPolicy) lines.push(`ratelimit-policy: ${res.rateLimitPolicy}`);\n io.err(lines.join('\\n'));\n}\n\n/** Runs one command. Returns the exit code; never throws. */\nexport async function run(cmd: Command, io: Io): Promise<number> {\n const dir = io.configDir ?? configDir(io.env);\n try {\n switch (cmd.kind) {\n case 'help':\n io.out(HELP);\n return 0;\n case 'version':\n io.out(`${VERSION}\\n`);\n return 0;\n case 'config-set': {\n const config = await readConfig(dir);\n if (cmd.key === 'namespace') config.namespace = cmd.value;\n else config.baseUrl = stripTrailingSlashes(cmd.value);\n await writeConfig(dir, config);\n io.err(`${cmd.key} set.`);\n return 0;\n }\n case 'auth-key': {\n const settings = await resolveSettings(io.env, dir);\n const client = makeClient({ apiKey: cmd.key, baseUrl: settings.baseUrl }, io);\n await client.call('whoami');\n await writeCredentials(dir, { apiKey: cmd.key, accountId: null, source: 'dashboard', obtainedAt: new Date().toISOString() });\n io.err('Key stored.');\n if (io.env.SYNAPSETREE_API_KEY) io.err('Note: SYNAPSETREE_API_KEY is exported and overrides the stored key until you unset it.');\n await printStatus(client, { ...settings, apiKey: cmd.key, keySource: 'file', accountId: null }, io);\n return 0;\n }\n case 'auth-email': {\n const settings = await resolveSettings(io.env, dir);\n const baseUrl = (cmd.baseUrl ? stripTrailingSlashes(cmd.baseUrl) : undefined) ?? settings.baseUrl;\n const anonymous = makeClient({ apiKey: undefined, baseUrl }, io);\n const result = await registerByEmail(anonymous, cmd.email, { info: io.err });\n await writeCredentials(dir, { apiKey: result.apiKey, accountId: result.accountId, source: 'authmd', obtainedAt: new Date().toISOString() });\n if (cmd.baseUrl) await writeConfig(dir, { ...(await readConfig(dir)), baseUrl });\n io.err('Approved. Key stored.');\n if (io.env.SYNAPSETREE_API_KEY) io.err('Note: SYNAPSETREE_API_KEY is exported and overrides the stored key until you unset it.');\n const client = makeClient({ apiKey: result.apiKey, baseUrl }, io);\n await printStatus(client, { ...settings, apiKey: result.apiKey, keySource: 'file', accountId: result.accountId, baseUrl }, io);\n return 0;\n }\n case 'auth-revoke': {\n // resolveSettings prefers an exported SYNAPSETREE_API_KEY, but the\n // STORED credential is the one a local user can forget about (e.g.\n // one left by `auth --email` while an env key shadows it). Revoke\n // the stored key first, then the env key if one is exported.\n const stored = await readCredentials(dir);\n let failed = false;\n if (stored) {\n const client = makeClient({ apiKey: stored.apiKey, baseUrl: (await resolveSettings(io.env, dir)).baseUrl }, io);\n try {\n await client.call('oauthRevoke', { form: { token: stored.apiKey, token_type_hint: 'access_token' } });\n io.err('Stored key revoked.');\n await deleteCredentials(dir);\n io.err('Local copy deleted.');\n } catch (err) {\n if (err instanceof SynapseTreeError && err.status === 401) {\n // The stored key is already dead on the server: nothing to\n // revoke, and the file carries nothing of value.\n await deleteCredentials(dir);\n io.err('The stored key was already dead on the server; local copy deleted.');\n } else if (err instanceof SynapseTreeError && err.status === 403) {\n // The server answered and refused the revocation (e.g. admin-only\n // or owner mismatch): the local copy is kept so nothing is lost.\n io.err(`The server refused the revocation (${err.code}); the local key was kept. Remove it in the dashboard if it should die.`);\n failed = true;\n } else {\n io.err(`SynapseTree was unreachable or the request failed; the local key was kept. (${err instanceof Error ? err.message : String(err)})`);\n failed = true;\n }\n }\n }\n const envKey = io.env.SYNAPSETREE_API_KEY;\n if (envKey) {\n const settings = await resolveSettings(io.env, dir);\n const client = makeClient(settings, io);\n try {\n await client.call('oauthRevoke', { form: { token: envKey, token_type_hint: 'access_token' } });\n io.err('Environment key revoked; unset SYNAPSETREE_API_KEY.');\n } catch (err) {\n if (err instanceof SynapseTreeError && err.status === 401) {\n io.err('The environment key was already dead on the server; unset SYNAPSETREE_API_KEY.');\n } else {\n io.err(`The environment key could not be revoked; unset SYNAPSETREE_API_KEY and remove it in the dashboard. (${err instanceof Error ? err.message : String(err)})`);\n failed = true;\n }\n }\n }\n if (!stored && !envKey) { io.err(NO_KEY_MESSAGE); return 3; }\n return failed ? 1 : 0;\n }\n case 'status': {\n const settings = await resolveSettings(io.env, dir);\n if (!settings.apiKey) { io.err(NO_KEY_MESSAGE); return 3; }\n await printStatus(makeClient(settings, io), settings, io);\n return 0;\n }\n case 'serve': {\n const settings = await resolveSettings(io.env, dir);\n if (!settings.apiKey) { io.err(NO_KEY_MESSAGE); return 3; }\n const server = createServer({ client: makeClient(settings, io), defaultNamespace: settings.namespace });\n const transport = new StdioServerTransport();\n await server.connect(transport);\n // The SDK chains its own onclose handler during connect(); wrap it\n // instead of replacing it so the SDK's cleanup still runs.\n const previousOnClose = transport.onclose;\n await new Promise<void>((resolve) => {\n transport.onclose = () => {\n previousOnClose?.();\n resolve();\n };\n });\n return 0;\n }\n }\n } catch (err) {\n if (err instanceof UsageError) { io.err(err.message); return 2; }\n if (err instanceof SynapseTreeError) { io.err(`${err.code}${err.detail ? `: ${err.detail}` : ''}${err.requestId ? ` (request-id: ${err.requestId})` : ''}`); return 1; }\n io.err(err instanceof Error ? err.message : String(err));\n return 1;\n }\n}\n","import { parseArgs, run } from './commands';\nimport { UsageError } from './errors';\n\nasync function main(): Promise<number> {\n let cmd;\n try {\n cmd = parseArgs(process.argv.slice(2));\n } catch (err) {\n process.stderr.write(`${err instanceof UsageError ? err.message : String(err)}\\n`);\n return 2;\n }\n return run(cmd, {\n out: (s) => { process.stdout.write(s); },\n err: (s) => { process.stderr.write(s.endsWith('\\n') ? s : `${s}\\n`); },\n env: process.env,\n });\n}\n\nmain().then(\n (code) => { process.exitCode = code; },\n (err) => { process.stderr.write(`${err instanceof Error ? err.message : String(err)}\\n`); process.exitCode = 1; },\n);\n"]}
|