@cat-factory/server 0.71.2 → 0.73.0

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.
Files changed (48) hide show
  1. package/dist/agents/CompositeAgentExecutor.d.ts.map +1 -1
  2. package/dist/agents/CompositeAgentExecutor.js +5 -0
  3. package/dist/agents/CompositeAgentExecutor.js.map +1 -1
  4. package/dist/agents/containerAgentResult.d.ts.map +1 -1
  5. package/dist/agents/containerAgentResult.js +12 -1
  6. package/dist/agents/containerAgentResult.js.map +1 -1
  7. package/dist/agents/jobBody.d.ts.map +1 -1
  8. package/dist/agents/jobBody.js +20 -1
  9. package/dist/agents/jobBody.js.map +1 -1
  10. package/dist/agents/prompts.d.ts +12 -0
  11. package/dist/agents/prompts.d.ts.map +1 -1
  12. package/dist/agents/prompts.js +55 -0
  13. package/dist/agents/prompts.js.map +1 -1
  14. package/dist/app.d.ts.map +1 -1
  15. package/dist/app.js +8 -0
  16. package/dist/app.js.map +1 -1
  17. package/dist/events/FanOutEventPublisher.d.ts +2 -1
  18. package/dist/events/FanOutEventPublisher.d.ts.map +1 -1
  19. package/dist/events/FanOutEventPublisher.js +5 -0
  20. package/dist/events/FanOutEventPublisher.js.map +1 -1
  21. package/dist/http/authGate.d.ts.map +1 -1
  22. package/dist/http/authGate.js +3 -1
  23. package/dist/http/authGate.js.map +1 -1
  24. package/dist/http/env.d.ts +8 -1
  25. package/dist/http/env.d.ts.map +1 -1
  26. package/dist/modules/initiatives/InitiativeController.d.ts +12 -0
  27. package/dist/modules/initiatives/InitiativeController.d.ts.map +1 -0
  28. package/dist/modules/initiatives/InitiativeController.js +49 -0
  29. package/dist/modules/initiatives/InitiativeController.js.map +1 -0
  30. package/dist/modules/publicApi/PublicApiController.d.ts +7 -0
  31. package/dist/modules/publicApi/PublicApiController.d.ts.map +1 -0
  32. package/dist/modules/publicApi/PublicApiController.js +292 -0
  33. package/dist/modules/publicApi/PublicApiController.js.map +1 -0
  34. package/dist/modules/publicApi/PublicApiKeyController.d.ts +9 -0
  35. package/dist/modules/publicApi/PublicApiKeyController.d.ts.map +1 -0
  36. package/dist/modules/publicApi/PublicApiKeyController.js +58 -0
  37. package/dist/modules/publicApi/PublicApiKeyController.js.map +1 -0
  38. package/dist/modules/workspaces/WorkspaceController.d.ts.map +1 -1
  39. package/dist/modules/workspaces/WorkspaceController.js +5 -0
  40. package/dist/modules/workspaces/WorkspaceController.js.map +1 -1
  41. package/dist/persistence/mappers.d.ts +6 -0
  42. package/dist/persistence/mappers.d.ts.map +1 -1
  43. package/dist/persistence/mappers.js +8 -0
  44. package/dist/persistence/mappers.js.map +1 -1
  45. package/dist/persistence/rpc.d.ts.map +1 -1
  46. package/dist/persistence/rpc.js +13 -0
  47. package/dist/persistence/rpc.js.map +1 -1
  48. package/package.json +8 -8
