@bradheitmann/odin-sentinel 0.4.4 → 0.4.6
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/AGENTS.md +64 -0
- package/CLAUDE.md +43 -0
- package/README.md +102 -335
- package/dist/src/mcp/server.js +43 -12
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/protocol/schemas.d.ts +2529 -4
- package/dist/src/protocol/schemas.js +214 -18
- package/dist/src/protocol/schemas.js.map +1 -1
- package/dist/src/protocol/service.d.ts +96 -2
- package/dist/src/protocol/service.js +516 -4
- package/dist/src/protocol/service.js.map +1 -1
- package/dist/src/protocol/surface-layout.d.ts +40 -1
- package/dist/src/protocol/surface-layout.js +98 -1
- package/dist/src/protocol/surface-layout.js.map +1 -1
- package/dist/src/protocol/validators.d.ts +3 -0
- package/dist/src/protocol/validators.js +28 -0
- package/dist/src/protocol/validators.js.map +1 -1
- package/dist/src/protocol/version.d.ts +3 -0
- package/dist/src/protocol/version.js +3 -0
- package/dist/src/protocol/version.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +8 -0
- package/dist/src/telemetry/config.js +24 -0
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +5 -5
- package/dist/src/telemetry/index.js +3 -3
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/redactor.js +25 -7
- package/dist/src/telemetry/redactor.js.map +1 -1
- package/dist/src/telemetry/report.d.ts +108 -0
- package/dist/src/telemetry/report.js +83 -3
- package/dist/src/telemetry/report.js.map +1 -1
- package/dist/src/telemetry/submit.d.ts +2 -0
- package/dist/src/telemetry/submit.js +79 -6
- package/dist/src/telemetry/submit.js.map +1 -1
- package/docs/guides/quick-start.md +112 -44
- package/docs/guides/quickstart-prompts.md +65 -0
- package/docs/guides/recommended-starter-team.md +45 -27
- package/docs/reference/client-compatibility.md +20 -43
- package/docs/reference/cost-and-privacy.md +26 -23
- package/docs/reference/distribution.md +40 -55
- package/docs/reference/public-surface-audit.md +35 -114
- package/package.json +19 -4
- package/protocol/SCP.md +8 -1
- package/protocol/bootstrap-skill.md +16 -11
- package/protocol/closeout.yaml +7 -1
- package/protocol/delegation.yaml +1 -1
- package/protocol/model-profiles.yaml +55 -1
- package/protocol/receipts/boot-receipt.yaml +42 -0
- package/protocol/receipts/team-manifest.yaml +41 -0
- package/protocol/roles.yaml +69 -1
- package/protocol/topology.yaml +78 -36
- package/scripts/audit/public-surface.mjs +48 -19
- package/scripts/audit/verify-pack.mjs +294 -27
- package/templates/dev-slice-template.md +56 -0
- package/templates/pm-role-template.md +61 -0
- package/templates/qa-slice-template.md +46 -0
- package/templates/team-manifest-template.yaml +163 -0
|
@@ -1,35 +1,53 @@
|
|
|
1
1
|
# Recommended Starter Team
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
The profiles below are a good starting point for a visible multi-agent session.
|
|
6
|
-
They are not bundled dependencies. Install and configure the harnesses you want,
|
|
7
|
-
then point them at ODIN Sentinel through MCP.
|
|
3
|
+
This is a small, visible starter shape for ODIN Sentinel. It is not a dependency
|
|
4
|
+
list and not a guarantee that every named harness is ready on your machine.
|
|
8
5
|
|
|
9
6
|
## Executive Office
|
|
10
7
|
|
|
11
|
-
| Role | Suggested Harness
|
|
12
|
-
| --- | --- | --- |
|
|
13
|
-
| `A/EXEC-PM` |
|
|
14
|
-
| `A/EXEC-ODIN` |
|
|
15
|
-
| `A/EXEC-ASST` |
|
|
16
|
-
| `A/EXEC-RSCH` |
|
|
17
|
-
| `A/EXEC-QA` |
|
|
8
|
+
| Role | Suggested Harness Type | Responsibility |
|
|
9
|
+
| --- | --- | --- |
|
|
10
|
+
| `A/EXEC-PM` | Strong coordination agent | Routing, activation, assignments, waivers, escalation. |
|
|
11
|
+
| `A/EXEC-ODIN` | Strong monitoring agent | Health, scope, drift, permission waits, closeout hygiene. |
|
|
12
|
+
| `A/EXEC-ASST` | Fast assistant | Ledger notes, reminders, artifact index, delivery checks. |
|
|
13
|
+
| `A/EXEC-RSCH` | Research/synthesis agent | Alternatives, context recovery, risk analysis. |
|
|
14
|
+
| `A/EXEC-QA` | Independent reviewer | Process review and drift detection. |
|
|
18
15
|
|
|
19
16
|
## Development Pod
|
|
20
17
|
|
|
21
|
-
| Role | Suggested Harness
|
|
22
|
-
| --- | --- | --- |
|
|
23
|
-
| `<TEAM>/TEAM-PM` |
|
|
24
|
-
| `<TEAM>/ODIN` |
|
|
25
|
-
| `<TEAM>/DEV-1` |
|
|
26
|
-
| `<TEAM>/QA-1` |
|
|
27
|
-
| `<TEAM>/SHADOW-1` |
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
| Role | Suggested Harness Type | Responsibility |
|
|
19
|
+
| --- | --- | --- |
|
|
20
|
+
| `<TEAM>/TEAM-PM` | Coding-capable coordinator | Pod assignments, follow-up, blocker routing. |
|
|
21
|
+
| `<TEAM>/ODIN` | Monitor | Polling, scope reminders, unsafe-lane freezes. |
|
|
22
|
+
| `<TEAM>/DEV-1` | Implementer | Bounded code/docs changes inside assigned write scope. |
|
|
23
|
+
| `<TEAM>/QA-1` | Independent reviewer | Fresh-context QA; no self-fixes during QA. |
|
|
24
|
+
| `<TEAM>/SHADOW-1` | Read-only reviewer | Optional second-pass critique and risk surfacing. |
|
|
25
|
+
|
|
26
|
+
## Readiness Before Launch
|
|
27
|
+
|
|
28
|
+
Each persistent role should have:
|
|
29
|
+
|
|
30
|
+
- MCP server proof or an accepted fallback path.
|
|
31
|
+
- Native skill context where supported, or full prompt fallback.
|
|
32
|
+
- Auth/account readiness checked without printing secrets.
|
|
33
|
+
- Local inference smoke-tested if used.
|
|
34
|
+
- CMUX locator recorded in the same workspace.
|
|
35
|
+
- Watcher assignment recorded in the team manifest.
|
|
36
|
+
|
|
37
|
+
Role slots may exist before readiness. Occupants should wait until readiness
|
|
38
|
+
passes or EXEC PM records a waiver/substitution.
|
|
39
|
+
|
|
40
|
+
## ODIN Roles Are Active Monitors
|
|
41
|
+
|
|
42
|
+
ODIN roles are not passive receipt emitters. Their default job is to watch for
|
|
43
|
+
stall, scope drift, missed delivery, permission waits, stale versions, and role
|
|
44
|
+
boundary breaches. Default active-watch cadence is 30 seconds. Treat 5 minutes
|
|
45
|
+
without meaningful progress as `WATCH_WARN` and 10 minutes without heartbeat or
|
|
46
|
+
observable progress as `STALLED`, unless the team manifest explicitly declares a
|
|
47
|
+
known long-running command. ODIN roles must re-arm the next watch tick instead
|
|
48
|
+
of returning to passive idle.
|
|
49
|
+
|
|
50
|
+
Human-facing translation: ODIN pauses are safety rails. They protect the
|
|
51
|
+
operator from silent failures, surprise costs, secret exposure, and agents going
|
|
52
|
+
off task. A warning or halt should explain the blocker in plain language and
|
|
53
|
+
offer the next safe choice; it should not blame the operator.
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# Client Compatibility
|
|
2
2
|
|
|
3
|
-
ODIN Sentinel is implemented in TypeScript and runs on Node.js
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
ODIN Sentinel is implemented in TypeScript and runs on Node.js `>=22.13.0`.
|
|
4
|
+
Clients can be written in any language that can speak MCP over stdio or consume a
|
|
5
|
+
protocol snapshot.
|
|
6
6
|
|
|
7
|
-
## Compatibility
|
|
7
|
+
## Compatibility Layers
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- MCP server: language-neutral JSON-RPC over stdio.
|
|
10
|
+
- Native skill: host-specific context for automatic invocation and role behavior.
|
|
11
|
+
- Plugin: host install path that may bundle MCP config and native skill.
|
|
12
|
+
- Full prompt injection: fallback for hosts without MCP or native skill support.
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- no tool requires filesystem access from the client
|
|
15
|
-
- fallback protocol snapshots are returned as plain filename-to-text maps
|
|
14
|
+
A persistent governed role should have MCP plus native skill or full prompt proof.
|
|
15
|
+
If it does not, mark it `NON_GOVERNED_ONE_SHOT_ONLY`: it can do bounded one-shot
|
|
16
|
+
help, but should not occupy a persistent governed role.
|
|
16
17
|
|
|
17
|
-
##
|
|
18
|
+
## Native And WASM Clients
|
|
18
19
|
|
|
19
|
-
Native clients that can spawn
|
|
20
|
-
subprocess:
|
|
20
|
+
Native clients that can spawn subprocesses should launch:
|
|
21
21
|
|
|
22
22
|
```text
|
|
23
23
|
command: node
|
|
@@ -25,35 +25,12 @@ args: [/path/to/odin-sentinel/dist/src/bin/index.js]
|
|
|
25
25
|
transport: stdio
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Clients that cannot spawn stdio should use a host bridge or a static snapshot
|
|
29
|
+
from `odin.export_protocol_snapshot`.
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
- `tools/call`
|
|
32
|
-
- `resources/list`
|
|
33
|
-
- `resources/read`
|
|
31
|
+
## CMUX Boundary
|
|
34
32
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
patterns:
|
|
40
|
-
|
|
41
|
-
1. Host bridge: native host process runs `odin-sentinel` and exposes MCP calls
|
|
42
|
-
to the WASM guest.
|
|
43
|
-
2. Sidecar bridge: an external local process runs `odin-sentinel` and the WASM
|
|
44
|
-
client talks to the host through its supported bridge channel.
|
|
45
|
-
3. Snapshot fallback: call `odin.export_protocol_snapshot` from a capable host and
|
|
46
|
-
provide the generated text files to the WASM agent as static context.
|
|
47
|
-
|
|
48
|
-
## Portability Limits
|
|
49
|
-
|
|
50
|
-
The current server runtime requires Node.js 20 or newer. This does not restrict
|
|
51
|
-
the client implementation language; it only means the machine hosting the MCP
|
|
52
|
-
server needs Node available.
|
|
53
|
-
|
|
54
|
-
Future options if a pure native server is needed:
|
|
55
|
-
|
|
56
|
-
- Rust MCP server using the same `protocol/` data files.
|
|
57
|
-
- Go MCP server using the same `protocol/` data files.
|
|
58
|
-
- Single-file generated JSON protocol bundle for embedded clients.
|
|
59
|
-
- WASI-compatible read-only server if the target runtime supports stdio.
|
|
33
|
+
CMUX is required for governed team mode because role slots must be visible,
|
|
34
|
+
locatable, and human-readable. Tab-only layouts are degraded. The canonical mode
|
|
35
|
+
is one CMUX workspace with spatial/pod organization and EXEC PM in the same
|
|
36
|
+
workspace by default.
|
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
# Cost And Privacy
|
|
2
2
|
|
|
3
|
-
ODIN Sentinel does not provide inference.
|
|
3
|
+
ODIN Sentinel does not provide inference and does not host a backend. Users pay
|
|
4
|
+
for their own harnesses, model providers, and local inference hardware.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
ship credentials. It is a local MCP server that returns protocol resources,
|
|
7
|
-
startup packets, validation results, delegation envelopes, closeout checklists,
|
|
8
|
-
and fallback text snapshots.
|
|
6
|
+
## Network And Telemetry Boundary
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
Normal MCP operation is local stdio:
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
harnesses make. ODIN Sentinel only returns coordination data over MCP.
|
|
16
|
-
|
|
17
|
-
ODIN Sentinel only names preferred harness slots and model capability profiles.
|
|
18
|
-
Those are dispatch preferences, not hosted compute.
|
|
10
|
+
```text
|
|
11
|
+
MCP client <-> local stdio process <-> bundled protocol files
|
|
12
|
+
```
|
|
19
13
|
|
|
20
|
-
|
|
14
|
+
No network call is required for normal protocol reads, validation tools, startup
|
|
15
|
+
packets, delegation packets, or closeout checklists.
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
ODIN Sentinel includes optional telemetry/session-report helper tools. They are
|
|
18
|
+
user-invoked, redaction-oriented, and should not be described as automatic
|
|
19
|
+
collection. Do not claim "no telemetry" without the qualifier that telemetry is
|
|
20
|
+
not automatic and requires an explicit tool call/configured destination.
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
MCP client <-> local stdio process <-> protocol files
|
|
26
|
-
```
|
|
22
|
+
## Secret Handling
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
Do not paste API keys, OAuth material, tokens, or passwords into docs/prompts.
|
|
25
|
+
Ask whether providers are configured through Doppler, 1Password CLI,
|
|
26
|
+
environment variables, direnv, mise, or dotenv-style files. Verify status by
|
|
27
|
+
name/count/status only, never by printing secret values.
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
Beginner-safe wording: "Please make sure this tool is signed in or configured
|
|
30
|
+
outside the chat. If it is not, we can pause, use a different harness, or keep
|
|
31
|
+
that role slot empty." Do not ask the user to reveal where the secret value is
|
|
32
|
+
stored unless they volunteer a non-secret path or tool name.
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
## Local Inference
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
Endpoint reachability is not enough. A local model is ready only if it returns
|
|
37
|
+
visible content within the session timeout and does not return only
|
|
38
|
+
`reasoning_content`.
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
# Distribution
|
|
2
2
|
|
|
3
|
-
ODIN Sentinel
|
|
4
|
-
|
|
3
|
+
ODIN Sentinel public artifacts are the GitHub repository, npm package, optional
|
|
4
|
+
host plugin, public bootstrap skill/resource, public templates, and docs. When
|
|
5
|
+
public protocol semantics change, update them together.
|
|
5
6
|
|
|
6
|
-
##
|
|
7
|
+
## Current Public Versions
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```
|
|
9
|
+
- npm package/server: `0.4.6`
|
|
10
|
+
- minimum compatible child MCP version: `0.4.5`
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Private local skill copies may differ for personal workflow reasons. Release
|
|
13
|
+
checks must not rely on private local paths and must distinguish intentional
|
|
14
|
+
private-local divergence from repo-internal public artifact drift.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
}
|
|
16
|
+
## Install Paths
|
|
17
|
+
|
|
18
|
+
Global install:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm i -g @bradheitmann/odin-sentinel
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Zero-install MCP config:
|
|
25
25
|
|
|
26
26
|
```json
|
|
27
27
|
{
|
|
@@ -34,9 +34,7 @@ For zero-install via `npx`:
|
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
For source builds:
|
|
37
|
+
Source build:
|
|
40
38
|
|
|
41
39
|
```bash
|
|
42
40
|
pnpm install
|
|
@@ -44,39 +42,26 @@ pnpm run build
|
|
|
44
42
|
node dist/src/bin/index.js
|
|
45
43
|
```
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
A native binary is possible, but it should not be the first distribution path.
|
|
71
|
-
The server is small, stdio-only, and already fits the package manager workflow
|
|
72
|
-
most MCP clients expect.
|
|
73
|
-
|
|
74
|
-
Good future binary routes:
|
|
75
|
-
|
|
76
|
-
- Rust or Go implementation over the same `protocol/` files.
|
|
77
|
-
- Generated single-file protocol bundle for embedded clients.
|
|
78
|
-
- Homebrew formula once the public package name and release cadence are stable.
|
|
79
|
-
|
|
80
|
-
Avoid a bundled Node executable unless users ask for it. Those bundles tend to
|
|
81
|
-
make asset paths, source maps, and platform support more awkward than the code
|
|
82
|
-
deserves.
|
|
45
|
+
## Release Checklist
|
|
46
|
+
|
|
47
|
+
Before publishing or updating a plugin/skill listing:
|
|
48
|
+
|
|
49
|
+
1. Update GitHub source, docs, protocol resources, public templates, and package
|
|
50
|
+
metadata together.
|
|
51
|
+
2. Confirm npm package metadata includes repository, homepage, bugs, license,
|
|
52
|
+
engines, and files.
|
|
53
|
+
3. Confirm package contents exclude private planning workspaces and local evidence paths.
|
|
54
|
+
4. Confirm `protocol/SCP.md` and `protocol/bootstrap-skill.md` carry the same
|
|
55
|
+
public version and minimum compatible child MCP version.
|
|
56
|
+
5. Confirm public docs do not contain stale MCP/server version references.
|
|
57
|
+
6. Confirm telemetry wording explains that session-report submission is optional
|
|
58
|
+
and user-invoked.
|
|
59
|
+
7. Run offline release validation: `pnpm run validate`.
|
|
60
|
+
8. Run pack dry-run: `pnpm pack --dry-run`.
|
|
61
|
+
9. Tag the release only after GitHub, npm, plugin, public skill/bootstrap, docs,
|
|
62
|
+
and version tags agree.
|
|
63
|
+
|
|
64
|
+
## Public Templates
|
|
65
|
+
|
|
66
|
+
The npm package intentionally ships `templates/` plus `AGENTS.md` and
|
|
67
|
+
`CLAUDE.md`. They are starter templates, not private planning artifacts.
|
|
@@ -2,132 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
This document records the current public-release audit scope for ODIN Sentinel.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
Current tracked source, docs, protocol files, tests, and package metadata pass
|
|
8
|
-
the public-surface audit:
|
|
5
|
+
## Audit Commands
|
|
9
6
|
|
|
10
7
|
```bash
|
|
11
8
|
pnpm run audit:public
|
|
9
|
+
pnpm run test:package
|
|
10
|
+
pnpm run validate
|
|
12
11
|
```
|
|
13
12
|
|
|
14
|
-
The
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- local agent configuration paths
|
|
18
|
-
- legacy extension terminology from adjacent agent systems
|
|
19
|
-
- secret-looking assignments
|
|
20
|
-
|
|
21
|
-
## Named External Concepts
|
|
22
|
-
|
|
23
|
-
ODIN Sentinel intentionally names these external concepts:
|
|
24
|
-
|
|
25
|
-
- MCP / Model Context Protocol
|
|
26
|
-
- stdio
|
|
27
|
-
- Node.js
|
|
28
|
-
- TypeScript / JavaScript
|
|
29
|
-
- pnpm / npm / npx
|
|
30
|
-
- Codex CLI
|
|
31
|
-
- Claude Code
|
|
32
|
-
- Droid
|
|
33
|
-
- Crush
|
|
34
|
-
- Goose
|
|
35
|
-
- Zed
|
|
36
|
-
- OpenCode
|
|
37
|
-
- Cursor
|
|
38
|
-
- Rust
|
|
39
|
-
- Go
|
|
40
|
-
- Zig
|
|
41
|
-
- WebAssembly / WASM
|
|
42
|
-
- Homebrew
|
|
43
|
-
|
|
44
|
-
These are examples, runtimes, package managers, languages, or harnesses. They
|
|
45
|
-
are not bundled dependencies unless listed in `package.json`.
|
|
46
|
-
|
|
47
|
-
## Named ODIN Concepts
|
|
48
|
-
|
|
49
|
-
- ODIN Sentinel
|
|
50
|
-
- ODIN
|
|
51
|
-
- SCP / Sentinel Coordination Protocol
|
|
52
|
-
- CMUX-compatible terminal-pane teams
|
|
53
|
-
- EXEC PM
|
|
54
|
-
- EXEC ODIN
|
|
55
|
-
- EXEC ASST
|
|
56
|
-
- EXEC RSCH
|
|
57
|
-
- EXEC QA
|
|
58
|
-
- TEAM PM
|
|
59
|
-
- TEAM ODIN
|
|
60
|
-
- DEV WORKER
|
|
61
|
-
- QA WORKER
|
|
62
|
-
- SHADOW REVIEWER
|
|
63
|
-
|
|
64
|
-
## Local Paths
|
|
65
|
-
|
|
66
|
-
ODIN Sentinel intentionally mentions these project-local paths:
|
|
67
|
-
|
|
68
|
-
- `docs/handoffs/`
|
|
69
|
-
- `.odin/handoffs/`
|
|
70
|
-
- `.odin/audit/`
|
|
71
|
-
|
|
72
|
-
These are caller-created paths for projects that use ODIN. They are not bundled
|
|
73
|
-
private state.
|
|
74
|
-
|
|
75
|
-
Docs also use placeholder install paths such as:
|
|
13
|
+
The audits check public distribution files for local home paths, private project
|
|
14
|
+
markers, local evidence paths, stale public versions, missing package metadata,
|
|
15
|
+
telemetry wording drift, and package contents that should not ship.
|
|
76
16
|
|
|
77
|
-
|
|
78
|
-
- `/path/to/odin-sentinel/dist/src/bin/index.js`
|
|
17
|
+
## Public Distribution Files
|
|
79
18
|
|
|
80
|
-
|
|
19
|
+
The intended public package includes:
|
|
81
20
|
|
|
82
|
-
|
|
21
|
+
- `dist/`
|
|
22
|
+
- `docs/`
|
|
23
|
+
- `protocol/`
|
|
24
|
+
- `templates/`
|
|
25
|
+
- `scripts/audit/`
|
|
26
|
+
- `AGENTS.md`
|
|
27
|
+
- `CLAUDE.md`
|
|
28
|
+
- `README.md`
|
|
29
|
+
- `LICENSE`
|
|
30
|
+
- `package.json`
|
|
83
31
|
|
|
84
|
-
|
|
32
|
+
Private planning workspaces and local evidence directories are optional local
|
|
33
|
+
operator spaces. They are not public product internals and must not be packaged.
|
|
85
34
|
|
|
86
|
-
|
|
87
|
-
- `pnpm run build`
|
|
88
|
-
- `pnpm run dev`
|
|
89
|
-
- `pnpm run audit:public`
|
|
90
|
-
- `pnpm run test:package`
|
|
91
|
-
- `pnpm test`
|
|
92
|
-
- `pnpm run typecheck`
|
|
93
|
-
- `pnpm run validate`
|
|
94
|
-
|
|
95
|
-
Referenced local script files:
|
|
96
|
-
|
|
97
|
-
- `scripts/audit/public-surface.mjs`
|
|
98
|
-
- `scripts/audit/verify-pack.mjs`
|
|
99
|
-
|
|
100
|
-
No missing repo-local scripts are known.
|
|
101
|
-
|
|
102
|
-
External commands mentioned in docs:
|
|
103
|
-
|
|
104
|
-
- `node`
|
|
105
|
-
- `pnpm`
|
|
106
|
-
- `npm`
|
|
107
|
-
- `npx`
|
|
108
|
-
- `codex mcp add`
|
|
109
|
-
- `droid mcp add`
|
|
110
|
-
|
|
111
|
-
These are external user-installed tools, not files this repository must provide.
|
|
112
|
-
|
|
113
|
-
## Snapshot Tools
|
|
114
|
-
|
|
115
|
-
Current MCP snapshot tool:
|
|
116
|
-
|
|
117
|
-
- `odin.export_protocol_snapshot`
|
|
35
|
+
## Named External Concepts
|
|
118
36
|
|
|
119
|
-
|
|
37
|
+
ODIN Sentinel intentionally names MCP, stdio, Node.js, TypeScript, pnpm, npm,
|
|
38
|
+
npx, CMUX, Codex, Claude Code, Droid, Crush, Goose, Zed, OpenCode, Cursor,
|
|
39
|
+
Rust, Go, Zig, and WebAssembly as examples, runtimes, package managers,
|
|
40
|
+
languages, or harnesses.
|
|
120
41
|
|
|
121
|
-
##
|
|
42
|
+
## Current Public Surface
|
|
122
43
|
|
|
123
|
-
|
|
124
|
-
|
|
44
|
+
- Public package/server version: `0.4.6`
|
|
45
|
+
- Minimum compatible child MCP version: `0.4.5`
|
|
46
|
+
- MCP resources: 9
|
|
47
|
+
- MCP tools: 23
|
|
48
|
+
- Optional telemetry tools: user-invoked, not automatic collection
|
|
125
49
|
|
|
126
|
-
|
|
127
|
-
release, publish from a fresh repository, a squashed root commit, or a sanitized
|
|
128
|
-
history rewrite after re-running:
|
|
50
|
+
## Release Drift Rule
|
|
129
51
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
```
|
|
52
|
+
Public repo/package/plugin/skill artifacts must be updated together when public
|
|
53
|
+
protocol semantics change. Private local skill copies may differ, but release
|
|
54
|
+
checks must not depend on private local paths.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bradheitmann/odin-sentinel",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -27,7 +27,10 @@
|
|
|
27
27
|
"dist",
|
|
28
28
|
"docs",
|
|
29
29
|
"protocol",
|
|
30
|
+
"templates",
|
|
30
31
|
"scripts",
|
|
32
|
+
"AGENTS.md",
|
|
33
|
+
"CLAUDE.md",
|
|
31
34
|
"README.md",
|
|
32
35
|
"LICENSE"
|
|
33
36
|
],
|
|
@@ -41,9 +44,9 @@
|
|
|
41
44
|
"author": "ODIN Sentinel contributors",
|
|
42
45
|
"license": "MIT",
|
|
43
46
|
"dependencies": {
|
|
44
|
-
"@modelcontextprotocol/sdk": "
|
|
45
|
-
"yaml": "
|
|
46
|
-
"zod": "
|
|
47
|
+
"@modelcontextprotocol/sdk": "1.29.0",
|
|
48
|
+
"yaml": "2.8.4",
|
|
49
|
+
"zod": "4.4.3"
|
|
47
50
|
},
|
|
48
51
|
"devDependencies": {
|
|
49
52
|
"@types/node": "^24.10.1",
|
|
@@ -55,6 +58,18 @@
|
|
|
55
58
|
"engines": {
|
|
56
59
|
"node": ">=22.13.0"
|
|
57
60
|
},
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+https://github.com/bradheitmann/odin-sentinel.git"
|
|
64
|
+
},
|
|
65
|
+
"homepage": "https://github.com/bradheitmann/odin-sentinel#readme",
|
|
66
|
+
"bugs": {
|
|
67
|
+
"url": "https://github.com/bradheitmann/odin-sentinel/issues"
|
|
68
|
+
},
|
|
69
|
+
"odin": {
|
|
70
|
+
"publicVersion": "0.4.6",
|
|
71
|
+
"minimumCompatibleChildMcpVersion": "0.4.5"
|
|
72
|
+
},
|
|
58
73
|
"scripts": {
|
|
59
74
|
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
60
75
|
"build": "pnpm run clean && tsc -p tsconfig.build.json",
|
package/protocol/SCP.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# ODIN Sentinel Coordination Protocol
|
|
2
2
|
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.6
|
|
4
|
+
|
|
5
|
+
SCP_PUBLIC_VERSION: 0.4.6
|
|
6
|
+
MIN_COMPATIBLE_CHILD_MCP: 0.4.5
|
|
4
7
|
|
|
5
8
|
ODIN Sentinel is a portable coordination layer for visible multi-agent teams.
|
|
6
9
|
SCP means Sentinel Coordination Protocol in this repository. It is not Secure
|
|
@@ -10,6 +13,10 @@ manifest validation, native visible-role delegation packets, closeout
|
|
|
10
13
|
checklists, surface layout rules, and fallback protocol snapshots through an
|
|
11
14
|
MCP server.
|
|
12
15
|
|
|
16
|
+
## Public Release And Readiness
|
|
17
|
+
|
|
18
|
+
Public repo, npm package, plugin, bootstrap skill, templates, and docs must be updated together when public protocol semantics change. Private local skill copies may differ intentionally, but release checks must not depend on private local paths. Governed team mode requires CMUX; without CMUX, ODIN may still expose MCP resources and validation tools, but the visible team-management experience is not active governed mode. MCP supplies tools/resources; native skills improve automatic invocation; plugin install paths may package both; full prompt injection is fallback only.
|
|
19
|
+
|
|
13
20
|
## Principles
|
|
14
21
|
|
|
15
22
|
- Visible role slots are the audit surface.
|