@bradheitmann/odin-sentinel 0.4.12 → 0.5.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/README.md +24 -17
- package/dist/src/harness-pacing/index.d.ts +10 -0
- package/dist/src/harness-pacing/index.js +11 -0
- package/dist/src/harness-pacing/index.js.map +1 -0
- package/dist/src/harness-pacing/recommend.d.ts +28 -0
- package/dist/src/harness-pacing/recommend.js +74 -0
- package/dist/src/harness-pacing/recommend.js.map +1 -0
- package/dist/src/harness-pacing/schema.d.ts +28 -0
- package/dist/src/harness-pacing/schema.js +2 -0
- package/dist/src/harness-pacing/schema.js.map +1 -0
- package/dist/src/harness-pacing/storage.d.ts +32 -0
- package/dist/src/harness-pacing/storage.js +74 -0
- package/dist/src/harness-pacing/storage.js.map +1 -0
- package/dist/src/mcp/server.js +29 -2
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/odin-watch/backends/cmux.d.ts +6 -0
- package/dist/src/odin-watch/backends/cmux.js +39 -0
- package/dist/src/odin-watch/backends/cmux.js.map +1 -0
- package/dist/src/odin-watch/backends/tmux.d.ts +6 -0
- package/dist/src/odin-watch/backends/tmux.js +40 -0
- package/dist/src/odin-watch/backends/tmux.js.map +1 -0
- package/dist/src/odin-watch/classifier.d.ts +27 -0
- package/dist/src/odin-watch/classifier.js +182 -0
- package/dist/src/odin-watch/classifier.js.map +1 -0
- package/dist/src/odin-watch/index.d.ts +2 -0
- package/dist/src/odin-watch/index.js +200 -0
- package/dist/src/odin-watch/index.js.map +1 -0
- package/dist/src/odin-watch/snapshotter.d.ts +11 -0
- package/dist/src/odin-watch/snapshotter.js +2 -0
- package/dist/src/odin-watch/snapshotter.js.map +1 -0
- package/dist/src/odin-watch/writers.d.ts +8 -0
- package/dist/src/odin-watch/writers.js +27 -0
- package/dist/src/odin-watch/writers.js.map +1 -0
- package/dist/src/protocol/index.d.ts +3 -1
- package/dist/src/protocol/index.js +4 -1
- package/dist/src/protocol/index.js.map +1 -1
- package/dist/src/protocol/repository.d.ts +14 -0
- package/dist/src/protocol/repository.js +25 -1
- package/dist/src/protocol/repository.js.map +1 -1
- package/dist/src/protocol/schemas.d.ts +144 -0
- package/dist/src/protocol/schemas.js +23 -0
- package/dist/src/protocol/schemas.js.map +1 -1
- package/dist/src/protocol/service.d.ts +19 -2
- package/dist/src/protocol/service.js +89 -3
- package/dist/src/protocol/service.js.map +1 -1
- package/dist/src/protocol/surface-layout.d.ts +20 -0
- package/dist/src/protocol/surface-layout.js +20 -0
- package/dist/src/protocol/surface-layout.js.map +1 -1
- package/dist/src/protocol/version.d.ts +2 -2
- package/dist/src/protocol/version.js +2 -2
- package/dist/src/protocol/version.js.map +1 -1
- package/dist/src/utils/execFileNoThrow.d.ts +5 -0
- package/dist/src/utils/execFileNoThrow.js +18 -0
- package/dist/src/utils/execFileNoThrow.js.map +1 -0
- package/docs/adapters/cmux-adapter.md +168 -0
- package/docs/adapters/herdr-adapter.md +150 -0
- package/docs/adapters/minimux-adapter.md +152 -0
- package/docs/adapters/plain-terminal.md +80 -0
- package/docs/adapters/tmux-adapter.md +150 -0
- package/docs/guides/quick-start.md +7 -7
- package/docs/guides/quickstart-prompts.md +4 -4
- package/docs/lattice/odin-lattice-design.md +555 -0
- package/docs/reference/distribution.md +11 -5
- package/docs/reference/public-surface-audit.md +3 -3
- package/package.json +7 -5
- package/plugins/odin-scp/.claude-plugin/plugin.json +2 -2
- package/plugins/odin-scp/README.md +6 -6
- package/plugins/odin-scp/skills/odin-scp/CHANGELOG.md +12 -0
- package/plugins/odin-scp/skills/odin-scp/SKILL.md +196 -3
- package/plugins/odin-scp/skills/odin-scp/references/canonical-introduction-prompt.md +0 -2
- package/protocol/SCP.md +2 -2
- package/protocol/bootstrap-skill.md +196 -3
- package/protocol/closeout.yaml +1 -1
- package/protocol/delegation.yaml +1 -1
- package/protocol/mission-frontrun/droids-scrutiny-feature-reviewer.md +70 -0
- package/protocol/mission-frontrun/orchestrator-contract.md +70 -0
- package/protocol/mission-frontrun/scrutiny-feature-reviewer-contract.md +73 -0
- package/protocol/mission-frontrun/scrutiny-validator-contract.md +77 -0
- package/protocol/mission-frontrun/worker-contract.md +66 -0
- package/protocol/model-profiles.yaml +8 -1
- package/protocol/receipts/boot-receipt.yaml +13 -0
- package/protocol/role-cards/dev-worker.md +74 -0
- package/protocol/role-cards/exec-asst.md +83 -0
- package/protocol/role-cards/exec-pm.md +66 -0
- package/protocol/role-cards/qa-worker.md +71 -0
- package/protocol/role-cards/team-pm.md +67 -0
- package/protocol/roles.yaml +1 -1
- package/protocol/skill-references/canonical-introduction-prompt.md +0 -2
- package/protocol/topology.yaml +1 -1
- package/scripts/audit/public-surface.mjs +27 -2
- package/scripts/audit/verify-pack.mjs +121 -5
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "odin-scp",
|
|
11
11
|
"source": "./plugins/odin-scp",
|
|
12
12
|
"description": "Multi-agent team governance: self-bootstrap, role topology, boot receipts, delegation, CMUX delivery proof, heartbeat cadence, adversarial QA, finish audit. Auto-wires the @bradheitmann/odin-sentinel MCP server.",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.5.0",
|
|
14
14
|
"category": "agents",
|
|
15
15
|
"tags": [
|
|
16
16
|
"mcp",
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ODIN Sentinel
|
|
2
2
|
|
|
3
|
-
**Portable MCP governance protocol for visible multi-agent teams:
|
|
3
|
+
**Portable MCP governance protocol for visible multi-agent teams: 29 tools, 18 resources, role topology, readiness gates, ODIN watchers, receipts, delegation, and closeout over stdio.**
|
|
4
4
|
|
|
5
5
|
ODIN Sentinel is a local stdio MCP server plus a portable coordination protocol
|
|
6
6
|
for visible agent teams. It gives agents a shared roster, startup packet,
|
|
@@ -39,7 +39,7 @@ For a starter team shape, read [docs/guides/recommended-starter-team.md](docs/gu
|
|
|
39
39
|
Before launching persistent governed roles, confirm:
|
|
40
40
|
|
|
41
41
|
- Node.js satisfies `package.json` (`>=22.13.0`).
|
|
42
|
-
- `@bradheitmann/odin-sentinel` is installed or available through a pinned
|
|
42
|
+
- `@bradheitmann/odin-sentinel@0.5.0` is installed or available through a pinned
|
|
43
43
|
`pnpm dlx` or `npx` command.
|
|
44
44
|
- The ODIN MCP server is configured in each selected harness.
|
|
45
45
|
- The SCP native skill is installed where supported, or the full prompt/resource
|
|
@@ -58,29 +58,29 @@ not be launched until readiness passes or the PM records a waiver/substitution.
|
|
|
58
58
|
Recommended zero-install path:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
pnpm dlx --package @bradheitmann/odin-sentinel@0.
|
|
61
|
+
pnpm dlx --package @bradheitmann/odin-sentinel@0.5.0 odin-sentinel-mcp
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
Supported npm global install:
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
npm i -g @bradheitmann/odin-sentinel@0.
|
|
67
|
+
npm i -g @bradheitmann/odin-sentinel@0.5.0
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
Supported npx zero-install path:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
npx -y -p @bradheitmann/odin-sentinel@0.
|
|
73
|
+
npx -y -p @bradheitmann/odin-sentinel@0.5.0 odin-sentinel-mcp
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
A stdio smoke test that does not require an MCP host:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}\n' \
|
|
80
|
-
| pnpm dlx --package @bradheitmann/odin-sentinel@0.
|
|
80
|
+
| pnpm dlx --package @bradheitmann/odin-sentinel@0.5.0 odin-sentinel-mcp
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
A successful response includes `"serverInfo":{"name":"odin-sentinel","version":"0.
|
|
83
|
+
A successful response includes `"serverInfo":{"name":"odin-sentinel","version":"0.5.0"}`.
|
|
84
84
|
Minimum compatible child MCP version for governed-team docs is `0.4.5`.
|
|
85
85
|
|
|
86
86
|
## MCP Host Examples
|
|
@@ -88,7 +88,7 @@ Minimum compatible child MCP version for governed-team docs is `0.4.5`.
|
|
|
88
88
|
Claude Code:
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
|
-
claude mcp add odin-sentinel -- pnpm dlx --package @bradheitmann/odin-sentinel@0.
|
|
91
|
+
claude mcp add odin-sentinel -- pnpm dlx --package @bradheitmann/odin-sentinel@0.5.0 odin-sentinel-mcp
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
Codex (`~/.codex/config.toml`):
|
|
@@ -96,7 +96,7 @@ Codex (`~/.codex/config.toml`):
|
|
|
96
96
|
```toml
|
|
97
97
|
[mcp_servers.odin-sentinel]
|
|
98
98
|
command = "pnpm"
|
|
99
|
-
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
99
|
+
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"]
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Cursor / VS Code / Droid / Crush (`mcpServers` JSON):
|
|
@@ -106,7 +106,7 @@ Cursor / VS Code / Droid / Crush (`mcpServers` JSON):
|
|
|
106
106
|
"mcpServers": {
|
|
107
107
|
"odin-sentinel": {
|
|
108
108
|
"command": "pnpm",
|
|
109
|
-
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
109
|
+
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"]
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -118,7 +118,7 @@ Zed (`~/.config/zed/settings.json`):
|
|
|
118
118
|
"odin-sentinel": {
|
|
119
119
|
"source": "custom",
|
|
120
120
|
"command": "pnpm",
|
|
121
|
-
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
121
|
+
"args": ["dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"]
|
|
122
122
|
}
|
|
123
123
|
```
|
|
124
124
|
|
|
@@ -128,7 +128,7 @@ Goose (`~/.config/goose/config.yaml`):
|
|
|
128
128
|
odin-sentinel:
|
|
129
129
|
type: stdio
|
|
130
130
|
cmd: pnpm
|
|
131
|
-
args: ["dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
131
|
+
args: ["dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"]
|
|
132
132
|
enabled: true
|
|
133
133
|
```
|
|
134
134
|
|
|
@@ -139,7 +139,7 @@ OpenCode (`~/.config/opencode/opencode.json`):
|
|
|
139
139
|
"mcp": {
|
|
140
140
|
"odin-sentinel": {
|
|
141
141
|
"type": "local",
|
|
142
|
-
"command": ["pnpm", "dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
142
|
+
"command": ["pnpm", "dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"],
|
|
143
143
|
"enabled": true
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -152,13 +152,13 @@ OpenHands (`~/.openhands/config.toml`):
|
|
|
152
152
|
[mcp.stdio_servers.odin-sentinel]
|
|
153
153
|
name = "odin-sentinel"
|
|
154
154
|
command = "pnpm"
|
|
155
|
-
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.
|
|
155
|
+
args = ["dlx", "--package", "@bradheitmann/odin-sentinel@0.5.0", "odin-sentinel-mcp"]
|
|
156
156
|
```
|
|
157
157
|
|
|
158
158
|
If a host cannot run `pnpm`, use the equivalent pinned npx command:
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
npx -y -p @bradheitmann/odin-sentinel@0.
|
|
161
|
+
npx -y -p @bradheitmann/odin-sentinel@0.5.0 odin-sentinel-mcp
|
|
162
162
|
```
|
|
163
163
|
|
|
164
164
|
## MCP, Skill, Plugin, Prompt Fallback
|
|
@@ -193,7 +193,7 @@ using them for real work.
|
|
|
193
193
|
Local operator planning folders may be useful private workspaces, but they are
|
|
194
194
|
not shipped product internals and are not required for public users.
|
|
195
195
|
|
|
196
|
-
## Provided MCP Resources (
|
|
196
|
+
## Provided MCP Resources (18)
|
|
197
197
|
|
|
198
198
|
- `odin://protocol/main`
|
|
199
199
|
- `odin://protocol/roles`
|
|
@@ -208,12 +208,18 @@ not shipped product internals and are not required for public users.
|
|
|
208
208
|
- `odin://protocol/skill-references/canonical-introduction-prompt`
|
|
209
209
|
- `odin://protocol/skill-references/harness-skill-targets`
|
|
210
210
|
- `odin://protocol/skill-references/team-bootstrap-runbook`
|
|
211
|
+
- `odin://protocol/role-cards/exec-pm`
|
|
212
|
+
- `odin://protocol/role-cards/team-pm`
|
|
213
|
+
- `odin://protocol/role-cards/dev-worker`
|
|
214
|
+
- `odin://protocol/role-cards/qa-worker`
|
|
215
|
+
- `odin://protocol/role-cards/exec-asst`
|
|
211
216
|
|
|
212
|
-
## Provided MCP Tools (
|
|
217
|
+
## Provided MCP Tools (29)
|
|
213
218
|
|
|
214
219
|
- `odin.get_version`
|
|
215
220
|
- `odin.get_startup_packet`
|
|
216
221
|
- `odin.get_role_profile`
|
|
222
|
+
- `odin.get_role_card`
|
|
217
223
|
- `odin.get_bootstrap_skill`
|
|
218
224
|
- `odin.get_boot_receipt_schema`
|
|
219
225
|
- `odin.get_boot_receipt_examples`
|
|
@@ -238,6 +244,7 @@ not shipped product internals and are not required for public users.
|
|
|
238
244
|
- `odin.preview_telemetry_redaction`
|
|
239
245
|
- `odin.submit_session_report`
|
|
240
246
|
- `odin.get_telemetry_config`
|
|
247
|
+
- `odin.get_mission_frontrun_pack`
|
|
241
248
|
|
|
242
249
|
## Development
|
|
243
250
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-pacing — public module export surface.
|
|
3
|
+
*
|
|
4
|
+
* Consumers import from "odin/harness-pacing" or directly from this file.
|
|
5
|
+
* All public types and functions are re-exported here; nothing else is public.
|
|
6
|
+
*/
|
|
7
|
+
export type { HarnessProfile, PacingRecommendation } from "./schema.js";
|
|
8
|
+
export type { HarnessPacingEvent, PacingEventType } from "../protocol/schemas.js";
|
|
9
|
+
export { getProfilePath, buildDefaultProfile, readProfile, appendEvent, LOCAL_PROFILE_BASE, } from "./storage.js";
|
|
10
|
+
export { recommend, loadSeed, applyCrashOverride } from "./recommend.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness-pacing — public module export surface.
|
|
3
|
+
*
|
|
4
|
+
* Consumers import from "odin/harness-pacing" or directly from this file.
|
|
5
|
+
* All public types and functions are re-exported here; nothing else is public.
|
|
6
|
+
*/
|
|
7
|
+
// Storage layer
|
|
8
|
+
export { getProfilePath, buildDefaultProfile, readProfile, appendEvent, LOCAL_PROFILE_BASE, } from "./storage.js";
|
|
9
|
+
// Recommendation engine
|
|
10
|
+
export { recommend, loadSeed, applyCrashOverride } from "./recommend.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/harness-pacing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,gBAAgB;AAChB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* recommend() — conservative pacing recommendation query.
|
|
3
|
+
*
|
|
4
|
+
* Decision logic:
|
|
5
|
+
* 1. Local runtime profile (.odin/harness-pacing/) takes precedence over seeds.
|
|
6
|
+
* 2. If crash samples are present in the local profile, the smallest safe bucket
|
|
7
|
+
* (0-100 words) is enforced and slash_command_bundling is set to "avoid".
|
|
8
|
+
* 3. Seed profile is returned when no local profile exists.
|
|
9
|
+
* 4. Unknown harness_id returns a conservative fallback (never throws).
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
12
|
+
import type { PacingRecommendation, HarnessProfile } from "./schema.js";
|
|
13
|
+
/** Load a seed profile by harness_id. Returns null when no seed exists. */
|
|
14
|
+
export declare function loadSeed(harness_id: string, seedDir?: string, fsRead?: typeof readFileSync, fsExists?: typeof existsSync): HarnessProfile | null;
|
|
15
|
+
/**
|
|
16
|
+
* Apply conservative crash override: when a profile has crash signatures the
|
|
17
|
+
* recommendation must use the smallest safe bucket, longest safe wait, and
|
|
18
|
+
* must mark slash-command bundling as "avoid".
|
|
19
|
+
*
|
|
20
|
+
* This function is pure and exported for unit testing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function applyCrashOverride(rec: PacingRecommendation, crashCount: number): PacingRecommendation;
|
|
23
|
+
/**
|
|
24
|
+
* Return a PacingRecommendation for the given harness_id.
|
|
25
|
+
* Optional _role parameter is reserved for future role-specific tuning.
|
|
26
|
+
* Never throws — unknown harnesses receive conservative defaults.
|
|
27
|
+
*/
|
|
28
|
+
export declare function recommend(harness_id: string, _role?: string): PacingRecommendation;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* recommend() — conservative pacing recommendation query.
|
|
3
|
+
*
|
|
4
|
+
* Decision logic:
|
|
5
|
+
* 1. Local runtime profile (.odin/harness-pacing/) takes precedence over seeds.
|
|
6
|
+
* 2. If crash samples are present in the local profile, the smallest safe bucket
|
|
7
|
+
* (0-100 words) is enforced and slash_command_bundling is set to "avoid".
|
|
8
|
+
* 3. Seed profile is returned when no local profile exists.
|
|
9
|
+
* 4. Unknown harness_id returns a conservative fallback (never throws).
|
|
10
|
+
*/
|
|
11
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { readProfile } from "./storage.js";
|
|
14
|
+
/** Resolved at module load via import.meta.url so seeds are found relative to this file. */
|
|
15
|
+
const SEED_DIR = new URL("./seeds/", import.meta.url).pathname;
|
|
16
|
+
/** Load a seed profile by harness_id. Returns null when no seed exists. */
|
|
17
|
+
export function loadSeed(harness_id, seedDir = SEED_DIR, fsRead = readFileSync, fsExists = existsSync) {
|
|
18
|
+
const path = join(seedDir, `${harness_id}.json`);
|
|
19
|
+
if (!fsExists(path))
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(fsRead(path, "utf8"));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Apply conservative crash override: when a profile has crash signatures the
|
|
30
|
+
* recommendation must use the smallest safe bucket, longest safe wait, and
|
|
31
|
+
* must mark slash-command bundling as "avoid".
|
|
32
|
+
*
|
|
33
|
+
* This function is pure and exported for unit testing.
|
|
34
|
+
*/
|
|
35
|
+
export function applyCrashOverride(rec, crashCount) {
|
|
36
|
+
if (crashCount === 0)
|
|
37
|
+
return rec;
|
|
38
|
+
return {
|
|
39
|
+
...rec,
|
|
40
|
+
max_word_bucket: "0-100 words",
|
|
41
|
+
min_idle_wait_seconds: Math.max(rec.min_idle_wait_seconds, 5),
|
|
42
|
+
slash_command_bundling: "avoid",
|
|
43
|
+
notes: rec.notes.includes("crash")
|
|
44
|
+
? rec.notes
|
|
45
|
+
: `${rec.notes}; crash override applied (${crashCount} known crash signature(s))`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Return a PacingRecommendation for the given harness_id.
|
|
50
|
+
* Optional _role parameter is reserved for future role-specific tuning.
|
|
51
|
+
* Never throws — unknown harnesses receive conservative defaults.
|
|
52
|
+
*/
|
|
53
|
+
export function recommend(harness_id, _role) {
|
|
54
|
+
// 1. Local profile takes precedence over seed.
|
|
55
|
+
const local = readProfile(harness_id);
|
|
56
|
+
if (local) {
|
|
57
|
+
return applyCrashOverride(local.recommended, local.crash_signatures.length);
|
|
58
|
+
}
|
|
59
|
+
// 2. Seed profile.
|
|
60
|
+
const seed = loadSeed(harness_id);
|
|
61
|
+
if (seed) {
|
|
62
|
+
return applyCrashOverride(seed.recommended, seed.crash_signatures.length);
|
|
63
|
+
}
|
|
64
|
+
// 3. Conservative fallback for unknown harnesses — never throws.
|
|
65
|
+
return {
|
|
66
|
+
harness_id,
|
|
67
|
+
max_word_bucket: "0-100 words",
|
|
68
|
+
min_idle_wait_seconds: 5,
|
|
69
|
+
slash_command_bundling: "unknown",
|
|
70
|
+
multi_phase_prompting: "unknown",
|
|
71
|
+
notes: "No profile data available; using conservative defaults",
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=recommend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../../src/harness-pacing/recommend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,4FAA4F;AAC5F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAE/D,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CACtB,UAAkB,EAClB,OAAO,GAAG,QAAQ,EAClB,SAA8B,YAAY,EAC1C,WAA8B,UAAU;IAExC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW,CAAmB,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAyB,EAAE,UAAkB;IAC9E,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACjC,OAAO;QACL,GAAG,GAAG;QACN,eAAe,EAAE,aAAa;QAC9B,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC7D,sBAAsB,EAAE,OAAO;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,KAAK;YACX,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,6BAA6B,UAAU,4BAA4B;KACpF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,UAAkB,EAAE,KAAc;IAC1D,+CAA+C;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,mBAAmB;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,iEAAiE;IACjE,OAAO;QACL,UAAU;QACV,eAAe,EAAE,aAAa;QAC9B,qBAAqB,EAAE,CAAC;QACxB,sBAAsB,EAAE,SAAS;QACjC,qBAAqB,EAAE,SAAS;QAChC,KAAK,EAAE,wDAAwD;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type { HarnessPacingEvent, PacingEventType } from "../protocol/schemas.js";
|
|
2
|
+
/**
|
|
3
|
+
* A per-harness pacing profile built from accumulated HarnessPacingEvents.
|
|
4
|
+
* Stored locally under .odin/harness-pacing/<harness_id>/profile.json.
|
|
5
|
+
* Seed profiles live at src/harness-pacing/seeds/<harness_id>.json.
|
|
6
|
+
*/
|
|
7
|
+
export interface HarnessProfile {
|
|
8
|
+
harness_id: string;
|
|
9
|
+
version: string;
|
|
10
|
+
last_updated: string;
|
|
11
|
+
basis_note?: string;
|
|
12
|
+
samples_total: number;
|
|
13
|
+
events: import("../protocol/schemas.js").HarnessPacingEvent[];
|
|
14
|
+
crash_signatures: string[];
|
|
15
|
+
recommended: PacingRecommendation;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Conservative pacing recommendation derived from a HarnessProfile.
|
|
19
|
+
* Crash samples force the smallest safe bucket and set mitigation notes.
|
|
20
|
+
*/
|
|
21
|
+
export interface PacingRecommendation {
|
|
22
|
+
harness_id: string;
|
|
23
|
+
max_word_bucket: string;
|
|
24
|
+
min_idle_wait_seconds: number;
|
|
25
|
+
slash_command_bundling: "allowed" | "avoid" | "unknown";
|
|
26
|
+
multi_phase_prompting: "allowed" | "avoid" | "unknown";
|
|
27
|
+
notes: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/harness-pacing/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage layer for harness pacing profiles and events.
|
|
3
|
+
*
|
|
4
|
+
* Runtime profile directory: .odin/harness-pacing/<harness_id>/profile.json
|
|
5
|
+
* Events store METADATA ONLY — prompt_text_stored: false at all times.
|
|
6
|
+
*
|
|
7
|
+
* Pure logic is separated from fs I/O so unit tests can stub the fs layer.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
10
|
+
import type { HarnessProfile } from "./schema.js";
|
|
11
|
+
import type { HarnessPacingEvent } from "../protocol/schemas.js";
|
|
12
|
+
/** Default runtime profile base — kept outside audit-reserved local state paths. */
|
|
13
|
+
export declare const LOCAL_PROFILE_BASE = ".odin/harness-pacing";
|
|
14
|
+
/** Absolute path to the profile JSON for a given harness_id. */
|
|
15
|
+
export declare function getProfilePath(harness_id: string, base?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Build the initial empty profile for a harness_id.
|
|
18
|
+
* Exported for testability — callers that need a blank slate can use this
|
|
19
|
+
* rather than re-constructing the default shape by hand.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildDefaultProfile(harness_id: string): HarnessProfile;
|
|
22
|
+
/**
|
|
23
|
+
* Read the local runtime profile for harness_id.
|
|
24
|
+
* Returns null when no profile exists (never throws).
|
|
25
|
+
*/
|
|
26
|
+
export declare function readProfile(harness_id: string, base?: string, fsRead?: typeof readFileSync, fsExists?: typeof existsSync): HarnessProfile | null;
|
|
27
|
+
/**
|
|
28
|
+
* Append a pacing event to the local runtime profile for the event's harness_id.
|
|
29
|
+
* Creates the profile directory and file if they do not exist.
|
|
30
|
+
* Crash events: adds crash_signature_hash to the profile's crash_signatures list.
|
|
31
|
+
*/
|
|
32
|
+
export declare function appendEvent(event: HarnessPacingEvent, base?: string, fsRead?: typeof readFileSync, fsExists?: typeof existsSync, fsWrite?: typeof writeFileSync, fsMkdir?: typeof mkdirSync): void;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage layer for harness pacing profiles and events.
|
|
3
|
+
*
|
|
4
|
+
* Runtime profile directory: .odin/harness-pacing/<harness_id>/profile.json
|
|
5
|
+
* Events store METADATA ONLY — prompt_text_stored: false at all times.
|
|
6
|
+
*
|
|
7
|
+
* Pure logic is separated from fs I/O so unit tests can stub the fs layer.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
/** Default runtime profile base — kept outside audit-reserved local state paths. */
|
|
12
|
+
export const LOCAL_PROFILE_BASE = ".odin/harness-pacing";
|
|
13
|
+
/** Absolute path to the profile JSON for a given harness_id. */
|
|
14
|
+
export function getProfilePath(harness_id, base = LOCAL_PROFILE_BASE) {
|
|
15
|
+
return join(base, harness_id, "profile.json");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Build the initial empty profile for a harness_id.
|
|
19
|
+
* Exported for testability — callers that need a blank slate can use this
|
|
20
|
+
* rather than re-constructing the default shape by hand.
|
|
21
|
+
*/
|
|
22
|
+
export function buildDefaultProfile(harness_id) {
|
|
23
|
+
return {
|
|
24
|
+
harness_id,
|
|
25
|
+
version: "1.0",
|
|
26
|
+
last_updated: new Date().toISOString(),
|
|
27
|
+
samples_total: 0,
|
|
28
|
+
events: [],
|
|
29
|
+
crash_signatures: [],
|
|
30
|
+
recommended: {
|
|
31
|
+
harness_id,
|
|
32
|
+
max_word_bucket: "0-100 words",
|
|
33
|
+
min_idle_wait_seconds: 3,
|
|
34
|
+
slash_command_bundling: "unknown",
|
|
35
|
+
multi_phase_prompting: "unknown",
|
|
36
|
+
notes: "No data yet — using conservative defaults",
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Read the local runtime profile for harness_id.
|
|
42
|
+
* Returns null when no profile exists (never throws).
|
|
43
|
+
*/
|
|
44
|
+
export function readProfile(harness_id, base = LOCAL_PROFILE_BASE, fsRead = readFileSync, fsExists = existsSync) {
|
|
45
|
+
const path = getProfilePath(harness_id, base);
|
|
46
|
+
if (!fsExists(path))
|
|
47
|
+
return null;
|
|
48
|
+
try {
|
|
49
|
+
return JSON.parse(fsRead(path, "utf8"));
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Append a pacing event to the local runtime profile for the event's harness_id.
|
|
57
|
+
* Creates the profile directory and file if they do not exist.
|
|
58
|
+
* Crash events: adds crash_signature_hash to the profile's crash_signatures list.
|
|
59
|
+
*/
|
|
60
|
+
export function appendEvent(event, base = LOCAL_PROFILE_BASE, fsRead = readFileSync, fsExists = existsSync, fsWrite = writeFileSync, fsMkdir = mkdirSync) {
|
|
61
|
+
const dir = join(base, event.harness_id);
|
|
62
|
+
fsMkdir(dir, { recursive: true });
|
|
63
|
+
const existing = readProfile(event.harness_id, base, fsRead, fsExists) ?? buildDefaultProfile(event.harness_id);
|
|
64
|
+
existing.events.push(event);
|
|
65
|
+
existing.samples_total = existing.events.length;
|
|
66
|
+
existing.last_updated = new Date().toISOString();
|
|
67
|
+
if (event.crash_signature_hash &&
|
|
68
|
+
!existing.crash_signatures.includes(event.crash_signature_hash)) {
|
|
69
|
+
existing.crash_signatures.push(event.crash_signature_hash);
|
|
70
|
+
}
|
|
71
|
+
const path = getProfilePath(event.harness_id, base);
|
|
72
|
+
fsWrite(path, JSON.stringify(existing, null, 2), "utf8");
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/harness-pacing/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAEzD,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAI,GAAG,kBAAkB;IAC1E,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO;QACL,UAAU;QACV,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE;YACX,UAAU;YACV,eAAe,EAAE,aAAa;YAC9B,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,SAAS;YACjC,qBAAqB,EAAE,SAAS;YAChC,KAAK,EAAE,2CAA2C;SACnD;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,IAAI,GAAG,kBAAkB,EACzB,SAA8B,YAAY,EAC1C,WAA8B,UAAU;IAExC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAW,CAAmB,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyB,EACzB,IAAI,GAAG,kBAAkB,EACzB,SAA8B,YAAY,EAC1C,WAA8B,UAAU,EACxC,UAAgC,aAAa,EAC7C,UAA4B,SAAS;IAErC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEhH,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAChD,QAAQ,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEjD,IACE,KAAK,CAAC,oBAAoB;QAC1B,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAC/D,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import YAML from "yaml";
|
|
3
|
-
import { VERSION, evaluateReadinessGate, exportProtocolSnapshot, getActivationGates, getActiveWatchPacket, getBootReceiptExamples, getBootReceiptSchema, getCloseoutChecklist, getDelegationPacket, getHarnessProbeMatrix, getOnboardingPlan, getRoleProfile, getRuntimeNotice, getStartupPacket, getVersionMetadata, loadProtocolData, validateBootReceipt, validateCmuxDeliveryProof, validateDelegationPacket, validateInstructionReadProof, validateTeamManifest } from "../protocol/service.js";
|
|
3
|
+
import { VERSION, evaluateReadinessGate, exportProtocolSnapshot, getActivationGates, getActiveWatchPacket, getBootReceiptExamples, getBootReceiptSchema, getCloseoutChecklist, getDelegationPacket, getHarnessProbeMatrix, getMissionFrontrunPack, getOnboardingPlan, getRoleCard, getRoleProfile, getRuntimeNotice, getStartupPacket, getVersionMetadata, loadProtocolData, validateBootReceipt, validateCmuxDeliveryProof, validateDelegationPacket, validateInstructionReadProof, validateTeamManifest } from "../protocol/service.js";
|
|
4
4
|
import { computeSurfaceLayout, computeSurfaceLayoutGate, computeHumanCmuxQuadLayout, renderSurfaceLayoutAscii } from "../protocol/surface-layout.js";
|
|
5
5
|
import { compileSessionReport, publicTelemetryConfig, readTelemetryConfig, redactPayload, submitSessionReport } from "../telemetry/index.js";
|
|
6
|
-
import { bootReceiptInputShape, activeWatchPacketInputShape, closeoutChecklistInputShape, cmuxDeliveryProofInputShape, delegationPacketInputShape, harnessProbeInputShape, instructionReadProofInputShape, onboardingPlanInputShape, recordInputShape, readinessGateInputShape, reportRecordInputSchema, roleProfileInputShape, sessionReportInputShape, submitSessionReportInputSchema, startupPacketInputShape, surfaceLayoutGateInputShape, surfaceLayoutInputShape, teamManifestInputShape } from "../protocol/schemas.js";
|
|
6
|
+
import { bootReceiptInputShape, activeWatchPacketInputShape, closeoutChecklistInputShape, cmuxDeliveryProofInputShape, delegationPacketInputShape, harnessProbeInputShape, instructionReadProofInputShape, missionFrontrunInputShape, onboardingPlanInputShape, recordInputShape, readinessGateInputShape, reportRecordInputSchema, roleCardInputShape, roleProfileInputShape, sessionReportInputShape, submitSessionReportInputSchema, startupPacketInputShape, surfaceLayoutGateInputShape, surfaceLayoutInputShape, teamManifestInputShape } from "../protocol/schemas.js";
|
|
7
7
|
function jsonText(value) {
|
|
8
8
|
return {
|
|
9
9
|
content: [
|
|
@@ -28,6 +28,13 @@ function textResource(uri, text, mimeType) {
|
|
|
28
28
|
function yamlResource(value) {
|
|
29
29
|
return YAML.stringify(value);
|
|
30
30
|
}
|
|
31
|
+
const ROLE_CARD_ID_TO_KEY = {
|
|
32
|
+
"exec-pm": "execPm",
|
|
33
|
+
"team-pm": "teamPm",
|
|
34
|
+
"dev-worker": "devWorker",
|
|
35
|
+
"qa-worker": "qaWorker",
|
|
36
|
+
"exec-asst": "execAsst"
|
|
37
|
+
};
|
|
31
38
|
function registerProtocolResources(server) {
|
|
32
39
|
const resources = [
|
|
33
40
|
{
|
|
@@ -142,6 +149,16 @@ function registerProtocolResources(server) {
|
|
|
142
149
|
mimeType: resource.mimeType
|
|
143
150
|
}, (uri) => textResource(uri.href, resource.read(), resource.mimeType));
|
|
144
151
|
}
|
|
152
|
+
// Role card resources (one per role)
|
|
153
|
+
const roleCardIds = ["exec-pm", "team-pm", "dev-worker", "qa-worker", "exec-asst"];
|
|
154
|
+
for (const role_id of roleCardIds) {
|
|
155
|
+
const cardKey = ROLE_CARD_ID_TO_KEY[role_id];
|
|
156
|
+
server.registerResource(`role-card-${role_id}`, `odin://protocol/role-cards/${role_id}`, {
|
|
157
|
+
title: `SCP Role Card: ${role_id}`,
|
|
158
|
+
description: `Quick-start role card (<=4KB) for the ${role_id} role.`,
|
|
159
|
+
mimeType: "text/markdown"
|
|
160
|
+
}, (uri) => textResource(uri.href, loadProtocolData().roleCards[cardKey], "text/markdown"));
|
|
161
|
+
}
|
|
145
162
|
}
|
|
146
163
|
export function createServer() {
|
|
147
164
|
const server = new McpServer({
|
|
@@ -185,6 +202,11 @@ export function createServer() {
|
|
|
185
202
|
description: "Return the authority profile for a generic ODIN/SCP role.",
|
|
186
203
|
inputSchema: roleProfileInputShape
|
|
187
204
|
}, (input) => jsonText(getRoleProfile(input.role)));
|
|
205
|
+
server.registerTool("odin.get_role_card", {
|
|
206
|
+
title: "Get Role Card",
|
|
207
|
+
description: "Return the quick-start role card for a given SCP role ID. Returns role_id, role_name, version, payload_bytes, content_sha256, and content. Valid role_ids: exec-pm, team-pm, dev-worker, qa-worker, exec-asst.",
|
|
208
|
+
inputSchema: roleCardInputShape
|
|
209
|
+
}, (input) => jsonText(getRoleCard(input.role_id)));
|
|
188
210
|
server.registerTool("odin.validate_boot_receipt", {
|
|
189
211
|
title: "Validate Boot Receipt",
|
|
190
212
|
description: "Check a boot receipt for required ODIN/SCP fields and basic authority warnings.",
|
|
@@ -292,6 +314,11 @@ export function createServer() {
|
|
|
292
314
|
description: "Submit a redacted session report to the configured telemetry endpoint. Telemetry is disabled by default; this tool returns {submitted: false, reason: ...} unless ODIN_TELEMETRY_ENDPOINT is set. Only invoke after explicit user consent for the current session.",
|
|
293
315
|
inputSchema: submitSessionReportInputSchema
|
|
294
316
|
}, async (input) => jsonText(await submitSessionReport(input.report, { userConsentConfirmed: input.userConsentConfirmed === true })));
|
|
317
|
+
server.registerTool("odin.get_mission_frontrun_pack", {
|
|
318
|
+
title: "Get Factory Mission Front-Runner Contract Pack",
|
|
319
|
+
description: "Assemble a Factory Mission governance contract pack using the PROVEN --append-system-prompt-file seam (live-verified 2026-06-12). Returns four role contracts (orchestrator, worker, scrutiny-validator, scrutiny-feature-reviewer), the .factory/droids/scrutiny-feature-reviewer.md file content, a launch command template, a boot_contract_receipt template with all six required fields (role, session_id, contract_path, byte_count, sha256, timestamp), and a notes block distinguishing PROVEN vs UNPROVEN seams. All placeholder tokens ({{WRITE_SCOPE}}, {{TASK_ID}}, {{REPO_PATH}}, {{MISSION_NAME}}) are substituted from input.",
|
|
320
|
+
inputSchema: missionFrontrunInputShape
|
|
321
|
+
}, (input) => jsonText(getMissionFrontrunPack(input)));
|
|
295
322
|
return server;
|
|
296
323
|
}
|
|
297
324
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { execFileNoThrow } from "../../utils/execFileNoThrow.js";
|
|
5
|
+
export class CmuxBackend {
|
|
6
|
+
archiveDir;
|
|
7
|
+
constructor(archiveDir) {
|
|
8
|
+
this.archiveDir = archiveDir;
|
|
9
|
+
}
|
|
10
|
+
async capture(pane_id) {
|
|
11
|
+
const result = await execFileNoThrow("cmux", [
|
|
12
|
+
"read-screen",
|
|
13
|
+
"--surface",
|
|
14
|
+
pane_id,
|
|
15
|
+
]);
|
|
16
|
+
const text = result.status === 0 ? result.stdout : "";
|
|
17
|
+
const ts = Date.now();
|
|
18
|
+
const hash = createHash("sha256").update(text).digest("hex");
|
|
19
|
+
// Archive raw screen text
|
|
20
|
+
try {
|
|
21
|
+
mkdirSync(this.archiveDir, { recursive: true });
|
|
22
|
+
const filename = `${pane_id.replace(/[^a-zA-Z0-9_-]/g, "_")}_${ts}.txt`;
|
|
23
|
+
writeFileSync(join(this.archiveDir, filename), text, {
|
|
24
|
+
encoding: "utf8",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Archive failure is non-fatal; snapshot still returned
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
pane_id,
|
|
32
|
+
substrate: "cmux",
|
|
33
|
+
text,
|
|
34
|
+
hash,
|
|
35
|
+
ts,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=cmux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmux.js","sourceRoot":"","sources":["../../../../src/odin-watch/backends/cmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,MAAM,OAAO,WAAW;IACL,UAAU,CAAS;IAEpC,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE;YAC3C,aAAa;YACb,WAAW;YACX,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7D,0BAA0B;QAC1B,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;YACxE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;gBACnD,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QAED,OAAO;YACL,OAAO;YACP,SAAS,EAAE,MAAM;YACjB,IAAI;YACJ,IAAI;YACJ,EAAE;SACH,CAAC;IACJ,CAAC;CACF"}
|