@sapiom/harness 0.0.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +44 -43
- package/dist/cli/auth.d.ts +26 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +39 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +163 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/consent.d.ts +15 -0
- package/dist/cli/consent.d.ts.map +1 -0
- package/dist/cli/consent.js +81 -0
- package/dist/cli/consent.js.map +1 -0
- package/dist/cli/doctor.d.ts +27 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +74 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/machine-id.d.ts +19 -0
- package/dist/cli/machine-id.d.ts.map +1 -0
- package/dist/cli/machine-id.js +75 -0
- package/dist/cli/machine-id.js.map +1 -0
- package/dist/cli/paths.d.ts +3 -0
- package/dist/cli/paths.d.ts.map +1 -0
- package/dist/cli/paths.js +11 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/settings.d.ts +26 -0
- package/dist/cli/settings.d.ts.map +1 -0
- package/dist/cli/settings.js +123 -0
- package/dist/cli/settings.js.map +1 -0
- package/dist/core/adapters/claude-code.d.ts +41 -0
- package/dist/core/adapters/claude-code.d.ts.map +1 -0
- package/dist/core/adapters/claude-code.js +238 -0
- package/dist/core/adapters/claude-code.js.map +1 -0
- package/dist/core/adapters/codex.d.ts +59 -0
- package/dist/core/adapters/codex.d.ts.map +1 -0
- package/dist/core/adapters/codex.js +319 -0
- package/dist/core/adapters/codex.js.map +1 -0
- package/dist/core/canvas-body.d.ts +45 -0
- package/dist/core/canvas-body.d.ts.map +1 -0
- package/dist/core/canvas-body.js +94 -0
- package/dist/core/canvas-body.js.map +1 -0
- package/dist/core/canvas-cache.d.ts +23 -0
- package/dist/core/canvas-cache.d.ts.map +1 -0
- package/dist/core/canvas-cache.js +64 -0
- package/dist/core/canvas-cache.js.map +1 -0
- package/dist/core/canvas-enrich.d.ts +106 -0
- package/dist/core/canvas-enrich.d.ts.map +1 -0
- package/dist/core/canvas-enrich.js +178 -0
- package/dist/core/canvas-enrich.js.map +1 -0
- package/dist/core/canvas-enrichment.d.ts +144 -0
- package/dist/core/canvas-enrichment.d.ts.map +1 -0
- package/dist/core/canvas-enrichment.js +192 -0
- package/dist/core/canvas-enrichment.js.map +1 -0
- package/dist/core/canvas-graph.d.ts +71 -0
- package/dist/core/canvas-graph.d.ts.map +1 -0
- package/dist/core/canvas-graph.js +111 -0
- package/dist/core/canvas-graph.js.map +1 -0
- package/dist/core/canvas-index-classify.d.ts +41 -0
- package/dist/core/canvas-index-classify.d.ts.map +1 -0
- package/dist/core/canvas-index-classify.js +63 -0
- package/dist/core/canvas-index-classify.js.map +1 -0
- package/dist/core/canvas-interconnections.d.ts +24 -0
- package/dist/core/canvas-interconnections.d.ts.map +1 -0
- package/dist/core/canvas-interconnections.js +96 -0
- package/dist/core/canvas-interconnections.js.map +1 -0
- package/dist/core/canvas-manifest-check.d.ts +15 -0
- package/dist/core/canvas-manifest-check.d.ts.map +1 -0
- package/dist/core/canvas-manifest-check.js +90 -0
- package/dist/core/canvas-manifest-check.js.map +1 -0
- package/dist/core/canvas-render.d.ts +73 -0
- package/dist/core/canvas-render.d.ts.map +1 -0
- package/dist/core/canvas-render.js +145 -0
- package/dist/core/canvas-render.js.map +1 -0
- package/dist/core/canvas-svg.d.ts +50 -0
- package/dist/core/canvas-svg.d.ts.map +1 -0
- package/dist/core/canvas-svg.js +240 -0
- package/dist/core/canvas-svg.js.map +1 -0
- package/dist/core/canvas-template.d.ts +43 -0
- package/dist/core/canvas-template.d.ts.map +1 -0
- package/dist/core/canvas-template.js +365 -0
- package/dist/core/canvas-template.js.map +1 -0
- package/dist/core/canvas-watcher.d.ts +25 -0
- package/dist/core/canvas-watcher.d.ts.map +1 -0
- package/dist/core/canvas-watcher.js +144 -0
- package/dist/core/canvas-watcher.js.map +1 -0
- package/dist/core/collector/batcher.d.ts +57 -0
- package/dist/core/collector/batcher.d.ts.map +1 -0
- package/dist/core/collector/batcher.js +143 -0
- package/dist/core/collector/batcher.js.map +1 -0
- package/dist/core/collector/codex-tailer.d.ts +85 -0
- package/dist/core/collector/codex-tailer.d.ts.map +1 -0
- package/dist/core/collector/codex-tailer.js +270 -0
- package/dist/core/collector/codex-tailer.js.map +1 -0
- package/dist/core/collector/normalizer.d.ts +33 -0
- package/dist/core/collector/normalizer.d.ts.map +1 -0
- package/dist/core/collector/normalizer.js +94 -0
- package/dist/core/collector/normalizer.js.map +1 -0
- package/dist/core/collector/seq.d.ts +14 -0
- package/dist/core/collector/seq.d.ts.map +1 -0
- package/dist/core/collector/seq.js +20 -0
- package/dist/core/collector/seq.js.map +1 -0
- package/dist/core/collector/store.d.ts +16 -0
- package/dist/core/collector/store.d.ts.map +1 -0
- package/dist/core/collector/store.js +30 -0
- package/dist/core/collector/store.js.map +1 -0
- package/dist/core/collector/transcript.d.ts +38 -0
- package/dist/core/collector/transcript.d.ts.map +1 -0
- package/dist/core/collector/transcript.js +110 -0
- package/dist/core/collector/transcript.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/example-seed.d.ts +34 -0
- package/dist/core/example-seed.d.ts.map +1 -0
- package/dist/core/example-seed.js +277 -0
- package/dist/core/example-seed.js.map +1 -0
- package/dist/core/inject/claude-settings.d.ts +34 -0
- package/dist/core/inject/claude-settings.d.ts.map +1 -0
- package/dist/core/inject/claude-settings.js +152 -0
- package/dist/core/inject/claude-settings.js.map +1 -0
- package/dist/core/inject/mcp-config.d.ts +26 -0
- package/dist/core/inject/mcp-config.d.ts.map +1 -0
- package/dist/core/inject/mcp-config.js +39 -0
- package/dist/core/inject/mcp-config.js.map +1 -0
- package/dist/core/inject/retention.d.ts +66 -0
- package/dist/core/inject/retention.d.ts.map +1 -0
- package/dist/core/inject/retention.js +119 -0
- package/dist/core/inject/retention.js.map +1 -0
- package/dist/core/inject/system-prompt.d.ts +11 -0
- package/dist/core/inject/system-prompt.d.ts.map +1 -0
- package/dist/core/inject/system-prompt.js +22 -0
- package/dist/core/inject/system-prompt.js.map +1 -0
- package/dist/core/macro-runner.d.ts +36 -0
- package/dist/core/macro-runner.d.ts.map +1 -0
- package/dist/core/macro-runner.js +66 -0
- package/dist/core/macro-runner.js.map +1 -0
- package/dist/core/macros.d.ts +10 -0
- package/dist/core/macros.d.ts.map +1 -0
- package/dist/core/macros.js +59 -0
- package/dist/core/macros.js.map +1 -0
- package/dist/core/path-safety.d.ts +33 -0
- package/dist/core/path-safety.d.ts.map +1 -0
- package/dist/core/path-safety.js +63 -0
- package/dist/core/path-safety.js.map +1 -0
- package/dist/core/paths.d.ts +27 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +43 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/port-detector.d.ts +69 -0
- package/dist/core/port-detector.d.ts.map +1 -0
- package/dist/core/port-detector.js +121 -0
- package/dist/core/port-detector.js.map +1 -0
- package/dist/core/session-manager.d.ts +275 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +729 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/task-manager.d.ts +138 -0
- package/dist/core/task-manager.d.ts.map +1 -0
- package/dist/core/task-manager.js +286 -0
- package/dist/core/task-manager.js.map +1 -0
- package/dist/core/task-stream.d.ts +32 -0
- package/dist/core/task-stream.d.ts.map +1 -0
- package/dist/core/task-stream.js +87 -0
- package/dist/core/task-stream.js.map +1 -0
- package/dist/core/workflow-registry.d.ts +36 -0
- package/dist/core/workflow-registry.d.ts.map +1 -0
- package/dist/core/workflow-registry.js +220 -0
- package/dist/core/workflow-registry.js.map +1 -0
- package/dist/core/workspace-context.d.ts +43 -0
- package/dist/core/workspace-context.d.ts.map +1 -0
- package/dist/core/workspace-context.js +108 -0
- package/dist/core/workspace-context.js.map +1 -0
- package/dist/core/workspace-watcher.d.ts +26 -0
- package/dist/core/workspace-watcher.d.ts.map +1 -0
- package/dist/core/workspace-watcher.js +174 -0
- package/dist/core/workspace-watcher.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/profiles/canvas-guidelines.d.ts +20 -0
- package/dist/profiles/canvas-guidelines.d.ts.map +1 -0
- package/dist/profiles/canvas-guidelines.js +48 -0
- package/dist/profiles/canvas-guidelines.js.map +1 -0
- package/dist/profiles/default.d.ts +10 -0
- package/dist/profiles/default.d.ts.map +1 -0
- package/dist/profiles/default.js +70 -0
- package/dist/profiles/default.js.map +1 -0
- package/dist/server/auth.d.ts +9 -0
- package/dist/server/auth.d.ts.map +1 -0
- package/dist/server/auth.js +28 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/canvas-render.d.ts +18 -0
- package/dist/server/canvas-render.d.ts.map +1 -0
- package/dist/server/canvas-render.js +24 -0
- package/dist/server/canvas-render.js.map +1 -0
- package/dist/server/canvas.d.ts +12 -0
- package/dist/server/canvas.d.ts.map +1 -0
- package/dist/server/canvas.js +174 -0
- package/dist/server/canvas.js.map +1 -0
- package/dist/server/events-ws.d.ts +11 -0
- package/dist/server/events-ws.d.ts.map +1 -0
- package/dist/server/events-ws.js +24 -0
- package/dist/server/events-ws.js.map +1 -0
- package/dist/server/fs.d.ts +4 -0
- package/dist/server/fs.d.ts.map +1 -0
- package/dist/server/fs.js +88 -0
- package/dist/server/fs.js.map +1 -0
- package/dist/server/index.d.ts +83 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +0 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/ingest.d.ts +74 -0
- package/dist/server/ingest.d.ts.map +1 -0
- package/dist/server/ingest.js +74 -0
- package/dist/server/ingest.js.map +1 -0
- package/dist/server/macros.d.ts +32 -0
- package/dist/server/macros.d.ts.map +1 -0
- package/dist/server/macros.js +76 -0
- package/dist/server/macros.js.map +1 -0
- package/dist/server/rest.d.ts +75 -0
- package/dist/server/rest.d.ts.map +1 -0
- package/dist/server/rest.js +235 -0
- package/dist/server/rest.js.map +1 -0
- package/dist/server/static.d.ts +8 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +36 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/terminal-ws.d.ts +9 -0
- package/dist/server/terminal-ws.d.ts.map +1 -0
- package/dist/server/terminal-ws.js +59 -0
- package/dist/server/terminal-ws.js.map +1 -0
- package/dist/server/ws-router.d.ts +16 -0
- package/dist/server/ws-router.d.ts.map +1 -0
- package/dist/server/ws-router.js +26 -0
- package/dist/server/ws-router.js.map +1 -0
- package/dist/shared/types.d.ts +485 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +80 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/web/assets/index-B9R4TzH7.css +32 -0
- package/dist/web/assets/index-Dh97QAgq.js +192 -0
- package/dist/web/index.html +27 -0
- package/package.json +84 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/server/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness server — integration point for every workstream.
|
|
3
|
+
*
|
|
4
|
+
* Single process: serves the built SPA from dist/web, the REST surface, the
|
|
5
|
+
* webhook ingest endpoint, canvas file serving, and the two WebSocket
|
|
6
|
+
* endpoints (/ws/terminal, /ws/events). Binds 127.0.0.1 only. See
|
|
7
|
+
* src/shared/types.ts for the full protocol contract.
|
|
8
|
+
*/
|
|
9
|
+
import type { HarnessAdapter, HarnessKind } from "../shared/types.js";
|
|
10
|
+
import { SessionManager, type LaunchOptsBuilder } from "../core/session-manager.js";
|
|
11
|
+
import type { HarnessIdentity } from "../cli/auth.js";
|
|
12
|
+
export interface HarnessServerOptions {
|
|
13
|
+
port: number;
|
|
14
|
+
/** Bind address. Defaults to 127.0.0.1 — the server must never listen on 0.0.0.0. */
|
|
15
|
+
host?: string;
|
|
16
|
+
/** Per-boot secret; required on WS upgrades, /api (header) and hook scripts (bearer). */
|
|
17
|
+
bootToken: string;
|
|
18
|
+
telemetryOptIn: boolean;
|
|
19
|
+
/** Sapiom identity from CLI auth; omit/null when unauthenticated or --no-auth. */
|
|
20
|
+
identity?: HarnessIdentity | null;
|
|
21
|
+
/** Stable per-install id for analytics. Defaults to a freshly loaded/created one. */
|
|
22
|
+
machineId?: string;
|
|
23
|
+
/** Override the adapter set (tests inject a stubbed claude-code binary). */
|
|
24
|
+
adapters?: Partial<Record<HarnessKind, HarnessAdapter>>;
|
|
25
|
+
/** Root directory ALL persistent harness state lives under: machine-id,
|
|
26
|
+
* sessions.json, workflows.json, events.ndjson, settings.json, generated/
|
|
27
|
+
* and sample-project/. Defaults to the real HARNESS_HOME
|
|
28
|
+
* (`~/.sapiom/harness`) — unchanged for CLI users. Tests, e2e scripts and
|
|
29
|
+
* live checks MUST pass a scratch directory here so a server boot never
|
|
30
|
+
* registers its temp projects (or anything else) into the developer's
|
|
31
|
+
* real state. The per-file options below still override individual
|
|
32
|
+
* locations; each now defaults under this root. */
|
|
33
|
+
stateRoot?: string;
|
|
34
|
+
/** Session registry file. Defaults to `<stateRoot>/sessions.json`. */
|
|
35
|
+
sessionsPath?: string;
|
|
36
|
+
buildLaunchOpts?: LaunchOptsBuilder;
|
|
37
|
+
/** Root directory per-session generated agent configs are written under —
|
|
38
|
+
* and cleaned up from (exit-time delete + boot-time sweep, see
|
|
39
|
+
* core/inject/retention.ts). Defaults to `<stateRoot>/generated`. */
|
|
40
|
+
generatedRoot?: string;
|
|
41
|
+
collectorUrl?: string;
|
|
42
|
+
/** Workflow registry file. Defaults to `<stateRoot>/workflows.json`. */
|
|
43
|
+
workflowsRegistryPath?: string;
|
|
44
|
+
/** Local analytics ndjson sink. Defaults to `<stateRoot>/events.ndjson`. */
|
|
45
|
+
eventStorePath?: string;
|
|
46
|
+
/** Overrides the home directory codex rollout discovery scans
|
|
47
|
+
* (`<home>/.codex/sessions/...`). Defaults to the real OS home dir; tests
|
|
48
|
+
* point this at a fixture tree instead of touching `~/.codex` for real. */
|
|
49
|
+
codexHomeDir?: string;
|
|
50
|
+
/** Directory the built SPA lives in. Defaults to dist/web next to this module. */
|
|
51
|
+
webDir?: string;
|
|
52
|
+
/** The directory the CLI was launched against — scanned for workflows at
|
|
53
|
+
* boot so the rail isn't empty until a manual "+ Connect", and (unless
|
|
54
|
+
* autoCreateSession is false) where the boot session is created. */
|
|
55
|
+
launchDir?: string;
|
|
56
|
+
/** Auto-create a session in launchDir once the server is listening, so the
|
|
57
|
+
* app doesn't open empty. Defaults to true; the CLI's --no-session flag
|
|
58
|
+
* sets this to false. Uses `defaultHarnessKind` for which agent to launch. */
|
|
59
|
+
autoCreateSession?: boolean;
|
|
60
|
+
/** Harness kind for the auto-created boot session. The CLI resolves this
|
|
61
|
+
* from doctor() results (claude-code if present, else codex) before
|
|
62
|
+
* calling startServer; defaults to "claude-code" for callers that don't
|
|
63
|
+
* run doctor (tests, --dev flows without a real agent). */
|
|
64
|
+
defaultHarnessKind?: HarnessKind;
|
|
65
|
+
/** Harness kinds confirmed available at CLI boot (doctor()), surfaced
|
|
66
|
+
* as-is in AppState for the SPA — see its doc comment. Omitted (not
|
|
67
|
+
* defaulted here) when the caller doesn't supply it. */
|
|
68
|
+
availableHarnesses?: HarnessKind[];
|
|
69
|
+
/** "This boot found no prior harness use on this machine" — computed by
|
|
70
|
+
* the CLI before it records the launch dir, surfaced verbatim in
|
|
71
|
+
* AppState.firstRun (see its doc comment). Omitted → absent there too. */
|
|
72
|
+
firstRun?: boolean;
|
|
73
|
+
/** Where POST /api/sample-project seeds the bundled example. Defaults to
|
|
74
|
+
* `<stateRoot>/sample-project`. */
|
|
75
|
+
sampleProjectRoot?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface HarnessServer {
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
port: number;
|
|
80
|
+
sessionManager: SessionManager;
|
|
81
|
+
}
|
|
82
|
+
export declare const startServer: (options: HarnessServerOptions) => Promise<HarnessServer>;
|
|
83
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAEV,cAAc,EACd,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAcpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiDtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACxD;;;;;;;wDAOoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC;;0EAEsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;+EAE2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;yEAEqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;mFAE+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;gEAG4D;IAC5D,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC;;6DAEyD;IACzD,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC;;+EAE2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;wCACoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC;AAuDD,eAAO,MAAM,WAAW,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,aAAa,CAynBtF,CAAC"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /ingest — receives hook payloads from the emit.cjs scripts generated
|
|
3
|
+
* by core/inject/claude-settings.ts.
|
|
4
|
+
*
|
|
5
|
+
* Self-contained: the integrator mounts this router on the main app
|
|
6
|
+
* (`app.use(createIngestRouter(deps))`) and owns everything else (session
|
|
7
|
+
* manager, WS bridges, canvas). This file has no knowledge of express app
|
|
8
|
+
* setup beyond its own router.
|
|
9
|
+
*/
|
|
10
|
+
import { type Router } from "express";
|
|
11
|
+
import type { AnalyticsEvent, HarnessKind } from "../shared/types.js";
|
|
12
|
+
import type { NormalizeContext } from "../core/collector/normalizer.js";
|
|
13
|
+
import { type SeqCounter } from "../core/collector/seq.js";
|
|
14
|
+
export interface IngestSessionContext {
|
|
15
|
+
harness: HarnessKind;
|
|
16
|
+
userId: string | null;
|
|
17
|
+
tenantId: string | null;
|
|
18
|
+
machineId: string;
|
|
19
|
+
/** Already-known agent session id, if resolved from an earlier session.start. */
|
|
20
|
+
agentSessionId: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface IngestDeps {
|
|
23
|
+
/** Per-boot secret; requests without a matching bearer token are rejected. */
|
|
24
|
+
ingestToken: string;
|
|
25
|
+
/** Raw hook payload -> AnalyticsEvent, or null to skip (e.g. PreToolUse). */
|
|
26
|
+
normalize: (hookEvent: string, hookPayload: Record<string, unknown>, context: NormalizeContext) => AnalyticsEvent | null;
|
|
27
|
+
/** Look up session context for a harnessSessionId. Undefined = unknown session, drop. */
|
|
28
|
+
resolveSession: (harnessSessionId: string) => IngestSessionContext | undefined;
|
|
29
|
+
/** Called once a session.start event reveals the agent's own session id. */
|
|
30
|
+
onAgentSessionResolved: (harnessSessionId: string, agentSessionId: string) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Called once a SessionStart(-equivalent) event is actually processed for
|
|
33
|
+
* a session — the signal that its TUI is genuinely interactive, not just
|
|
34
|
+
* that its pty exists. See `SessionManager.setReady`/`HarnessSession.ready`
|
|
35
|
+
* for what this gates. Fires alongside `onAgentSessionResolved` (same
|
|
36
|
+
* event), kept separate since "ready" and "agent session id known" are
|
|
37
|
+
* conceptually distinct even though they happen to co-occur today.
|
|
38
|
+
*/
|
|
39
|
+
onSessionReady?: (harnessSessionId: string) => void;
|
|
40
|
+
store: {
|
|
41
|
+
append(event: AnalyticsEvent): Promise<void>;
|
|
42
|
+
};
|
|
43
|
+
batcher: {
|
|
44
|
+
enqueue(event: AnalyticsEvent): void;
|
|
45
|
+
};
|
|
46
|
+
/** Optional transcript backfill for turn.completed / session.end. */
|
|
47
|
+
enrichFromTranscript?: (event: AnalyticsEvent, transcriptPath: string | undefined) => Promise<AnalyticsEvent>;
|
|
48
|
+
/** Called for every successfully normalized event (after any transcript
|
|
49
|
+
* enrichment), before it's persisted — e.g. to feed a tool.call event's
|
|
50
|
+
* command/output text to dev-server port detection. */
|
|
51
|
+
onNormalizedEvent?: (event: AnalyticsEvent) => void;
|
|
52
|
+
onError?: (err: unknown) => void;
|
|
53
|
+
/** Injectable for tests; defaults to a fresh per-router counter. */
|
|
54
|
+
seqCounter?: SeqCounter;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Exported so an in-process, non-HTTP event source (currently: the Codex
|
|
58
|
+
* transcript tailer, which has no hook script to POST here) can feed the
|
|
59
|
+
* exact same normalize -> transcript-enrich -> store -> batcher pipeline
|
|
60
|
+
* that a real hook POST goes through, without a needless HTTP round-trip
|
|
61
|
+
* back into this same server. Field names deliberately match the HTTP body
|
|
62
|
+
* shape (hookEvent/harnessSessionId/payload) so callers can construct one
|
|
63
|
+
* directly from whatever `{hookEvent, payload}` pair their event source
|
|
64
|
+
* already produces.
|
|
65
|
+
*/
|
|
66
|
+
export interface IngestRequestBody {
|
|
67
|
+
hookEvent?: string;
|
|
68
|
+
receivedAt?: string;
|
|
69
|
+
harnessSessionId?: string;
|
|
70
|
+
payload?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
export declare function processIngest(body: IngestRequestBody, deps: IngestDeps, seqCounter: SeqCounter): Promise<void>;
|
|
73
|
+
export declare function createIngestRouter(deps: IngestDeps): Router;
|
|
74
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,SAAS,EAAE,CACT,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,gBAAgB,KACtB,cAAc,GAAG,IAAI,CAAC;IAC3B,yFAAyF;IACzF,cAAc,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,oBAAoB,GAAG,SAAS,CAAC;IAC/E,4EAA4E;IAC5E,sBAAsB,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACnF;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE;QAAE,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IACxD,OAAO,EAAE;QAAE,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE,CAAC;IAClD,qEAAqE;IACrE,oBAAoB,CAAC,EAAE,CACrB,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,GAAG,SAAS,KAC/B,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B;;4DAEwD;IACxD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,oEAAoE;IACpE,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAOD,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAsB3D"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /ingest — receives hook payloads from the emit.cjs scripts generated
|
|
3
|
+
* by core/inject/claude-settings.ts.
|
|
4
|
+
*
|
|
5
|
+
* Self-contained: the integrator mounts this router on the main app
|
|
6
|
+
* (`app.use(createIngestRouter(deps))`) and owns everything else (session
|
|
7
|
+
* manager, WS bridges, canvas). This file has no knowledge of express app
|
|
8
|
+
* setup beyond its own router.
|
|
9
|
+
*/
|
|
10
|
+
import express from "express";
|
|
11
|
+
import { createSeqCounter } from "../core/collector/seq.js";
|
|
12
|
+
function bearerToken(header) {
|
|
13
|
+
if (!header || !header.startsWith("Bearer "))
|
|
14
|
+
return null;
|
|
15
|
+
return header.slice("Bearer ".length);
|
|
16
|
+
}
|
|
17
|
+
export async function processIngest(body, deps, seqCounter) {
|
|
18
|
+
const hookEvent = body.hookEvent;
|
|
19
|
+
const harnessSessionId = body.harnessSessionId;
|
|
20
|
+
if (!hookEvent || !harnessSessionId)
|
|
21
|
+
return;
|
|
22
|
+
const session = deps.resolveSession(harnessSessionId);
|
|
23
|
+
if (!session)
|
|
24
|
+
return;
|
|
25
|
+
const hookPayload = body.payload ?? {};
|
|
26
|
+
const event = deps.normalize(hookEvent, hookPayload, {
|
|
27
|
+
userId: session.userId,
|
|
28
|
+
tenantId: session.tenantId,
|
|
29
|
+
machineId: session.machineId,
|
|
30
|
+
harnessSessionId,
|
|
31
|
+
harness: session.harness,
|
|
32
|
+
agentSessionId: session.agentSessionId,
|
|
33
|
+
// Assigned here, server-side — never trust ordering from the hook script.
|
|
34
|
+
seq: seqCounter.next(harnessSessionId),
|
|
35
|
+
});
|
|
36
|
+
if (!event)
|
|
37
|
+
return;
|
|
38
|
+
let finalEvent = event;
|
|
39
|
+
if ((hookEvent === "Stop" || hookEvent === "SessionEnd") && deps.enrichFromTranscript) {
|
|
40
|
+
const transcriptPath = typeof hookPayload.transcript_path === "string" ? hookPayload.transcript_path : undefined;
|
|
41
|
+
finalEvent = await deps.enrichFromTranscript(event, transcriptPath);
|
|
42
|
+
}
|
|
43
|
+
if (hookEvent === "SessionStart") {
|
|
44
|
+
if (finalEvent.agentSessionId)
|
|
45
|
+
deps.onAgentSessionResolved(harnessSessionId, finalEvent.agentSessionId);
|
|
46
|
+
deps.onSessionReady?.(harnessSessionId);
|
|
47
|
+
}
|
|
48
|
+
deps.onNormalizedEvent?.(finalEvent);
|
|
49
|
+
await deps.store.append(finalEvent);
|
|
50
|
+
deps.batcher.enqueue(finalEvent);
|
|
51
|
+
if (hookEvent === "SessionEnd") {
|
|
52
|
+
seqCounter.reset(harnessSessionId);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function createIngestRouter(deps) {
|
|
56
|
+
const seqCounter = deps.seqCounter ?? createSeqCounter();
|
|
57
|
+
const router = express.Router();
|
|
58
|
+
router.use(express.json({ limit: "1mb" }));
|
|
59
|
+
router.post("/ingest", (req, res) => {
|
|
60
|
+
const token = bearerToken(req.headers.authorization);
|
|
61
|
+
if (token !== deps.ingestToken) {
|
|
62
|
+
res.status(401).json({ ok: false });
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Always respond fast — a slow/dead harness server must never slow the
|
|
66
|
+
// agent's hook pipeline. Processing happens after the response is sent.
|
|
67
|
+
res.status(200).json({ ok: true });
|
|
68
|
+
void processIngest(req.body, deps, seqCounter).catch((err) => {
|
|
69
|
+
deps.onError?.(err);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
return router;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/server/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Router as ExpressRouter } from "express";
|
|
2
|
+
import { type MacroDef, type WorkflowInfo } from "../shared/types.js";
|
|
3
|
+
export interface MacrosRouterDeps {
|
|
4
|
+
listMacros(): MacroDef[];
|
|
5
|
+
/** Look up a registered workflow by its path; null when not found. */
|
|
6
|
+
findWorkflow(workflowPath: string): WorkflowInfo | null;
|
|
7
|
+
/** The session's project directory, or null when the session is unknown. */
|
|
8
|
+
getSessionCwd(harnessSessionId: string): string | null;
|
|
9
|
+
/** The session's currently bound workflow path (PATCH /sessions/:id/workflow),
|
|
10
|
+
* or null when unbound / the session is unknown. Explicit `workflowPath` on
|
|
11
|
+
* the request always wins — this is only a fallback for when it's omitted. */
|
|
12
|
+
getBoundWorkflowPath(harnessSessionId: string): string | null;
|
|
13
|
+
/** Injects resolved text into the session's pty (the SessionManager). */
|
|
14
|
+
injectInput(harnessSessionId: string, text: string, submit: boolean): Promise<void>;
|
|
15
|
+
/** Runs an "inject" macro marked `execution: "background"` as a headless
|
|
16
|
+
* one-shot task (the TaskManager) instead of touching the session's pty.
|
|
17
|
+
* May throw TaskNotSupportedError (session's harness has no headless
|
|
18
|
+
* mode → 400) or TaskAlreadyRunningError (same macro already in flight
|
|
19
|
+
* for this session → 409). */
|
|
20
|
+
runBackgroundTask(harnessSessionId: string, macro: MacroDef, prompt: string): Promise<void>;
|
|
21
|
+
/** Opens a URL in the user's default browser (the `open` package). */
|
|
22
|
+
openUrl(url: string): Promise<void>;
|
|
23
|
+
/** The "visualize" macro's `render-canvas` action: force refresh of the
|
|
24
|
+
* session's bound canvas — deterministic re-render plus an enrichment
|
|
25
|
+
* task re-spawn (see core/canvas-enrich.ts). May throw
|
|
26
|
+
* TaskAlreadyRunningError (an enrichment for this workflow is already in
|
|
27
|
+
* flight → 409) or TaskNotSupportedError (the session's harness has no
|
|
28
|
+
* headless mode → 400), same as any other background-task launch. */
|
|
29
|
+
renderCanvas(harnessSessionId: string): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export declare function createMacrosRouter(deps: MacrosRouterDeps): ExpressRouter;
|
|
32
|
+
//# sourceMappingURL=macros.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macros.d.ts","sourceRoot":"","sources":["../../src/server/macros.ts"],"names":[],"mappings":"AAYA,OAAO,EAAU,KAAK,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAgB,KAAK,QAAQ,EAAwB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK1G,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,QAAQ,EAAE,CAAC;IACzB,sEAAsE;IACtE,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACxD,4EAA4E;IAC5E,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvD;;mFAE+E;IAC/E,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9D,yEAAyE;IACzE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF;;;;mCAI+B;IAC/B,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,sEAAsE;IACtE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;;;0EAKsE;IACtE,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CA+DxE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Macro execution endpoint (workstream W5's backend slice): `GET /api/macros`
|
|
3
|
+
* and `POST /api/macros/:id/run` from src/shared/types.ts. The SPA's action
|
|
4
|
+
* rail already resolves and opens "open-url" macros client-side — it can't
|
|
5
|
+
* carry the boot token through `window.open` anyway — so in practice this
|
|
6
|
+
* only ever executes "inject" macros (routed to the session's pty, or to a
|
|
7
|
+
* headless background task when the macro says `execution: "background"`)
|
|
8
|
+
* and "render-canvas", but it handles every kind per the documented
|
|
9
|
+
* contract. The integrator mounts this (with express.json()) alongside the
|
|
10
|
+
* SessionManager, TaskManager, and WorkflowRegistry.
|
|
11
|
+
*/
|
|
12
|
+
import * as path from "node:path";
|
|
13
|
+
import { Router } from "express";
|
|
14
|
+
import { CANVAS_INDEX } from "../shared/types.js";
|
|
15
|
+
import { MacroValidationError, resolveMacro } from "../core/macro-runner.js";
|
|
16
|
+
import { SessionNotReadyError } from "../core/session-manager.js";
|
|
17
|
+
import { TaskAlreadyRunningError, TaskNotSupportedError } from "../core/task-manager.js";
|
|
18
|
+
export function createMacrosRouter(deps) {
|
|
19
|
+
const router = Router();
|
|
20
|
+
router.get("/api/macros", (_req, res) => {
|
|
21
|
+
res.json(deps.listMacros());
|
|
22
|
+
});
|
|
23
|
+
router.post("/api/macros/:id/run", async (req, res) => {
|
|
24
|
+
const macro = deps.listMacros().find((m) => m.id === req.params.id);
|
|
25
|
+
if (!macro) {
|
|
26
|
+
res.status(404).json({ error: `Unknown macro '${req.params.id}'` });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const body = (req.body ?? {});
|
|
30
|
+
if (typeof body.harnessSessionId !== "string" || !body.harnessSessionId) {
|
|
31
|
+
res.status(400).json({ error: "harnessSessionId is required" });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const cwd = deps.getSessionCwd(body.harnessSessionId);
|
|
35
|
+
if (!cwd) {
|
|
36
|
+
res.status(404).json({ error: `Unknown session '${body.harnessSessionId}'` });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const workflowPath = typeof body.workflowPath === "string" ? body.workflowPath : deps.getBoundWorkflowPath(body.harnessSessionId);
|
|
40
|
+
const workflow = workflowPath ? deps.findWorkflow(workflowPath) : null;
|
|
41
|
+
try {
|
|
42
|
+
const resolved = resolveMacro(macro, {
|
|
43
|
+
workflow,
|
|
44
|
+
sessionCwd: cwd,
|
|
45
|
+
canvasPath: path.join(cwd, CANVAS_INDEX),
|
|
46
|
+
subject: body.subject,
|
|
47
|
+
});
|
|
48
|
+
if (resolved.kind === "open-url") {
|
|
49
|
+
await deps.openUrl(resolved.url);
|
|
50
|
+
}
|
|
51
|
+
else if (resolved.kind === "render-canvas") {
|
|
52
|
+
await deps.renderCanvas(body.harnessSessionId);
|
|
53
|
+
}
|
|
54
|
+
else if (macro.execution === "background") {
|
|
55
|
+
await deps.runBackgroundTask(body.harnessSessionId, macro, resolved.text);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
await deps.injectInput(body.harnessSessionId, resolved.text, resolved.submit);
|
|
59
|
+
}
|
|
60
|
+
res.json({ ok: true });
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
if (err instanceof MacroValidationError || err instanceof TaskNotSupportedError) {
|
|
64
|
+
res.status(400).json({ error: err.message });
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (err instanceof SessionNotReadyError || err instanceof TaskAlreadyRunningError) {
|
|
68
|
+
res.status(409).json({ error: err.message });
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
res.status(500).json({ error: err.message });
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return router;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=macros.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/server/macros.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAgC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAA0D,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AA+BzF,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA6B,CAAC;QAC1D,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE;gBACnC,QAAQ;gBACR,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC5C,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAChF,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,oBAAoB,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;gBAChF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,IAAI,GAAG,YAAY,oBAAoB,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;gBAClF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REST surface under /api — see src/shared/types.ts for the full contract
|
|
3
|
+
* table. This router covers the session-lifecycle endpoints (W1); workflows,
|
|
4
|
+
* macros and settings are mounted by other workstreams alongside this one.
|
|
5
|
+
*/
|
|
6
|
+
import { Router } from "express";
|
|
7
|
+
import type { BackgroundTask, HarnessAdapter, HarnessKind, HarnessSession, MacroDef, SampleProjectSeedResponse, WorkflowInfo } from "../shared/types.js";
|
|
8
|
+
import { type SessionManager } from "../core/session-manager.js";
|
|
9
|
+
export interface RestRouterOptions {
|
|
10
|
+
sessionManager: SessionManager;
|
|
11
|
+
adapters: Partial<Record<HarnessKind, HarnessAdapter>>;
|
|
12
|
+
version: string;
|
|
13
|
+
/** Sapiom identity from CLI auth; null when unauthenticated / --no-auth. */
|
|
14
|
+
identity: {
|
|
15
|
+
userId: string;
|
|
16
|
+
organizationName: string;
|
|
17
|
+
} | null;
|
|
18
|
+
listWorkflows: () => Promise<WorkflowInfo[]>;
|
|
19
|
+
listMacros: () => MacroDef[];
|
|
20
|
+
/** Look up a registered workflow by its path; null when not found. Backs
|
|
21
|
+
* PATCH /sessions/:id/workflow's validation (a bind target must already
|
|
22
|
+
* be a known workflow — scan/connect it first). */
|
|
23
|
+
findWorkflow: (workflowPath: string) => WorkflowInfo | null;
|
|
24
|
+
/** Mirrors a session's workspace state (its binding plus the full workflow
|
|
25
|
+
* registry) into HARNESS_CONTEXT_FILE in its cwd — the caller (server/
|
|
26
|
+
* index.ts) resolves `session.boundWorkflowPath` against the live
|
|
27
|
+
* registry, so this only needs the session itself. Called on every
|
|
28
|
+
* successful bind/unbind. Never throws — a write failure is logged by the
|
|
29
|
+
* implementation, not surfaced as a request error. */
|
|
30
|
+
writeWorkspaceContext: (session: HarnessSession) => Promise<void>;
|
|
31
|
+
/** Re-renders the session's canvas (its bound workflow, or the workspace
|
|
32
|
+
* overview when unbound) via the deterministic pipeline — called after a
|
|
33
|
+
* successful bind/unbind so the pane reflects the new selection without
|
|
34
|
+
* waiting on the agent to run the Visualize macro itself. Never throws
|
|
35
|
+
* (core/canvas-render.ts's contract); defaults to a no-op for tests that
|
|
36
|
+
* don't care about canvas output. */
|
|
37
|
+
renderCanvas?: (session: HarnessSession) => Promise<void>;
|
|
38
|
+
/** Called after a settings PATCH persists a changed telemetryOptIn, so the
|
|
39
|
+
* live collector batcher can be gated without a server restart. */
|
|
40
|
+
onTelemetryOptInChange?: (optIn: boolean) => void;
|
|
41
|
+
/** Called (fire-and-forget) after a session is created, with its cwd and id
|
|
42
|
+
* — lets the integrator scan that directory for workflows (so opening a
|
|
43
|
+
* session in a new project discovers them without a manual "+ Connect")
|
|
44
|
+
* and, when the scan discovers one, render the new session's canvas. */
|
|
45
|
+
onSessionCreated?: (cwd: string, harnessSessionId: string) => void;
|
|
46
|
+
/** The directory the CLI was launched against — surfaced in AppState so the
|
|
47
|
+
* SPA can prefill the new-session modal with it. */
|
|
48
|
+
launchDir: string;
|
|
49
|
+
/** Background tasks known to this boot (TaskManager.list) — surfaced in
|
|
50
|
+
* AppState so a page load mid-run shows the canvas activity state without
|
|
51
|
+
* waiting for the next task.status frame. Optional: omitted by callers
|
|
52
|
+
* without a TaskManager (tests), leaving AppState.tasks absent. */
|
|
53
|
+
listTasks?: () => BackgroundTask[];
|
|
54
|
+
/** Harness kinds confirmed available at CLI boot (doctor()), in
|
|
55
|
+
* default-preference order. Omitted (rather than defaulted here) when the
|
|
56
|
+
* caller doesn't supply it, so AppState.availableHarnesses stays absent in
|
|
57
|
+
* that case too — see its doc comment for how consumers should treat that. */
|
|
58
|
+
availableHarnesses?: HarnessKind[];
|
|
59
|
+
/** "This boot found no prior harness use" — computed by the CLI before it
|
|
60
|
+
* mutated any state, surfaced verbatim in AppState.firstRun. Omitted when
|
|
61
|
+
* the caller doesn't supply it (tests), leaving AppState.firstRun absent. */
|
|
62
|
+
firstRun?: boolean;
|
|
63
|
+
/** Seeds (or reuses) the bundled example project and returns where it
|
|
64
|
+
* landed — backs POST /api/sample-project (the welcome panel's "Run the
|
|
65
|
+
* sample project"). Optional so callers without the real seeder (tests)
|
|
66
|
+
* get a 501 from the route instead of having to stub one. */
|
|
67
|
+
seedSampleProject?: () => Promise<SampleProjectSeedResponse>;
|
|
68
|
+
/** Where GET/PATCH /settings (and /state's settings read) persist to.
|
|
69
|
+
* Omitted, the real `~/.sapiom/harness/settings.json` — the integrator
|
|
70
|
+
* (server/index.ts) passes the path under its resolved state root so an
|
|
71
|
+
* isolated boot never reads or writes the developer's real settings. */
|
|
72
|
+
settingsPath?: string;
|
|
73
|
+
}
|
|
74
|
+
export declare function createRestRouter(options: RestRouterOptions): Router;
|
|
75
|
+
//# sourceMappingURL=rest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/server/rest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,KAAK,EAEV,cAAc,EAGd,cAAc,EACd,WAAW,EACX,cAAc,EAGd,QAAQ,EACR,yBAAyB,EAEzB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAuBvF,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,aAAa,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC7B;;wDAEoD;IACpD,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;IAC5D;;;;;2DAKuD;IACvD,qBAAqB,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE;;;;;0CAKsC;IACtC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D;uEACmE;IACnE,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD;;;4EAGwE;IACxE,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE;wDACoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB;;;wEAGoE;IACpE,SAAS,CAAC,EAAE,MAAM,cAAc,EAAE,CAAC;IACnC;;;kFAG8E;IAC9E,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACnC;;iFAE6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;iEAG6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC7D;;;4EAGwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAuNnE"}
|