@@ -0,0 +1,49 @@
1
+ import { createInitiativeContract, getInitiativeByBlockContract, getInitiativeContract, listInitiativesContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
3
+ import { Hono } from 'hono';
4
+ import { param } from '../../http/params.js';
5
+ /** Resolve the initiatives module or send a 503, returning null when unconfigured. */
6
+ function requireInitiatives(c) {
7
+ return c.get('container').initiatives ?? null;
8
+ }
9
+ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Initiatives are not configured' } }, 503);
10
+ /**
11
+ * Workspace-scoped initiative endpoints: create (the initiative-level board block +
12
+ * its empty entity in one call — the Create Initiative button's target) and the
13
+ * reads the tracker window / inspector load from. The planning pipeline itself is
14
+ * started through the ordinary execution endpoints against the initiative block
15
+ * (`pl_initiative` — enforced by the engine's runnable guard). Mounted under
16
+ * `/workspaces/:workspaceId`.
17
+ */
18
+ export function initiativeController() {
19
+ const app = new Hono();
20
+ buildHonoRoute(app, createInitiativeContract, async (c) => {
21
+ const initiatives = requireInitiatives(c);
22
+ if (!initiatives)
23
+ return unavailable(c);
24
+ const created = await initiatives.service.create(param(c, 'workspaceId'), c.req.valid('json'));
25
+ return c.json(created, 201);
26
+ });
27
+ buildHonoRoute(app, listInitiativesContract, async (c) => {
28
+ const initiatives = requireInitiatives(c);
29
+ if (!initiatives)
30
+ return unavailable(c);
31
+ return c.json(await initiatives.service.list(param(c, 'workspaceId')), 200);
32
+ });
33
+ buildHonoRoute(app, getInitiativeContract, async (c) => {
34
+ const initiatives = requireInitiatives(c);
35
+ if (!initiatives)
36
+ return unavailable(c);
37
+ const { initiativeId } = c.req.valid('param');
38
+ return c.json(await initiatives.service.get(param(c, 'workspaceId'), initiativeId), 200);
39
+ });
40
+ buildHonoRoute(app, getInitiativeByBlockContract, async (c) => {
41
+ const initiatives = requireInitiatives(c);
42
+ if (!initiatives)
43
+ return unavailable(c);
44
+ const { blockId } = c.req.valid('param');
45
+ return c.json(await initiatives.service.getByBlock(param(c, 'workspaceId'), blockId), 200);
46
+ });
47
+ return app;
48
+ }
49
+ //# sourceMappingURL=InitiativeController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InitiativeController.js","sourceRoot":"","sources":["../../../src/modules/initiatives/InitiativeController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ExecutionInstance, type PublicJob } from '@cat-factory/contracts';
2
+ import { Hono } from 'hono';
3
+ import type { AppEnv } from '../../http/env.js';
4
+ /** Project a persisted execution onto the external job resource (no block/board internals). */
5
+ export declare function toPublicJob(execution: ExecutionInstance): PublicJob;
6
+ export declare function publicApiController(): Hono<AppEnv>;
7
+ //# sourceMappingURL=PublicApiController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicApiController.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicApiController.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEtB,KAAK,SAAS,EAEf,MAAM,wBAAwB,CAAA;AAU/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AA2D/C,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,SAAS,EAAE,iBAAiB,GAAG,SAAS,CA+BnE;AA4DD,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqMlD"}
@@ -0,0 +1,292 @@
1
+ import { createInitiativeJobContract, getPublicJobContract, } from '@cat-factory/contracts';
2
+ import { ARCHITECTURE_BRAINSTORM_AGENT_KIND, CLARITY_REVIEW_AGENT_KIND, isInlineModelStep, REQUIREMENTS_BRAINSTORM_AGENT_KIND, REQUIREMENTS_REVIEW_AGENT_KIND, } from '@cat-factory/agents';
3
+ import { buildHonoRoute } from '@toad-contracts/hono';
4
+ import { Hono } from 'hono';
5
+ import { streamSSE } from 'hono/streaming';
6
+ // The PUBLIC external API (`/api/v1/*`). Unlike the SPA surface it is NOT behind the user-session
7
+ // gate (its `/api` prefix is in the authGate bypass list); every route authenticates IN-CONTROLLER
8
+ // by a public-API key (`Authorization: Bearer cf_live_…`) resolved to a workspace scope, mirroring
9
+ // how `/internal` self-authenticates with a machine token. First use-case: "break down an
10
+ // initiative" — start a public, inline pipeline headlessly and retrieve its DB-persisted result
11
+ // asynchronously (poll `GET /jobs/:id` or stream `GET /jobs/:id/events`). Nothing is pushed to
12
+ // GitHub: the pipeline is inline-only, so the run produces its output purely in the DB.
13
+ /** How often the SSE stream re-reads the job, and the hard cap on how long it stays open. */
14
+ const SSE_POLL_MS = 1000;
15
+ const SSE_MAX_MS = 5 * 60 * 1000;
16
+ /** Re-verify the caller's key at most this often on a live stream, so a mid-stream revoke cuts it. */
17
+ const SSE_REAUTH_MS = 5000;
18
+ /** Max headless "initiative" runs a single workspace may have in flight at once (a public-API
19
+ * concurrency backstop: bounds the LLM spend one — possibly leaked — key can drive). */
20
+ const MAX_ACTIVE_INITIATIVE_RUNS = 5;
21
+ /**
22
+ * Inline agent kinds that PARK a run on a human/gate decision. A public run is headless (no human
23
+ * to answer), so a pipeline containing one would hang forever (its anchor stays `in_progress`,
24
+ * permanently consuming a concurrency slot) — refuse it at admission. This MUST list every
25
+ * inline-and-parking kind: the two review gates AND the two brainstorm dialogues (all four set the
26
+ * run `blocked` awaiting a human, see ExecutionService.evaluateReview / the brainstorm gate).
27
+ */
28
+ const PARKING_INLINE_KINDS = new Set([
29
+ REQUIREMENTS_REVIEW_AGENT_KIND,
30
+ CLARITY_REVIEW_AGENT_KIND,
31
+ REQUIREMENTS_BRAINSTORM_AGENT_KIND,
32
+ ARCHITECTURE_BRAINSTORM_AGENT_KIND,
33
+ ]);
34
+ /**
35
+ * Resolve the caller's public-API key to a workspace scope, or a `fail` describing the error the
36
+ * handler should emit (kept as data, not a `Response`, so the contract handlers stay typed).
37
+ */
38
+ async function resolveKey(c) {
39
+ const svc = c.get('container').publicApiKeys;
40
+ if (!svc) {
41
+ return { fail: { status: 503, code: 'unavailable', message: 'Public API is not configured' } };
42
+ }
43
+ const raw = c.req.header('authorization')?.replace(/^Bearer\s+/i, '');
44
+ const auth = await svc.authenticate(raw);
45
+ if (!auth) {
46
+ return { fail: { status: 401, code: 'unauthorized', message: 'Invalid or missing API key' } };
47
+ }
48
+ return { auth };
49
+ }
50
+ function mapStatus(status) {
51
+ return status === 'done' ? 'succeeded' : status === 'failed' ? 'failed' : 'running';
52
+ }
53
+ /** Project a persisted execution onto the external job resource (no block/board internals). */
54
+ export function toPublicJob(execution) {
55
+ const status = mapStatus(execution.status);
56
+ // The deliverable is the LAST step that actually produced output — normally the terminal step,
57
+ // but scanning from the end keeps the result meaningful for a multi-step public pipeline whose
58
+ // final step is a side-effect-only tail that emits nothing (the built-in initiative pipeline is
59
+ // single-step, so this simply picks that step). Fall back to the terminal step so a `succeeded`
60
+ // run always carries a (possibly empty) result rather than null.
61
+ const withOutput = [...execution.steps]
62
+ .reverse()
63
+ .find((s) => (s.output ?? '') !== '' || s.custom != null);
64
+ const deliverable = withOutput ?? execution.steps[execution.steps.length - 1];
65
+ const result = status === 'succeeded' && deliverable
66
+ ? { output: deliverable.output ?? '', data: deliverable.custom ?? null }
67
+ : null;
68
+ const error = status === 'failed'
69
+ ? execution.failure
70
+ ? { code: execution.failure.kind, message: execution.failure.message }
71
+ : { code: 'run_failed', message: 'The run failed' }
72
+ : null;
73
+ return {
74
+ jobId: execution.id,
75
+ status,
76
+ pipelineId: execution.pipelineId,
77
+ // The run's own creation stamp (set at start); older runs fall back to the earliest step start.
78
+ createdAt: execution.createdAt ?? execution.steps.find((s) => s.startedAt != null)?.startedAt ?? 0,
79
+ result,
80
+ error,
81
+ };
82
+ }
83
+ /**
84
+ * Whether a pipeline is safe to expose to an EXTERNAL, headless caller: every enabled step runs
85
+ * inline (no container, no repo, no push) AND none of them can park the run on a human decision
86
+ * (an approval gate, or a review kind that waits for input). A public run has no human to answer,
87
+ * so a parking step would hang until the SSE/timeout cap — reject it up front instead.
88
+ */
89
+ function isHeadlessInlinePipeline(pipeline) {
90
+ const enabled = pipeline.agentKinds
91
+ .map((kind, i) => ({ kind, i }))
92
+ .filter(({ i }) => pipeline.enabled?.[i] !== false);
93
+ if (enabled.length === 0)
94
+ return false;
95
+ // An approval gate on any enabled step parks the run for a human decision.
96
+ if (enabled.some(({ i }) => pipeline.gates?.[i]))
97
+ return false;
98
+ return enabled.every(({ kind }) => isInlineModelStep(kind) && !PARKING_INLINE_KINDS.has(kind));
99
+ }
100
+ /**
101
+ * Load a public JOB by id for an authenticated key: the persisted execution, but ONLY when it is
102
+ * anchored on a HEADLESS internal block (a run this public surface created). Returns null when no
103
+ * such run exists in the key's workspace OR the id points at a normal board execution — so an
104
+ * external key can never read an arbitrary in-workspace run's output, only its own initiative jobs.
105
+ * Runtime-symmetric: one `executionRepository.get` + one `boardService.getInternalTask` point-read.
106
+ */
107
+ async function loadPublicJob(c, workspaceId, id) {
108
+ const container = c.get('container');
109
+ const execution = await container.executionRepository.get(workspaceId, id);
110
+ if (!execution)
111
+ return null;
112
+ const anchor = await container.boardService.getInternalTask(workspaceId, execution.blockId);
113
+ return anchor ? execution : null;
114
+ }
115
+ /**
116
+ * Best-effort, event-free rollback of a headless initiative run: drop the persisted run (the
117
+ * execution + its live-run row, via `deleteByBlock`) THEN the anchor block. Used when a start fails
118
+ * partway or is rolled back over the cap, so nothing survives for the stale-run sweeper to re-drive
119
+ * against a since-deleted block. `deleteByBlock` is the same primitive `ExecutionService.cancel`
120
+ * uses, so it clears whatever `start()` had already committed regardless of how far it got. No board
121
+ * event is emitted (the anchor never renders anyway), so a burst of rollbacks can't fan spurious
122
+ * refreshes out to every workspace client.
123
+ */
124
+ async function rollbackInitiativeRun(c, workspaceId, blockId) {
125
+ const container = c.get('container');
126
+ await container.executionRepository.deleteByBlock(workspaceId, blockId).catch(() => { });
127
+ await container.boardService.deleteInternalTask(workspaceId, blockId).catch(() => { });
128
+ }
129
+ export function publicApiController() {
130
+ const app = new Hono();
131
+ // Start an initiative run: validate the pipeline is public + inline, create a headless internal
132
+ // block to anchor the run, and start it. Returns 202 with the job id + follow-up links.
133
+ buildHonoRoute(app, createInitiativeJobContract, async (c) => {
134
+ const gate = await resolveKey(c);
135
+ if ('fail' in gate) {
136
+ return c.json({ error: { code: gate.fail.code, message: gate.fail.message } }, gate.fail.status);
137
+ }
138
+ const { auth } = gate;
139
+ const container = c.get('container');
140
+ const { pipelineId, input, title } = c.req.valid('json');
141
+ const pipeline = (await container.pipelineService.list(auth.workspaceId)).find((p) => p.id === pipelineId);
142
+ if (!pipeline || !pipeline.public) {
143
+ return c.json({ error: { code: 'pipeline_not_public', message: 'Unknown or non-public pipeline' } }, 400);
144
+ }
145
+ if (!isHeadlessInlinePipeline(pipeline)) {
146
+ // Defense in depth: a public pipeline must be inline-only (so an external run can never
147
+ // trigger a container/GitHub push) AND non-parking (no human gate to hang a headless run).
148
+ // The built-in public pipeline already satisfies both.
149
+ return c.json({ error: { code: 'pipeline_not_inline', message: 'Public pipeline must be inline' } }, 400);
150
+ }
151
+ // Concurrency backstop: cap the workspace's in-flight external runs so a leaked/abusive key
152
+ // can't spin up unbounded LLM work. Counted in SQL, checked before the run is created.
153
+ const active = await container.boardService.countActiveInternalTasks(auth.workspaceId);
154
+ if (active >= MAX_ACTIVE_INITIATIVE_RUNS) {
155
+ return c.json({
156
+ error: {
157
+ code: 'too_many_active_runs',
158
+ message: `This workspace already has ${MAX_ACTIVE_INITIATIVE_RUNS} initiative runs in flight; wait for one to finish`,
159
+ },
160
+ }, 429);
161
+ }
162
+ const block = await container.boardService.createInternalTask(auth.workspaceId, {
163
+ title: title?.trim() || input.slice(0, 80),
164
+ description: input,
165
+ });
166
+ // Headless / system-initiated: no `usr_*` initiator (an inline public run never leases a
167
+ // personal credential), so pass null rather than a synthetic user id. If start fails, roll the
168
+ // whole run back: `ExecutionService.start` persists the execution + live-run row and flips the
169
+ // block to `in_progress` BEFORE its throwing dispatch (`workRunner.startRun`), so deleting only
170
+ // the anchor block would orphan a `running` execution the stale-run sweeper then re-drives
171
+ // forever against a since-deleted block. `rollbackInitiativeRun` drops the execution first, then
172
+ // the block, so a failed dispatch leaves nothing behind (whether it threw before or after the
173
+ // rows were written).
174
+ let execution;
175
+ try {
176
+ execution = await container.executionService.start(auth.workspaceId, block.id, pipelineId, null);
177
+ }
178
+ catch (err) {
179
+ await rollbackInitiativeRun(c, auth.workspaceId, block.id);
180
+ throw err;
181
+ }
182
+ // Close the check-then-act race on the cap. The pre-check above is a fast path, but it can let
183
+ // several concurrent requests through before any of their anchors flips to `in_progress` (the
184
+ // count only sees `in_progress` internal blocks). Re-count now that THIS run is in flight; if
185
+ // concurrent starts pushed the workspace past the cap, roll this one back and 429, so the
186
+ // backstop holds under a parallel burst and not merely sequentially. Strict `>` keeps the
187
+ // sequential case exact (the Nth start that lands on the cap boundary still succeeds).
188
+ const activeNow = await container.boardService.countActiveInternalTasks(auth.workspaceId);
189
+ if (activeNow > MAX_ACTIVE_INITIATIVE_RUNS) {
190
+ await rollbackInitiativeRun(c, auth.workspaceId, block.id);
191
+ return c.json({
192
+ error: {
193
+ code: 'too_many_active_runs',
194
+ message: `This workspace already has ${MAX_ACTIVE_INITIATIVE_RUNS} initiative runs in flight; wait for one to finish`,
195
+ },
196
+ }, 429);
197
+ }
198
+ return c.json({
199
+ jobId: execution.id,
200
+ status: mapStatus(execution.status),
201
+ links: {
202
+ self: `/api/v1/jobs/${execution.id}`,
203
+ events: `/api/v1/jobs/${execution.id}/events`,
204
+ },
205
+ }, 202);
206
+ });
207
+ // Poll a job's status + result. Scoped to the key's workspace AND to headless initiative runs
208
+ // (see loadPublicJob), so a job in another workspace — or a normal board run — is a 404.
209
+ buildHonoRoute(app, getPublicJobContract, async (c) => {
210
+ const gate = await resolveKey(c);
211
+ if ('fail' in gate) {
212
+ return c.json({ error: { code: gate.fail.code, message: gate.fail.message } }, gate.fail.status);
213
+ }
214
+ const execution = await loadPublicJob(c, gate.auth.workspaceId, c.req.valid('param').id);
215
+ if (!execution) {
216
+ return c.json({ error: { code: 'not_found', message: 'Job not found' } }, 404);
217
+ }
218
+ return c.json(toPublicJob(execution), 200);
219
+ });
220
+ // Stream a job's progress + terminal completion over SSE. Implemented as a bounded poll over the
221
+ // persisted execution (runtime-symmetric by construction — no per-facade event-hub wiring), so
222
+ // it serves identically on the Worker and Node. Authenticated by the API key header (an external
223
+ // client can set headers, unlike a browser EventSource). Not a JSON contract, so a raw route.
224
+ app.get('/api/v1/jobs/:id/events', async (c) => {
225
+ const gate = await resolveKey(c);
226
+ if ('fail' in gate) {
227
+ return c.json({ error: { code: gate.fail.code, message: gate.fail.message } }, gate.fail.status);
228
+ }
229
+ const { auth } = gate;
230
+ const id = c.req.param('id');
231
+ const container = c.get('container');
232
+ // Same headless-job scoping as the poll read: only an initiative run this surface created.
233
+ const initial = await loadPublicJob(c, auth.workspaceId, id);
234
+ if (!initial) {
235
+ return c.json({ error: { code: 'not_found', message: 'Job not found' } }, 404);
236
+ }
237
+ const keys = container.publicApiKeys;
238
+ return streamSSE(c, async (stream) => {
239
+ const startedAt = Date.now();
240
+ let lastAuthCheck = Date.now();
241
+ let last = '';
242
+ // Emit the initial state immediately, then poll until terminal / client-gone / revoked /
243
+ // timeout. The run was validated as headless-inline at admission, so it never parks — but
244
+ // stop on ANY non-running raw status (blocked/paused too) rather than spinning to the cap.
245
+ for (;;) {
246
+ if (stream.aborted)
247
+ break;
248
+ // Re-verify the key periodically so a mid-stream revoke cuts the connection (the key was
249
+ // only proven once, at open). Cheap non-hashing revocation check, throttled.
250
+ if (keys && Date.now() - lastAuthCheck > SSE_REAUTH_MS) {
251
+ if (!(await keys.isActive(auth.keyId)))
252
+ break;
253
+ lastAuthCheck = Date.now();
254
+ }
255
+ const execution = await container.executionRepository.get(auth.workspaceId, id);
256
+ if (!execution)
257
+ break;
258
+ const job = toPublicJob(execution);
259
+ const data = JSON.stringify(job);
260
+ if (data !== last) {
261
+ await stream.writeSSE({
262
+ event: job.status === 'succeeded' ? 'done' : job.status === 'failed' ? 'error' : 'progress',
263
+ data,
264
+ });
265
+ last = data;
266
+ }
267
+ // A `paused` run is NOT terminal — the spend gate pauses a run when the workspace budget
268
+ // is exhausted and RESUMES it once budget frees up (ExecutionService.evaluateStep), so keep
269
+ // polling (bounded by SSE_MAX_MS below) rather than signalling a false terminal stop.
270
+ if (execution.status !== 'running' && execution.status !== 'paused') {
271
+ // The run has stopped. When it ended in a terminal public status (succeeded/failed) the
272
+ // event above already carried `done`/`error`. But a raw status that maps to `running`
273
+ // (e.g. `blocked` — a run parked awaiting a human, which a headless run can never resolve;
274
+ // admission rules this out for the built-in pipeline) would otherwise close the stream
275
+ // after a `progress` frame, leaving the client unable to tell "terminal" from "connection
276
+ // dropped". Emit an explicit terminal `stopped` frame so every close is unambiguous.
277
+ if (job.status === 'running')
278
+ await stream.writeSSE({ event: 'stopped', data });
279
+ break;
280
+ }
281
+ if (Date.now() - startedAt > SSE_MAX_MS) {
282
+ // Bound the connection; the client can reconnect to keep watching.
283
+ await stream.writeSSE({ event: 'timeout', data: '{}' });
284
+ break;
285
+ }
286
+ await stream.sleep(SSE_POLL_MS);
287
+ }
288
+ });
289
+ });
290
+ return app;
291
+ }
292
+ //# sourceMappingURL=PublicApiController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicApiController.js","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicApiController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type PublicApiKey } from '@cat-factory/contracts';
2
+ import type { PublicApiKeyRecord } from '@cat-factory/kernel';
3
+ import { Hono } from 'hono';
4
+ import type { AppEnv } from '../../http/env.js';
5
+ /** Project a stored record onto the secret-free wire type. */
6
+ export declare function publicApiKeyToWire(record: PublicApiKeyRecord): PublicApiKey;
7
+ /** Public-API-key management routes, mounted under `/workspaces/:workspaceId`. */
8
+ export declare function publicApiKeyController(): Hono<AppEnv>;
9
+ //# sourceMappingURL=PublicApiKeyController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicApiKeyController.d.ts","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicApiKeyController.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY/C,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAU3E;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqCrD"}
@@ -0,0 +1,58 @@
1
+ import { createPublicApiKeyContract, listPublicApiKeysContract, revokePublicApiKeyContract, } from '@cat-factory/contracts';
2
+ import { buildHonoRoute } from '@toad-contracts/hono';
3
+ import { Hono } from 'hono';
4
+ import { param } from '../../http/params.js';
5
+ // Management of INBOUND public-API keys, mounted under `/workspaces/:workspaceId` — so these
6
+ // routes are session-authed and pass through the per-workspace authorization gate (only a member
7
+ // of the workspace's account reaches them). A workspace owner mints/lists/revokes the keys an
8
+ // external system then presents to the `/api/v1` surface (see PublicApiController). The raw key is
9
+ // returned exactly once, on create; thereafter only metadata is exposed.
10
+ const unavailable = (c) => c.json({ error: { code: 'unavailable', message: 'Public API keys are not configured' } }, 503);
11
+ /** Project a stored record onto the secret-free wire type. */
12
+ export function publicApiKeyToWire(record) {
13
+ return {
14
+ id: record.id,
15
+ accountId: record.accountId,
16
+ workspaceId: record.workspaceId,
17
+ label: record.label,
18
+ createdAt: record.createdAt,
19
+ lastUsedAt: record.lastUsedAt,
20
+ revokedAt: record.revokedAt,
21
+ };
22
+ }
23
+ /** Public-API-key management routes, mounted under `/workspaces/:workspaceId`. */
24
+ export function publicApiKeyController() {
25
+ const app = new Hono();
26
+ buildHonoRoute(app, listPublicApiKeysContract, async (c) => {
27
+ const publicApiKeys = c.get('container').publicApiKeys;
28
+ if (!publicApiKeys)
29
+ return unavailable(c);
30
+ const keys = await publicApiKeys.list(param(c, 'workspaceId'));
31
+ return c.json({ keys: keys.map(publicApiKeyToWire) }, 200);
32
+ });
33
+ buildHonoRoute(app, createPublicApiKeyContract, async (c) => {
34
+ const container = c.get('container');
35
+ const publicApiKeys = container.publicApiKeys;
36
+ if (!publicApiKeys)
37
+ return unavailable(c);
38
+ const workspaceId = param(c, 'workspaceId');
39
+ // Resolve the owning account; the public API is an account-scoped feature, so refuse to mint a
40
+ // key for a missing workspace (`undefined`) or a legacy account-less board (`null`) rather than
41
+ // persisting an orphan key with an empty `accountId` (the old `?? ''` fallback).
42
+ const accountId = await container.workspaceService.accountOf(workspaceId);
43
+ if (accountId == null) {
44
+ return c.json({ error: { code: 'not_found', message: 'Workspace not found' } }, 404);
45
+ }
46
+ const { record, secret } = await publicApiKeys.issue({ accountId, workspaceId }, c.req.valid('json').label);
47
+ return c.json({ key: publicApiKeyToWire(record), secret }, 201);
48
+ });
49
+ buildHonoRoute(app, revokePublicApiKeyContract, async (c) => {
50
+ const publicApiKeys = c.get('container').publicApiKeys;
51
+ if (!publicApiKeys)
52
+ return unavailable(c);
53
+ await publicApiKeys.revoke(param(c, 'workspaceId'), c.req.valid('param').id);
54
+ return c.body(null, 204);
55
+ });
56
+ return app;
57
+ }
58
+ //# sourceMappingURL=PublicApiKeyController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublicApiKeyController.js","sourceRoot":"","sources":["../../../src/modules/publicApi/PublicApiKeyController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceController.d.ts","sourceRoot":"","sources":["../../../src/modules/workspaces/WorkspaceController.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAGV,UAAU,EAEX,MAAM,wBAAwB,CAAA;AA4D/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,wGAAwG;AACxG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvD;AAED,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC,wBAAsB,UAAU,CAC9B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1E,OAAO,CAAC,gBAAgB,GAAG,aAAa,GAAG,YAAY,CAAC,CAwB1D;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE;QAAE,iBAAiB,EAAE;YAAE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;IACrF,OAAO,CAAC,EAAE;QAAE,iBAAiB,EAAE;YAAE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;IAChF;;;;;;;;OAQG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC,0BAA0B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,gBAA+B,GACtC,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAcD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS/C,+DAA+D;AAC/D,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAgKlD"}
1
+ {"version":3,"file":"WorkspaceController.d.ts","sourceRoot":"","sources":["../../../src/modules/workspaces/WorkspaceController.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAGV,UAAU,EAEX,MAAM,wBAAwB,CAAA;AA4D/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,wGAAwG;AACxG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvD;AAED,oGAAoG;AACpG,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAEzC,wBAAsB,UAAU,CAC9B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1E,OAAO,CAAC,gBAAgB,GAAG,aAAa,GAAG,YAAY,CAAC,CAwB1D;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE;QAAE,iBAAiB,EAAE;YAAE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;IACrF,OAAO,CAAC,EAAE;QAAE,iBAAiB,EAAE;YAAE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;IAChF;;;;;;;;OAQG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC,0BAA0B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9D;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,gBAA+B,GACtC,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAcD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAS/C,+DAA+D;AAC/D,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,CAqKlD"}
@@ -179,6 +179,9 @@ export function workspaceController() {
179
179
  // renders the recurring-task badges and the tracker config on load. Run history
180
180
  // is fetched lazily, not here.
181
181
  recurringPipelines, trackerSettings,
182
+ // The workspace's initiatives (long-running multi-task work containers), so the
183
+ // board renders initiative cards + trackers on load.
184
+ initiatives,
182
185
  // The workspace's runtime settings (human-wait escalation threshold + per-service
183
186
  // task limit), so the board renders the settings panel on load.
184
187
  settings,
@@ -195,6 +198,7 @@ export function workspaceController() {
195
198
  container.serviceFragmentDefaults?.service.get(workspaceId),
196
199
  container.recurring?.service.list(workspaceId),
197
200
  container.tracker?.service.get(workspaceId),
201
+ container.initiatives?.service.list(workspaceId),
198
202
  container.settings?.service.get(workspaceId),
199
203
  container.services?.service.listMounts(workspaceId),
200
204
  container.services
@@ -218,6 +222,7 @@ export function workspaceController() {
218
222
  ...(serviceFragmentDefaults ? { serviceFragmentDefaults } : {}),
219
223
  ...(recurringPipelines ? { recurringPipelines } : {}),
220
224
  ...(trackerSettings ? { trackerSettings } : {}),
225
+ ...(initiatives ? { initiatives } : {}),
221
226
  ...(settings ? { settings } : {}),
222
227
  ...(mounts ? { mounts } : {}),
223
228
  ...(serviceCatalog ? { serviceCatalog } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceController.js","sourceRoot":"","sources":["../../../src/modules/workspaces/WorkspaceController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkspaceController.js","sourceRoot":"","sources":["../../../src/modules/workspaces/WorkspaceController.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export interface BlockRow {
25
25
  parent_id: string | null;
26
26
  /** Task-level: membership link to an `epic`-level block (independent of parent_id). */
27
27
  epic_id?: string | null;
28
+ /** Task-level: membership link to an `initiative`-level block (loop-spawned tasks). */
29
+ initiative_id?: string | null;
28
30
  /** Task-level: preceding-task auto-start toggle (0/1); null ⇒ off. */
29
31
  auto_start_dependents?: number | null;
30
32
  confidence: number | null;
@@ -62,6 +64,8 @@ export interface BlockRow {
62
64
  /** Task-level: per-task issue-tracker writeback overrides ('on'/'off'); null ⇒ inherit. */
63
65
  tracker_comment_on_pr_open?: string | null;
64
66
  tracker_resolve_on_merge?: string | null;
67
+ /** Headless marker: 1 ⇒ a public-API "initiative" anchor block excluded from the board; null ⇒ normal. */
68
+ internal?: number | null;
65
69
  }
66
70
  export declare function rowToBlock(row: BlockRow): Block;
67
71
  /** Full column tuple for inserting a block. */
@@ -94,6 +98,8 @@ export interface PipelineRow {
94
98
  archived?: number | boolean | null;
95
99
  /** Monotonic seed version for a built-in pipeline (migration 0017); null on custom/legacy rows. */
96
100
  version?: number | null;
101
+ /** Truthy (1) when the pipeline is callable via the public API (migration 0034). */
102
+ public?: number | boolean | null;
97
103
  }
98
104
  export declare function rowToPipeline(row: PipelineRow): Pipeline;
99
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../src/persistence/mappers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../src/persistence/mappers.ts"],"names":[],"mappings":"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"}