airaknit 1.1.2-rc.9
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/LICENSE +84 -0
- package/README.md +202 -0
- package/bin/airaknit +9 -0
- package/bin/airaknit-project +14 -0
- package/bin/kanna +9 -0
- package/dist/client/assets/CompactSummaryMessage-Yw0BDWEJ.js +1 -0
- package/dist/client/assets/ExitPlanModeMessage-DIdkQ4uF.js +1 -0
- package/dist/client/assets/LocalFilePreviewDialog-DQx2eiCc.js +3 -0
- package/dist/client/assets/LocalProjectsSection-C4xlWkgS.js +1 -0
- package/dist/client/assets/TextMessage-B5G39DEJ.js +1 -0
- package/dist/client/assets/UserMessage-CIkWk-0L.js +1 -0
- package/dist/client/assets/_basePickBy-CVrAFfnZ.js +1 -0
- package/dist/client/assets/_baseUniq-JL-aaF4P.js +1 -0
- package/dist/client/assets/arc-B07zg7ol.js +1 -0
- package/dist/client/assets/architecture-YZFGNWBL-PSLVJL3p.js +1 -0
- package/dist/client/assets/architectureDiagram-Q4EWVU46-DfWIF1G_.js +36 -0
- package/dist/client/assets/array-BGFCBI0e.js +1 -0
- package/dist/client/assets/blockDiagram-DXYQGD6D-CzwIeo_B.js +132 -0
- package/dist/client/assets/bundle-mjs-BDE2gWbQ.js +1 -0
- package/dist/client/assets/button-DO50qOGv.js +1 -0
- package/dist/client/assets/c4Diagram-AHTNJAMY-CR8DCQRE.js +10 -0
- package/dist/client/assets/channel-Dj-UUfaF.js +1 -0
- package/dist/client/assets/chunk-2KRD3SAO-dznP-cn8.js +1 -0
- package/dist/client/assets/chunk-336JU56O-Dqss5Vu6.js +2 -0
- package/dist/client/assets/chunk-426QAEUC-CEKis_0_.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-BYOv0Gm1.js +1 -0
- package/dist/client/assets/chunk-4TB4RGXK-BxzubH5S.js +206 -0
- package/dist/client/assets/chunk-55IACEB6-BSlTj03a.js +1 -0
- package/dist/client/assets/chunk-5FUZZQ4R-9Au93Bi1.js +62 -0
- package/dist/client/assets/chunk-5PVQY5BW-BhksHFEZ.js +2 -0
- package/dist/client/assets/chunk-67CJDMHE-BFwhz-8t.js +1 -0
- package/dist/client/assets/chunk-7N4EOEYR-BDUPds87.js +1 -0
- package/dist/client/assets/chunk-AA7GKIK3-CEWTdyXO.js +1 -0
- package/dist/client/assets/chunk-BO2N2NFS-D0LvxnhU.js +103 -0
- package/dist/client/assets/chunk-BSJP7CBP-BNJnK6sq.js +1 -0
- package/dist/client/assets/chunk-Bj-mKKzh.js +1 -0
- package/dist/client/assets/chunk-CIAEETIT-CYhfoCeN.js +1 -0
- package/dist/client/assets/chunk-EDXVE4YY-C5ovJLc0.js +1 -0
- package/dist/client/assets/chunk-ENJZ2VHE-HOhYaeGr.js +10 -0
- package/dist/client/assets/chunk-FMBD7UC4-BLCiKcAQ.js +15 -0
- package/dist/client/assets/chunk-FOC6F5B3-B6GtY2ek.js +1 -0
- package/dist/client/assets/chunk-ICPOFSXX-DPoIZoC5.js +122 -0
- package/dist/client/assets/chunk-K5T4RW27-BsKN63rv.js +94 -0
- package/dist/client/assets/chunk-KGLVRYIC-BUGn9uuY.js +1 -0
- package/dist/client/assets/chunk-LIHQZDEY-DhaZyo03.js +1 -0
- package/dist/client/assets/chunk-ORNJ4GCN-DlpeeJyi.js +1 -0
- package/dist/client/assets/chunk-OYMX7WX6-Dc9q7aYA.js +231 -0
- package/dist/client/assets/chunk-QZHKN3VN-BEdrPoSb.js +1 -0
- package/dist/client/assets/chunk-U2HBQHQK-CIB3Bjjd.js +70 -0
- package/dist/client/assets/chunk-X2U36JSP-CtB-o8Yp.js +1 -0
- package/dist/client/assets/chunk-XPW4576I-C6iHhX_8.js +32 -0
- package/dist/client/assets/chunk-YZCP3GAM-CTmKr6ZH.js +1 -0
- package/dist/client/assets/chunk-ZZ45TVLE-BgU8A2RF.js +1 -0
- package/dist/client/assets/classDiagram-6PBFFD2Q-Bqk5e679.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-6pSaZOkC.js +1 -0
- package/dist/client/assets/client-BrKWI4CM.js +1 -0
- package/dist/client/assets/client-CGgNRU9w.js +1 -0
- package/dist/client/assets/client-DMSLRzg9.js +6 -0
- package/dist/client/assets/clone-DWcL7whJ.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-CrV5wsV_.js +1 -0
- package/dist/client/assets/cytoscape.esm--aLzKuep.js +321 -0
- package/dist/client/assets/dagre-CuRxWcrj.js +1 -0
- package/dist/client/assets/dagre-KV5264BT-BIDiVnkA.js +4 -0
- package/dist/client/assets/defaultLocale-CRZydyG6.js +1 -0
- package/dist/client/assets/diagram-5BDNPKRD-i1kjKRCB.js +10 -0
- package/dist/client/assets/diagram-G4DWMVQ6-9ZSLuhbl.js +24 -0
- package/dist/client/assets/diagram-MMDJMWI5-B4_CUjgv.js +43 -0
- package/dist/client/assets/diagram-TYMM5635-Ct5eTGS8.js +24 -0
- package/dist/client/assets/dist-CuB4kiSK.js +1 -0
- package/dist/client/assets/erDiagram-SMLLAGMA-Cy38ercc.js +85 -0
- package/dist/client/assets/flowDiagram-DWJPFMVM-CZKuYl0V.js +162 -0
- package/dist/client/assets/ganttDiagram-T4ZO3ILL-DLPjCh7a.js +292 -0
- package/dist/client/assets/gitGraph-7Q5UKJZL-DqbrtEp9.js +1 -0
- package/dist/client/assets/gitGraphDiagram-UUTBAWPF-BoRBkDhQ.js +106 -0
- package/dist/client/assets/graphlib-BcQ6qlQh.js +1 -0
- package/dist/client/assets/highlighted-body-OFNGDK62-BEpBVDTX.js +1 -0
- package/dist/client/assets/index-CetCiuqP.js +105 -0
- package/dist/client/assets/index-N29Mip7A.css +1 -0
- package/dist/client/assets/info-OMHHGYJF-D98DRBJX.js +1 -0
- package/dist/client/assets/infoDiagram-42DDH7IO-BAcdTWbt.js +2 -0
- package/dist/client/assets/init-B8gtcn7T.js +1 -0
- package/dist/client/assets/isArrayLikeObject-D8SJFmkN.js +1 -0
- package/dist/client/assets/isEmpty-BF3YX5Jk.js +1 -0
- package/dist/client/assets/ishikawaDiagram-UXIWVN3A-Ynu2VKdC.js +70 -0
- package/dist/client/assets/journeyDiagram-VCZTEJTY-BjfhQaN3.js +139 -0
- package/dist/client/assets/jsx-runtime-CyI9ICYU.js +1 -0
- package/dist/client/assets/kanban-definition-6JOO6SKY-JLXH9zUJ.js +89 -0
- package/dist/client/assets/katex-B94qP8b6.js +265 -0
- package/dist/client/assets/lib--QVjyxmL.js +29 -0
- package/dist/client/assets/lib-B6rgJiZ9.js +1 -0
- package/dist/client/assets/line-DCrYfLBn.js +1 -0
- package/dist/client/assets/linear-_4upLmeo.js +1 -0
- package/dist/client/assets/mermaid-GHXKKRXX-rwJHYUmW.js +1 -0
- package/dist/client/assets/mermaid-parser.core-KZinfW8o.js +4 -0
- package/dist/client/assets/mermaid.core-QqY9gSNe.js +11 -0
- package/dist/client/assets/mindmap-definition-QFDTVHPH-TWgHDAzp.js +96 -0
- package/dist/client/assets/ordinal-CCj7PWgZ.js +1 -0
- package/dist/client/assets/packet-4T2RLAQJ-DEvfkn3F.js +1 -0
- package/dist/client/assets/path-DZF-JdEe.js +1 -0
- package/dist/client/assets/pie-ZZUOXDRM-72e6WVjb.js +1 -0
- package/dist/client/assets/pieDiagram-DEJITSTG-Cl8PCsoj.js +30 -0
- package/dist/client/assets/preload-helper-rov5CBGT.js +1 -0
- package/dist/client/assets/pty-client-DZ27IS00.js +1 -0
- package/dist/client/assets/ptyInstancesStore-D9ag7SYd.js +1 -0
- package/dist/client/assets/quadrantDiagram-34T5L4WZ-CHyVGp9E.js +7 -0
- package/dist/client/assets/radar-PYXPWWZC-Cp7xd_EY.js +1 -0
- package/dist/client/assets/react-CClhXMB2.js +1 -0
- package/dist/client/assets/react-Dd6D81m0.js +1 -0
- package/dist/client/assets/react-dom--G6_6fQ_.js +1 -0
- package/dist/client/assets/requirementDiagram-MS252O5E-DaanG2iM.js +84 -0
- package/dist/client/assets/rough.esm-BsmKo2S5.js +1 -0
- package/dist/client/assets/sankeyDiagram-XADWPNL6-B_fhLY36.js +10 -0
- package/dist/client/assets/sequenceDiagram-FGHM5R23-C5FNrveI.js +157 -0
- package/dist/client/assets/src-DeTlMJAU.js +1 -0
- package/dist/client/assets/stateDiagram-FHFEXIEX-nTTcdjjQ.js +1 -0
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Dw0632j_.js +1 -0
- package/dist/client/assets/timeline-definition-GMOUNBTQ-DkQV1yP8.js +120 -0
- package/dist/client/assets/treeView-SZITEDCU-ZLIgC7_K.js +1 -0
- package/dist/client/assets/treemap-W4RFUUIX-BqaMbB6N.js +1 -0
- package/dist/client/assets/uiIdentityOverlay-Ba7GNj7m.js +1 -0
- package/dist/client/assets/vennDiagram-DHZGUBPP-DbZ2xgs6.js +34 -0
- package/dist/client/assets/wardley-RL74JXVD-DXQS8zf4.js +1 -0
- package/dist/client/assets/wardleyDiagram-NUSXRM2D-BzCJ6MAu.js +20 -0
- package/dist/client/assets/xychartDiagram-5P7HB3ND-BSlFecop.js +7 -0
- package/dist/client/favicon.png +0 -0
- package/dist/client/favicon.svg +15 -0
- package/dist/client/fonts/body-medium.woff2 +0 -0
- package/dist/client/fonts/body-regular-italic.woff2 +0 -0
- package/dist/client/fonts/body-regular.woff2 +0 -0
- package/dist/client/fonts/body-semibold.woff2 +0 -0
- package/dist/client/index.html +31 -0
- package/dist/client/manifest.webmanifest +12 -0
- package/dist/client/sw.js +32 -0
- package/package.json +122 -0
- package/src/nats/auth-callout/callout-config.test.ts +93 -0
- package/src/nats/auth-callout/callout-config.ts +109 -0
- package/src/nats/auth-callout/callout.integration.test.ts +332 -0
- package/src/nats/auth-callout/keys.ts +103 -0
- package/src/nats/auth-callout/responder.ts +241 -0
- package/src/nats/auth-callout/scope-policy.test.ts +159 -0
- package/src/nats/auth-callout/scope-policy.ts +210 -0
- package/src/nats/auth-callout/token.test.ts +163 -0
- package/src/nats/auth-callout/token.ts +157 -0
- package/src/nats/nats-daemon-callout.ts +194 -0
- package/src/nats/nats-daemon.test.ts +77 -0
- package/src/nats/nats-daemon.ts +50 -0
- package/src/nats/nats-token.test.ts +61 -0
- package/src/nats/nats-token.ts +59 -0
- package/src/runner/coordination-mcp-integration.test.ts +134 -0
- package/src/runner/nats-coordination-client.test.ts +49 -0
- package/src/runner/nats-coordination-client.ts +94 -0
- package/src/runner/runner-agent.test.ts +469 -0
- package/src/runner/runner-agent.ts +453 -0
- package/src/runner/runner-credential.test.ts +93 -0
- package/src/runner/runner-credential.ts +82 -0
- package/src/runner/runner-nats.test.ts +495 -0
- package/src/runner/runner-nats.ts +323 -0
- package/src/runner/runner-pair.test.ts +107 -0
- package/src/runner/runner-pair.ts +81 -0
- package/src/runner/runner.test.ts +135 -0
- package/src/runner/runner.ts +212 -0
- package/src/runner/turn-factories.test.ts +97 -0
- package/src/runner/turn-factories.ts +475 -0
- package/src/server/agent-config-journey.test.ts +106 -0
- package/src/server/agent.ts +8 -0
- package/src/server/auto-continue/auth-error-detector.ts +66 -0
- package/src/server/auto-continue/limit-detector.ts +194 -0
- package/src/server/bm25.test.ts +92 -0
- package/src/server/bm25.ts +101 -0
- package/src/server/chat-events-jetstream.test.ts +135 -0
- package/src/server/claude-harness.ts +360 -0
- package/src/server/claude-pty/agent-normalizers.ts +309 -0
- package/src/server/claude-pty/auth.test.ts +38 -0
- package/src/server/claude-pty/auth.ts +32 -0
- package/src/server/claude-pty/claude-session-registry.adapter.ts +81 -0
- package/src/server/claude-pty/claude-session-registry.test.ts +149 -0
- package/src/server/claude-pty/driver.test.ts +902 -0
- package/src/server/claude-pty/driver.ts +807 -0
- package/src/server/claude-pty/jsonl-path.adapter.ts +57 -0
- package/src/server/claude-pty/jsonl-path.test.ts +114 -0
- package/src/server/claude-pty/jsonl-to-event.test.ts +241 -0
- package/src/server/claude-pty/jsonl-to-event.ts +174 -0
- package/src/server/claude-pty/output-ring.test.ts +35 -0
- package/src/server/claude-pty/output-ring.ts +25 -0
- package/src/server/claude-pty/parity-matrix.test.ts +227 -0
- package/src/server/claude-pty/pid-registry.adapter.ts +135 -0
- package/src/server/claude-pty/pid-registry.test.ts +122 -0
- package/src/server/claude-pty/preflight/binary-fingerprint.adapter.ts +20 -0
- package/src/server/claude-pty/preflight/binary-fingerprint.test.ts +32 -0
- package/src/server/claude-pty/pty-instance-registry.test.ts +177 -0
- package/src/server/claude-pty/pty-instance-registry.ts +166 -0
- package/src/server/claude-pty/pty-memory-sampler.adapter.test.ts +103 -0
- package/src/server/claude-pty/pty-memory-sampler.adapter.ts +85 -0
- package/src/server/claude-pty/pty-process.adapter.ts +66 -0
- package/src/server/claude-pty/pty-process.test.ts +49 -0
- package/src/server/claude-pty/resolve-binary.adapter.ts +106 -0
- package/src/server/claude-pty/resolve-binary.test.ts +118 -0
- package/src/server/claude-pty/runtime-dir.adapter.ts +19 -0
- package/src/server/claude-pty/settings-writer.adapter.ts +27 -0
- package/src/server/claude-pty/settings-writer.test.ts +22 -0
- package/src/server/claude-pty/smoke-test-io.adapter.ts +28 -0
- package/src/server/claude-pty/smoke-test.test.ts +191 -0
- package/src/server/claude-pty/smoke-test.ts +185 -0
- package/src/server/claude-pty/subagent-orchestrator.ts +887 -0
- package/src/server/claude-pty/tool-callback.ts +274 -0
- package/src/server/claude-pty/tui-control.test.ts +272 -0
- package/src/server/claude-pty/tui-control.ts +182 -0
- package/src/server/claude-pty/tui-source.adapter.test.ts +360 -0
- package/src/server/claude-pty/tui-source.adapter.ts +343 -0
- package/src/server/claude-pty/tunnel-gateway.ts +12 -0
- package/src/server/claude-pty-mcp/canonical-args.ts +15 -0
- package/src/server/claude-pty-mcp/fs-stat.adapter.ts +8 -0
- package/src/server/claude-pty-mcp/history-primer.ts +90 -0
- package/src/server/claude-pty-mcp/http-server.adapter.ts +33 -0
- package/src/server/claude-pty-mcp/mcp-http.ts +177 -0
- package/src/server/claude-pty-mcp/mcp.ts +412 -0
- package/src/server/claude-pty-mcp/mention-parser.ts +25 -0
- package/src/server/claude-pty-mcp/paths.ts +24 -0
- package/src/server/claude-pty-mcp/permission-gate.ts +243 -0
- package/src/server/claude-pty-mcp/terminal-pid-registry.adapter.ts +107 -0
- package/src/server/claude-pty-mcp/tools/ask-user-question.test.ts +119 -0
- package/src/server/claude-pty-mcp/tools/ask-user-question.ts +61 -0
- package/src/server/claude-pty-mcp/tools/bash.adapter.ts +76 -0
- package/src/server/claude-pty-mcp/tools/bash.test.ts +56 -0
- package/src/server/claude-pty-mcp/tools/delegate-subagent.test.ts +155 -0
- package/src/server/claude-pty-mcp/tools/delegate-subagent.ts +111 -0
- package/src/server/claude-pty-mcp/tools/edit.adapter.ts +95 -0
- package/src/server/claude-pty-mcp/tools/edit.test.ts +93 -0
- package/src/server/claude-pty-mcp/tools/exit-plan-mode.test.ts +61 -0
- package/src/server/claude-pty-mcp/tools/exit-plan-mode.ts +50 -0
- package/src/server/claude-pty-mcp/tools/glob.adapter.ts +86 -0
- package/src/server/claude-pty-mcp/tools/glob.test.ts +61 -0
- package/src/server/claude-pty-mcp/tools/grep.adapter.ts +126 -0
- package/src/server/claude-pty-mcp/tools/grep.test.ts +62 -0
- package/src/server/claude-pty-mcp/tools/read.adapter.ts +58 -0
- package/src/server/claude-pty-mcp/tools/read.test.ts +62 -0
- package/src/server/claude-pty-mcp/tools/tool-callback-shim.ts +42 -0
- package/src/server/claude-pty-mcp/tools/webfetch.test.ts +81 -0
- package/src/server/claude-pty-mcp/tools/webfetch.ts +82 -0
- package/src/server/claude-pty-mcp/tools/websearch.test.ts +40 -0
- package/src/server/claude-pty-mcp/tools/websearch.ts +42 -0
- package/src/server/claude-pty-mcp/tools/write.adapter.ts +60 -0
- package/src/server/claude-pty-mcp/tools/write.test.ts +52 -0
- package/src/server/claude-pty-mcp/uploads.adapter.ts +98 -0
- package/src/server/claude-pty-mcp/uploads.ts +38 -0
- package/src/server/claude-turn.test.ts +176 -0
- package/src/server/cli-runtime.test.ts +456 -0
- package/src/server/cli-runtime.ts +374 -0
- package/src/server/cli-supervisor.ts +81 -0
- package/src/server/cli.ts +78 -0
- package/src/server/client-log-forwarder.test.ts +74 -0
- package/src/server/client-log-forwarder.ts +75 -0
- package/src/server/codex-app-server-protocol.ts +449 -0
- package/src/server/codex-app-server.test.ts +2990 -0
- package/src/server/codex-app-server.ts +1713 -0
- package/src/server/coordination-integration.test.ts +63 -0
- package/src/server/coordination-mcp.test.ts +149 -0
- package/src/server/coordination-mcp.ts +197 -0
- package/src/server/delegation-coordinator.test.ts +675 -0
- package/src/server/delegation-coordinator.ts +454 -0
- package/src/server/discovery.test.ts +211 -0
- package/src/server/discovery.ts +301 -0
- package/src/server/event-store-agent-config.test.ts +124 -0
- package/src/server/event-store-coordination.test.ts +149 -0
- package/src/server/event-store-profile.test.ts +132 -0
- package/src/server/event-store-repo.test.ts +154 -0
- package/src/server/event-store-runner-team.test.ts +104 -0
- package/src/server/event-store.test.ts +342 -0
- package/src/server/event-store.ts +2208 -0
- package/src/server/events.ts +379 -0
- package/src/server/extension-router.test.ts +183 -0
- package/src/server/extension-router.ts +114 -0
- package/src/server/extensions/agents/server.test.ts +191 -0
- package/src/server/extensions/agents/server.ts +108 -0
- package/src/server/extensions/c3/server.test.ts +284 -0
- package/src/server/extensions/c3/server.ts +212 -0
- package/src/server/extensions/code/server.test.ts +200 -0
- package/src/server/extensions/code/server.ts +150 -0
- package/src/server/extensions.config.ts +10 -0
- package/src/server/external-open.ts +69 -0
- package/src/server/generate-fork-context.ts +58 -0
- package/src/server/generate-merge-context.test.ts +290 -0
- package/src/server/generate-merge-context.ts +141 -0
- package/src/server/generate-title.ts +36 -0
- package/src/server/git-clone-policy.test.ts +138 -0
- package/src/server/git-clone-policy.ts +27 -0
- package/src/server/harness-types.ts +1 -0
- package/src/server/journey-verification.test.ts +640 -0
- package/src/server/journey-verification.ts +195 -0
- package/src/server/machine-name.ts +22 -0
- package/src/server/nats-auth.test.ts +92 -0
- package/src/server/nats-auth.ts +6 -0
- package/src/server/nats-bind-guard.test.ts +71 -0
- package/src/server/nats-bind-guard.ts +42 -0
- package/src/server/nats-bridge.test.ts +141 -0
- package/src/server/nats-bridge.ts +111 -0
- package/src/server/nats-connector.test.ts +56 -0
- package/src/server/nats-connector.ts +71 -0
- package/src/server/nats-daemon-manager.test.ts +76 -0
- package/src/server/nats-daemon-manager.ts +174 -0
- package/src/server/nats-publisher.test.ts +356 -0
- package/src/server/nats-publisher.ts +271 -0
- package/src/server/nats-responders.test.ts +1018 -0
- package/src/server/nats-responders.ts +925 -0
- package/src/server/nats-streams.test.ts +112 -0
- package/src/server/nats-streams.ts +129 -0
- package/src/server/oauth-pool/oauth-responders.ts +185 -0
- package/src/server/oauth-pool/oauth-settings-store.ts +173 -0
- package/src/server/oauth-pool/oauth-token-pool.ts +303 -0
- package/src/server/orchestration.test.ts +1063 -0
- package/src/server/orchestration.ts +716 -0
- package/src/server/pairing-endpoints.test.ts +171 -0
- package/src/server/pairing-store.test.ts +154 -0
- package/src/server/pairing-store.ts +124 -0
- package/src/server/paths.ts +27 -0
- package/src/server/pr3-liveness.test.ts +252 -0
- package/src/server/process-utils.ts +10 -0
- package/src/server/project-cli.ts +180 -0
- package/src/server/provider-catalog.test.ts +177 -0
- package/src/server/provider-catalog.ts +146 -0
- package/src/server/pty-responders.ts +345 -0
- package/src/server/push-notifications.test.ts +234 -0
- package/src/server/push-notifications.ts +188 -0
- package/src/server/quick-response.test.ts +196 -0
- package/src/server/quick-response.ts +154 -0
- package/src/server/read-models-agent-config.test.ts +59 -0
- package/src/server/read-models-coordination.test.ts +69 -0
- package/src/server/read-models.test.ts +332 -0
- package/src/server/read-models.ts +258 -0
- package/src/server/repo-journey.test.ts +96 -0
- package/src/server/repo-manager.test.ts +118 -0
- package/src/server/repo-manager.ts +97 -0
- package/src/server/repo-status.test.ts +54 -0
- package/src/server/repo-status.ts +82 -0
- package/src/server/restart.test.ts +27 -0
- package/src/server/restart.ts +30 -0
- package/src/server/runner-incompatible-gate.test.ts +383 -0
- package/src/server/runner-manager.test.ts +72 -0
- package/src/server/runner-manager.ts +312 -0
- package/src/server/runner-pairing-urls.test.ts +59 -0
- package/src/server/runner-pairing-urls.ts +67 -0
- package/src/server/runner-proxy.test.ts +456 -0
- package/src/server/runner-proxy.ts +494 -0
- package/src/server/runner-router.test.ts +429 -0
- package/src/server/runner-router.ts +212 -0
- package/src/server/runner-routing.test.ts +584 -0
- package/src/server/runtime-registry.test.ts +436 -0
- package/src/server/runtime-registry.ts +307 -0
- package/src/server/sandbox-health.test.ts +127 -0
- package/src/server/sandbox-health.ts +94 -0
- package/src/server/sandbox-journey.test.ts +232 -0
- package/src/server/sandbox-manager.test.ts +146 -0
- package/src/server/sandbox-manager.ts +159 -0
- package/src/server/server.test.ts +287 -0
- package/src/server/server.ts +1108 -0
- package/src/server/session-discovery.test.ts +129 -0
- package/src/server/session-discovery.ts +475 -0
- package/src/server/session-index.test.ts +362 -0
- package/src/server/session-index.ts +119 -0
- package/src/server/session-seed.ts +288 -0
- package/src/server/share.test.ts +108 -0
- package/src/server/share.ts +113 -0
- package/src/server/skill-discovery.test.ts +201 -0
- package/src/server/skill-discovery.ts +77 -0
- package/src/server/storage/test-helpers.ts +67 -0
- package/src/server/terminal-manager.test.ts +309 -0
- package/src/server/terminal-manager.ts +354 -0
- package/src/server/transcript-consumer.test.ts +339 -0
- package/src/server/transcript-consumer.ts +162 -0
- package/src/server/transcript-search.test.ts +193 -0
- package/src/server/transcript-search.ts +83 -0
- package/src/server/transcript-utils.ts +52 -0
- package/src/server/update-manager.test.ts +107 -0
- package/src/server/update-manager.ts +230 -0
- package/src/server/workflow-engine.test.ts +251 -0
- package/src/server/workflow-engine.ts +169 -0
- package/src/server/workflow-mcp.ts +49 -0
- package/src/server/workflow-store.test.ts +155 -0
- package/src/server/workflow-store.ts +139 -0
- package/src/server/workspace-agent-integration.test.ts +167 -0
- package/src/server/workspace-agent-routes.test.ts +127 -0
- package/src/server/workspace-agent-routes.ts +89 -0
- package/src/server/workspace-agent.test.ts +103 -0
- package/src/server/workspace-agent.ts +102 -0
- package/src/server/workspace-cli.test.ts +79 -0
- package/src/server/workspace-config-manager.test.ts +109 -0
- package/src/server/workspace-config-manager.ts +83 -0
- package/src/server/workspace-directory-policy.test.ts +109 -0
- package/src/server/workspace-directory-policy.ts +56 -0
- package/src/shared/agent-config-types.ts +25 -0
- package/src/shared/branding.test.ts +42 -0
- package/src/shared/branding.ts +54 -0
- package/src/shared/compression.test.ts +85 -0
- package/src/shared/compression.ts +42 -0
- package/src/shared/coordination-store.test.ts +24 -0
- package/src/shared/coordination-store.ts +26 -0
- package/src/shared/dev-ports.test.ts +84 -0
- package/src/shared/dev-ports.ts +100 -0
- package/src/shared/extension-types.ts +45 -0
- package/src/shared/fork-presets.ts +54 -0
- package/src/shared/harness-types.test.ts +15 -0
- package/src/shared/harness-types.ts +21 -0
- package/src/shared/log-sink.test.ts +112 -0
- package/src/shared/log-sink.ts +185 -0
- package/src/shared/mention-pattern.ts +7 -0
- package/src/shared/merge-presets.ts +41 -0
- package/src/shared/nats-subjects.test.ts +61 -0
- package/src/shared/nats-subjects.ts +131 -0
- package/src/shared/permission-policy.ts +136 -0
- package/src/shared/ports.ts +3 -0
- package/src/shared/preset-types.ts +15 -0
- package/src/shared/profile-types.ts +49 -0
- package/src/shared/projectFileUrl.ts +36 -0
- package/src/shared/protocol.ts +153 -0
- package/src/shared/pty-instance.ts +43 -0
- package/src/shared/puggy/diagnostics/result.ts +18 -0
- package/src/shared/puggy/expressions/evaluate.ts +292 -0
- package/src/shared/puggy/index.test.ts +101 -0
- package/src/shared/puggy/index.ts +69 -0
- package/src/shared/puggy/parser/ast.ts +110 -0
- package/src/shared/puggy/parser/parser.ts +624 -0
- package/src/shared/puggy/renderer/html.ts +447 -0
- package/src/shared/runner-protocol.test.ts +277 -0
- package/src/shared/runner-protocol.ts +210 -0
- package/src/shared/runner-team-types.ts +73 -0
- package/src/shared/runtime-types.ts +48 -0
- package/src/shared/sandbox-types.ts +53 -0
- package/src/shared/tailwind-build.test.ts +12 -0
- package/src/shared/tinkaria-system-prompt.ts +101 -0
- package/src/shared/tools.test.ts +335 -0
- package/src/shared/tools.ts +397 -0
- package/src/shared/transcript-entries.ts +27 -0
- package/src/shared/transcript-render.test.ts +225 -0
- package/src/shared/transcript-render.ts +467 -0
- package/src/shared/types.ts +1031 -0
- package/src/shared/vite-config.test.ts +47 -0
- package/src/shared/web-context.test.ts +110 -0
- package/src/shared/web-context.ts +76 -0
- package/src/shared/workflow-types.ts +51 -0
- package/src/shared/workspace-types.ts +100 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test"
|
|
2
|
+
import viteConfig, { getAllowedHosts } from "../../vite.config"
|
|
3
|
+
|
|
4
|
+
describe("vite dev watch config", () => {
|
|
5
|
+
test("ignores unrelated markdown files", () => {
|
|
6
|
+
expect(viteConfig.server?.watch?.ignored).toEqual([
|
|
7
|
+
"**/*.md",
|
|
8
|
+
"**/*.markdown",
|
|
9
|
+
"**/*.mdx",
|
|
10
|
+
])
|
|
11
|
+
})
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
describe("getAllowedHosts", () => {
|
|
15
|
+
test("uses vite defaults when no custom hosts are configured", () => {
|
|
16
|
+
const original = process.env.KANNA_DEV_ALLOWED_HOSTS
|
|
17
|
+
delete process.env.KANNA_DEV_ALLOWED_HOSTS
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
expect(getAllowedHosts()).toBeUndefined()
|
|
21
|
+
} finally {
|
|
22
|
+
if (original === undefined) {
|
|
23
|
+
delete process.env.KANNA_DEV_ALLOWED_HOSTS
|
|
24
|
+
} else {
|
|
25
|
+
process.env.KANNA_DEV_ALLOWED_HOSTS = original
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
test("accepts explicit host lists and true passthrough", () => {
|
|
31
|
+
const original = process.env.KANNA_DEV_ALLOWED_HOSTS
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
process.env.KANNA_DEV_ALLOWED_HOSTS = `["devbox.lan","preview.local"]`
|
|
35
|
+
expect(getAllowedHosts()).toEqual(["devbox.lan", "preview.local"])
|
|
36
|
+
|
|
37
|
+
process.env.KANNA_DEV_ALLOWED_HOSTS = "true"
|
|
38
|
+
expect(getAllowedHosts()).toBe(true)
|
|
39
|
+
} finally {
|
|
40
|
+
if (original === undefined) {
|
|
41
|
+
delete process.env.KANNA_DEV_ALLOWED_HOSTS
|
|
42
|
+
} else {
|
|
43
|
+
process.env.KANNA_DEV_ALLOWED_HOSTS = original
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
})
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test"
|
|
2
|
+
import { getWebContextPrompt } from "./web-context"
|
|
3
|
+
|
|
4
|
+
describe("getWebContextPrompt", () => {
|
|
5
|
+
test("returns a non-empty string for both providers", () => {
|
|
6
|
+
expect(getWebContextPrompt("claude").length).toBeGreaterThan(0)
|
|
7
|
+
expect(getWebContextPrompt("codex").length).toBeGreaterThan(0)
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
test("includes Tinkaria and web-based interface for both providers", () => {
|
|
11
|
+
for (const provider of ["claude", "codex"] as const) {
|
|
12
|
+
const prompt = getWebContextPrompt(provider)
|
|
13
|
+
expect(prompt).toContain("Tinkaria")
|
|
14
|
+
expect(prompt).toContain("web-based interface")
|
|
15
|
+
}
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test("mentions the correct provider name", () => {
|
|
19
|
+
expect(getWebContextPrompt("claude")).toContain("Claude Code")
|
|
20
|
+
expect(getWebContextPrompt("codex")).toContain("Codex")
|
|
21
|
+
expect(getWebContextPrompt("codex")).not.toContain("Claude Code")
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
test("includes the current rich-content viewer contract and plan mode context", () => {
|
|
25
|
+
for (const provider of ["claude", "codex"] as const) {
|
|
26
|
+
const prompt = getWebContextPrompt(provider)
|
|
27
|
+
expect(prompt).toContain("The transcript supports rich markdown natively")
|
|
28
|
+
expect(prompt).toContain("rich-content cards")
|
|
29
|
+
expect(prompt).toContain("collapse/expand, copy, and opening the content in a larger overlay viewer")
|
|
30
|
+
expect(prompt).toContain("`html` for rendered embeds")
|
|
31
|
+
expect(prompt).toContain("`d2` for source-only previews")
|
|
32
|
+
expect(prompt).toContain("table of contents")
|
|
33
|
+
expect(prompt).toContain("render/source toggle and zoom controls")
|
|
34
|
+
expect(prompt).toContain("Prefer direct rich embeds or structured artifact cards over bare links")
|
|
35
|
+
expect(prompt).toContain("Plan mode")
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
test("describes cross-session orchestration as explicit tool-mediated chat coordination", () => {
|
|
40
|
+
const claudePrompt = getWebContextPrompt("claude")
|
|
41
|
+
expect(claudePrompt).toContain("spawn_agent")
|
|
42
|
+
expect(claudePrompt).toContain("list_agents")
|
|
43
|
+
expect(claudePrompt).toContain("fork_context")
|
|
44
|
+
expect(claudePrompt).toContain("send_input")
|
|
45
|
+
expect(claudePrompt).toContain("wait_agent")
|
|
46
|
+
expect(claudePrompt).toContain("close_agent")
|
|
47
|
+
expect(claudePrompt).toContain("not hidden shared memory")
|
|
48
|
+
expect(claudePrompt).toContain("Do not assume delegated chats share")
|
|
49
|
+
|
|
50
|
+
const codexPrompt = getWebContextPrompt("codex", { codexNativeSubagentsEnabled: true })
|
|
51
|
+
expect(codexPrompt).toContain("Codex-native subagent collaboration")
|
|
52
|
+
expect(codexPrompt).toContain("collabAgentToolCall")
|
|
53
|
+
expect(codexPrompt).toContain("spawnAgent")
|
|
54
|
+
expect(codexPrompt).toContain("sendInput")
|
|
55
|
+
expect(codexPrompt).toContain("closeAgent")
|
|
56
|
+
expect(codexPrompt).not.toContain("spawn_agent creates")
|
|
57
|
+
expect(codexPrompt).toContain("Do not assume delegated chats share")
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
test("orchestration block describes workflow semantics and accumulation pattern", () => {
|
|
61
|
+
for (const provider of ["claude", "codex"] as const) {
|
|
62
|
+
const prompt = getWebContextPrompt(provider, { codexNativeSubagentsEnabled: true })
|
|
63
|
+
// Workflow: spawn creates child, wait returns its result
|
|
64
|
+
expect(prompt).toMatch(/child session|spawned child/i)
|
|
65
|
+
// Accumulation: send_input/sendInput for follow-ups and iterative refinement
|
|
66
|
+
expect(prompt).toMatch(/send_input|sendInput/)
|
|
67
|
+
expect(prompt).toMatch(/follow-up|steer|accumulate|native subagent/i)
|
|
68
|
+
// Report instruction: child should end with a structured report
|
|
69
|
+
expect(prompt).toMatch(/report/i)
|
|
70
|
+
// Concurrency: multiple children
|
|
71
|
+
expect(prompt).toMatch(/multiple.*concurrent|concurrently/i)
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
test("mentions present_content for codex only when the tool is advertised", () => {
|
|
76
|
+
const enabledPrompt = getWebContextPrompt("codex", { presentContentEnabled: true })
|
|
77
|
+
const disabledPrompt = getWebContextPrompt("codex", { presentContentEnabled: false })
|
|
78
|
+
|
|
79
|
+
expect(enabledPrompt).toContain("present_content")
|
|
80
|
+
expect(enabledPrompt).toContain("implementation plans")
|
|
81
|
+
expect(enabledPrompt).toContain("comparison tables")
|
|
82
|
+
expect(enabledPrompt).toContain("concise status summaries")
|
|
83
|
+
expect(enabledPrompt).toContain("direct embeds")
|
|
84
|
+
expect(enabledPrompt).toContain("dedicated artifact card")
|
|
85
|
+
expect(enabledPrompt).toContain("easier to scan or interact with")
|
|
86
|
+
expect(disabledPrompt).not.toContain("present_content")
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
test("never mentions present_content for claude", () => {
|
|
90
|
+
const prompt = getWebContextPrompt("claude", { presentContentEnabled: true })
|
|
91
|
+
expect(prompt).not.toContain("present_content")
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
test("mentions ask_user_question for codex only when the tool is advertised", () => {
|
|
95
|
+
const enabledPrompt = getWebContextPrompt("codex", { askUserQuestionEnabled: true })
|
|
96
|
+
const disabledPrompt = getWebContextPrompt("codex", { askUserQuestionEnabled: false })
|
|
97
|
+
|
|
98
|
+
expect(enabledPrompt).toContain("ask_user_question")
|
|
99
|
+
expect(enabledPrompt).toContain("clarification")
|
|
100
|
+
expect(enabledPrompt).toContain("user input")
|
|
101
|
+
expect(enabledPrompt).toContain("Default mode")
|
|
102
|
+
expect(enabledPrompt).toContain("request_user_input")
|
|
103
|
+
expect(disabledPrompt).not.toContain("ask_user_question")
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
test("never mentions ask_user_question for claude", () => {
|
|
107
|
+
const prompt = getWebContextPrompt("claude", { askUserQuestionEnabled: true })
|
|
108
|
+
expect(prompt).not.toContain("ask_user_question")
|
|
109
|
+
})
|
|
110
|
+
})
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types"
|
|
2
|
+
import { APP_NAME } from "./branding"
|
|
3
|
+
|
|
4
|
+
const PROVIDER_NAMES: Record<AgentProvider, string> = {
|
|
5
|
+
claude: "Claude Code",
|
|
6
|
+
codex: "Codex",
|
|
7
|
+
"claude-pty": "Claude (PTY)",
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Web-context instructions appended to the provider's system prompt.
|
|
12
|
+
* Makes the model aware it's operating within Tinkaria's browser-based interface
|
|
13
|
+
* rather than a terminal, enabling richer output choices.
|
|
14
|
+
*/
|
|
15
|
+
export function getWebContextPrompt(
|
|
16
|
+
provider: AgentProvider,
|
|
17
|
+
options?: {
|
|
18
|
+
askUserQuestionEnabled?: boolean
|
|
19
|
+
codexNativeSubagentsEnabled?: boolean
|
|
20
|
+
presentContentEnabled?: boolean
|
|
21
|
+
}
|
|
22
|
+
): string {
|
|
23
|
+
const promptLines = [
|
|
24
|
+
`You are operating within ${APP_NAME}, a web-based interface for ${PROVIDER_NAMES[provider]}.`,
|
|
25
|
+
"The transcript supports rich markdown natively, including tables, fenced code blocks, and Mermaid diagrams. Images from tool results render inline.",
|
|
26
|
+
"The UI can render rich-content cards for markdown, code, embeds, and preview artifacts. These cards support collapse/expand, copy, and opening the content in a larger overlay viewer.",
|
|
27
|
+
"Supported embed formats are: `mermaid` for rendered diagrams, `svg` for rendered graphics, `html` for rendered embeds, `iframe` for remote embeds, `diashort` for remote embeds, and `d2` for source-only previews.",
|
|
28
|
+
"Use structured rich transcript output when it improves clarity, such as tables for comparisons, markdown checklists for plans, Mermaid diagrams for flows and relationships, bounded code samples, or direct embeds when the content is meant to be viewed.",
|
|
29
|
+
"Images from tool results (screenshots, Read tool on image files) render inline as embedded images.",
|
|
30
|
+
"Markdown content may be opened in an overlay with a table of contents. Embed content may be opened in an overlay with render/source toggle and zoom controls.",
|
|
31
|
+
"Prefer direct rich embeds or structured artifact cards over bare links when the content is embeddable and the embedded form is more useful than a plain link.",
|
|
32
|
+
"The user has a sidebar with chat history and project management — multiple concurrent chats are supported.",
|
|
33
|
+
"Plan mode renders a visual approval UI with approve/reject controls.",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
if (provider === "claude") {
|
|
37
|
+
promptLines.push(
|
|
38
|
+
"Cross-session agent work is explicit orchestration between separate chats in the same project, not hidden shared memory.",
|
|
39
|
+
"spawn_agent creates a child session — its final turn result is what wait_agent returns. Instruct children to end with a structured report.",
|
|
40
|
+
"list_agents returns the caller's current spawned-agent tree with statuses so you can inspect what is running before steering or waiting.",
|
|
41
|
+
"send_input sends follow-up messages to a child to steer, accumulate incremental results, or request a summary. The child resumes with full context.",
|
|
42
|
+
"wait_agent blocks until the child completes its current turn. Call it after each send_input for iterative exchanges.",
|
|
43
|
+
"close_agent disposes the child session — always close when done.",
|
|
44
|
+
"You can run multiple children concurrently: spawn all, then wait each.",
|
|
45
|
+
"Set `fork_context` on spawn_agent when the child session should start with a bounded snapshot of the current chat transcript.",
|
|
46
|
+
"Do not assume delegated chats share live intermediate reasoning or mutable context — communicate needed context explicitly.",
|
|
47
|
+
"Delegated chats may already be busy, and orchestration is bounded by depth and concurrency limits.",
|
|
48
|
+
)
|
|
49
|
+
} else if (options?.codexNativeSubagentsEnabled) {
|
|
50
|
+
promptLines.push(
|
|
51
|
+
"Cross-session agent work uses Codex-native subagent collaboration, surfaced to Tinkaria as collabAgentToolCall transcript items.",
|
|
52
|
+
"Use the native subagent tools for spawnAgent, sendInput, wait, and closeAgent behavior; do not invent snake_case dynamic-tool calls.",
|
|
53
|
+
"A spawned child should finish with a structured report so the parent can use the result after waiting.",
|
|
54
|
+
"You can run multiple children concurrently: spawn all useful children first, then wait for the needed results.",
|
|
55
|
+
"Do not assume delegated chats share live intermediate reasoning or mutable context — communicate needed context explicitly.",
|
|
56
|
+
"Delegated chats may already be busy, and orchestration is bounded by depth and concurrency limits.",
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (provider === "codex" && options?.presentContentEnabled) {
|
|
61
|
+
promptLines.push(
|
|
62
|
+
"When you need to intentionally present a bounded artifact in the transcript, call the `present_content` dynamic tool instead of only describing it in assistant text.",
|
|
63
|
+
"Use `present_content` for artifacts that benefit from a dedicated card, such as implementation plans, comparison tables, diagrams, code samples, checklists, design notes, concise status summaries, or direct embeds.",
|
|
64
|
+
"Use `present_content` when a dedicated artifact card will make the result easier to scan or interact with."
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (provider === "codex" && options?.askUserQuestionEnabled) {
|
|
69
|
+
promptLines.push(
|
|
70
|
+
"When you need clarification, a decision, or user input before proceeding, call the `ask_user_question` dynamic tool.",
|
|
71
|
+
"`ask_user_question` is available in Default mode; do not use plan-mode-only `request_user_input` for Codex user questions."
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return promptLines.join("\n")
|
|
76
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type WorkflowTrigger = "manual" | { cron: string } | { on_event: string }
|
|
2
|
+
export type WorkflowTarget = "all" | string
|
|
3
|
+
|
|
4
|
+
export interface WorkflowStep {
|
|
5
|
+
mcp_tool: string
|
|
6
|
+
params: Record<string, unknown>
|
|
7
|
+
label?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface WorkflowDefinition {
|
|
11
|
+
id: string
|
|
12
|
+
name: string
|
|
13
|
+
trigger: WorkflowTrigger
|
|
14
|
+
target: WorkflowTarget
|
|
15
|
+
steps: WorkflowStep[]
|
|
16
|
+
on_failure: "stop" | "continue" | "rollback"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type WorkflowRunStatus = "running" | "completed" | "failed" | "cancelled"
|
|
20
|
+
|
|
21
|
+
export interface WorkflowRunStepResult {
|
|
22
|
+
stepIndex: number
|
|
23
|
+
label?: string
|
|
24
|
+
mcp_tool: string
|
|
25
|
+
repoId?: string
|
|
26
|
+
status: "pending" | "running" | "completed" | "failed" | "skipped"
|
|
27
|
+
output?: string
|
|
28
|
+
error?: string
|
|
29
|
+
startedAt?: number
|
|
30
|
+
completedAt?: number
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface WorkflowRunState {
|
|
34
|
+
runId: string
|
|
35
|
+
workflowId: string
|
|
36
|
+
workspaceId: string
|
|
37
|
+
targetRepoIds: string[]
|
|
38
|
+
status: WorkflowRunStatus
|
|
39
|
+
steps: WorkflowRunStepResult[]
|
|
40
|
+
startedAt: number
|
|
41
|
+
completedAt?: number
|
|
42
|
+
failedStep?: number
|
|
43
|
+
error?: string
|
|
44
|
+
triggeredBy: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface WorkflowRunsSnapshot {
|
|
48
|
+
workspaceId: string
|
|
49
|
+
runs: WorkflowRunState[]
|
|
50
|
+
activeRunIds: string[]
|
|
51
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { AgentProvider } from "./types"
|
|
2
|
+
|
|
3
|
+
// --- SessionIndex types ---
|
|
4
|
+
|
|
5
|
+
export type SessionStatus = "active" | "idle" | "complete" | "failed"
|
|
6
|
+
|
|
7
|
+
export interface SessionRecord {
|
|
8
|
+
chatId: string
|
|
9
|
+
intent: string
|
|
10
|
+
status: SessionStatus
|
|
11
|
+
provider: AgentProvider
|
|
12
|
+
branch: string | null
|
|
13
|
+
filesTouched: string[]
|
|
14
|
+
commandsRun: string[]
|
|
15
|
+
lastActivity: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
// --- TranscriptSearch types ---
|
|
20
|
+
|
|
21
|
+
export type SearchDocumentKind = "user_prompt" | "assistant_text" | "tool_call" | "tool_result"
|
|
22
|
+
|
|
23
|
+
export interface SearchResult {
|
|
24
|
+
chatId: string
|
|
25
|
+
timestamp: string
|
|
26
|
+
kind: SearchDocumentKind
|
|
27
|
+
fragment: string
|
|
28
|
+
score: number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// --- WorkspaceAgent types ---
|
|
32
|
+
|
|
33
|
+
export interface DelegationResult {
|
|
34
|
+
status: "ok" | "error"
|
|
35
|
+
message: string
|
|
36
|
+
data?: Record<string, unknown>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// --- CLI output types ---
|
|
40
|
+
|
|
41
|
+
export interface CliError {
|
|
42
|
+
error: string
|
|
43
|
+
code: number
|
|
44
|
+
detail?: string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// --- Coordination types ---
|
|
48
|
+
|
|
49
|
+
export type TodoPriority = "high" | "normal" | "low"
|
|
50
|
+
export type CoordinationTodoStatus = "open" | "claimed" | "complete" | "abandoned"
|
|
51
|
+
export type ClaimStatus = "active" | "released" | "conflict"
|
|
52
|
+
export type WorktreeStatus = "ready" | "assigned" | "removed"
|
|
53
|
+
|
|
54
|
+
export interface WorkspaceTodo {
|
|
55
|
+
id: string
|
|
56
|
+
description: string
|
|
57
|
+
priority: TodoPriority
|
|
58
|
+
status: CoordinationTodoStatus
|
|
59
|
+
claimedBy: string | null
|
|
60
|
+
outputs: string[]
|
|
61
|
+
createdBy: string
|
|
62
|
+
createdAt: string
|
|
63
|
+
updatedAt: string
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface WorkspaceClaim {
|
|
67
|
+
id: string
|
|
68
|
+
intent: string
|
|
69
|
+
files: string[]
|
|
70
|
+
sessionId: string
|
|
71
|
+
status: ClaimStatus
|
|
72
|
+
conflictsWith: string | null
|
|
73
|
+
createdAt: string
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface WorkspaceWorktree {
|
|
77
|
+
id: string
|
|
78
|
+
branch: string
|
|
79
|
+
baseBranch: string
|
|
80
|
+
path: string
|
|
81
|
+
assignedTo: string | null
|
|
82
|
+
status: WorktreeStatus
|
|
83
|
+
createdAt: string
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface WorkspaceRule {
|
|
87
|
+
id: string
|
|
88
|
+
content: string
|
|
89
|
+
setBy: string
|
|
90
|
+
updatedAt: string
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface WorkspaceCoordinationSnapshot {
|
|
94
|
+
workspaceId: string
|
|
95
|
+
todos: WorkspaceTodo[]
|
|
96
|
+
claims: WorkspaceClaim[]
|
|
97
|
+
worktrees: WorkspaceWorktree[]
|
|
98
|
+
rules: WorkspaceRule[]
|
|
99
|
+
lastUpdated: string
|
|
100
|
+
}
|