@openrig/cli 0.4.8 → 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/daemon/assets/claude-statusline-context.cjs +40 -8
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +0 -0
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +7 -4
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +68 -17
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +2 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +2 -1
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +1 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts +36 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +203 -3
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +12 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +24 -2
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/agent-activity-store.d.ts +1 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +2 -2
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +33 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -0
- package/daemon/dist/domain/claude-activity-hooks.js +60 -0
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts +30 -0
- package/daemon/dist/domain/context-packs/bundle-assembler.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/bundle-assembler.js +31 -1
- package/daemon/dist/domain/context-packs/bundle-assembler.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts +69 -14
- package/daemon/dist/domain/context-packs/context-pack-library-service.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-library-service.js +263 -48
- package/daemon/dist/domain/context-packs/context-pack-library-service.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +2 -2
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +11 -0
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/ref-safety.d.ts +11 -0
- package/daemon/dist/domain/context-packs/ref-safety.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/ref-safety.js +46 -0
- package/daemon/dist/domain/context-packs/ref-safety.js.map +1 -0
- package/daemon/dist/domain/context-packs/token-estimate.d.ts +3 -0
- package/daemon/dist/domain/context-packs/token-estimate.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/token-estimate.js +5 -0
- package/daemon/dist/domain/context-packs/token-estimate.js.map +1 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts +14 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +26 -2
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-reader.d.ts +44 -0
- package/daemon/dist/domain/provider/claude-usage-reader.d.ts.map +1 -0
- package/daemon/dist/domain/provider/claude-usage-reader.js +112 -0
- package/daemon/dist/domain/provider/claude-usage-reader.js.map +1 -0
- package/daemon/dist/domain/provider/codex-auth-reader.d.ts +18 -0
- package/daemon/dist/domain/provider/codex-auth-reader.d.ts.map +1 -0
- package/daemon/dist/domain/provider/codex-auth-reader.js +64 -0
- package/daemon/dist/domain/provider/codex-auth-reader.js.map +1 -0
- package/daemon/dist/domain/provider/host-usage-rollup.d.ts +51 -0
- package/daemon/dist/domain/provider/host-usage-rollup.d.ts.map +1 -0
- package/daemon/dist/domain/provider/host-usage-rollup.js +162 -0
- package/daemon/dist/domain/provider/host-usage-rollup.js.map +1 -0
- package/daemon/dist/domain/provider/provider-collect.d.ts +22 -0
- package/daemon/dist/domain/provider/provider-collect.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-collect.js +74 -0
- package/daemon/dist/domain/provider/provider-collect.js.map +1 -0
- package/daemon/dist/domain/provider/provider-policy.d.ts +38 -0
- package/daemon/dist/domain/provider/provider-policy.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-policy.js +76 -0
- package/daemon/dist/domain/provider/provider-policy.js.map +1 -0
- package/daemon/dist/domain/provider/provider-read-model.d.ts +28 -0
- package/daemon/dist/domain/provider/provider-read-model.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-read-model.js +68 -0
- package/daemon/dist/domain/provider/provider-read-model.js.map +1 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts +26 -0
- package/daemon/dist/domain/provider/provider-service-impl.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-service-impl.js +83 -0
- package/daemon/dist/domain/provider/provider-service-impl.js.map +1 -0
- package/daemon/dist/domain/provider/provider-service.d.ts +33 -0
- package/daemon/dist/domain/provider/provider-service.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-service.js +6 -0
- package/daemon/dist/domain/provider/provider-service.js.map +1 -0
- package/daemon/dist/domain/provider/provider-signals.d.ts +76 -0
- package/daemon/dist/domain/provider/provider-signals.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-signals.js +144 -0
- package/daemon/dist/domain/provider/provider-signals.js.map +1 -0
- package/daemon/dist/domain/provider/provider-types.d.ts +101 -0
- package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-types.js +7 -0
- package/daemon/dist/domain/provider/provider-types.js.map +1 -0
- package/daemon/dist/domain/provider/reactive-tap.d.ts +29 -0
- package/daemon/dist/domain/provider/reactive-tap.d.ts.map +1 -0
- package/daemon/dist/domain/provider/reactive-tap.js +80 -0
- package/daemon/dist/domain/provider/reactive-tap.js.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts +7 -23
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +3 -61
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +11 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +43 -1
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +2 -11
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts +14 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.d.ts.map +1 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.js +26 -0
- package/daemon/dist/domain/scope/attestation-lineage.generated.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts +13 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +50 -10
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
- package/daemon/dist/domain/startup-validation.js +18 -54
- package/daemon/dist/domain/startup-validation.js.map +1 -1
- package/daemon/dist/domain/stream-store.d.ts +4 -0
- package/daemon/dist/domain/stream-store.d.ts.map +1 -1
- package/daemon/dist/domain/stream-store.js +15 -2
- package/daemon/dist/domain/stream-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +2 -9
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +157 -75
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/provider.d.ts +3 -0
- package/daemon/dist/routes/provider.d.ts.map +1 -0
- package/daemon/dist/routes/provider.js +124 -0
- package/daemon/dist/routes/provider.js.map +1 -0
- package/daemon/dist/routes/scope-approve.d.ts.map +1 -1
- package/daemon/dist/routes/scope-approve.js +6 -3
- package/daemon/dist/routes/scope-approve.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +4 -1
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/stream.d.ts.map +1 -1
- package/daemon/dist/routes/stream.js +71 -1
- package/daemon/dist/routes/stream.js.map +1 -1
- package/daemon/dist/server.d.ts +3 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +5 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +21 -11
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/developing.md +39 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -1
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/research/analyst/agent.yaml +1 -1
- package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -1
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/shared/agent.yaml +6 -0
- package/daemon/specs/agents/shared/runtime/claude-activity-hooks.json +4 -0
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +1 -0
- package/dist/bin-wrapper.d.ts.map +1 -1
- package/dist/bin-wrapper.js +7 -0
- package/dist/bin-wrapper.js.map +1 -1
- package/dist/build-info.js +3 -3
- package/dist/commands/agent-image.d.ts.map +1 -1
- package/dist/commands/agent-image.js +2 -1
- package/dist/commands/agent-image.js.map +1 -1
- package/dist/commands/broadcast.d.ts.map +1 -1
- package/dist/commands/broadcast.js +37 -2
- package/dist/commands/broadcast.js.map +1 -1
- package/dist/commands/context.d.ts +2 -7
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +391 -213
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/provider.d.ts +4 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +218 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/ps.d.ts +7 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +34 -4
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +38 -8
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +48 -4
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +70 -11
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/stream.d.ts +1 -0
- package/dist/commands/stream.d.ts.map +1 -1
- package/dist/commands/stream.js +93 -0
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/tui.d.ts +4 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +29 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/walk.d.ts +19 -0
- package/dist/commands/walk.d.ts.map +1 -0
- package/dist/commands/walk.js +139 -0
- package/dist/commands/walk.js.map +1 -0
- package/dist/context-resolve.d.ts +14 -0
- package/dist/context-resolve.d.ts.map +1 -0
- package/dist/context-resolve.js +40 -0
- package/dist/context-resolve.js.map +1 -0
- package/dist/front-door.d.ts +31 -0
- package/dist/front-door.d.ts.map +1 -0
- package/dist/front-door.js +114 -0
- package/dist/front-door.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/attestation-lineage.d.ts +14 -0
- package/dist/lib/scope/attestation-lineage.d.ts.map +1 -0
- package/dist/lib/scope/attestation-lineage.js +34 -0
- package/dist/lib/scope/attestation-lineage.js.map +1 -0
- package/package.json +4 -2
- package/tui/dist/daemon-client.d.ts +56 -0
- package/tui/dist/daemon-client.d.ts.map +1 -0
- package/tui/dist/daemon-client.js +99 -0
- package/tui/dist/daemon-client.js.map +1 -0
- package/tui/dist/demo-data.d.ts +3 -0
- package/tui/dist/demo-data.d.ts.map +1 -0
- package/tui/dist/demo-data.js +52 -0
- package/tui/dist/demo-data.js.map +1 -0
- package/tui/dist/detail.d.ts +34 -0
- package/tui/dist/detail.d.ts.map +1 -0
- package/tui/dist/detail.js +47 -0
- package/tui/dist/detail.js.map +1 -0
- package/tui/dist/grammar.d.ts +3 -0
- package/tui/dist/grammar.d.ts.map +1 -0
- package/tui/dist/grammar.js +66 -0
- package/tui/dist/grammar.js.map +1 -0
- package/tui/dist/hydrate.d.ts +78 -0
- package/tui/dist/hydrate.d.ts.map +1 -0
- package/tui/dist/hydrate.js +294 -0
- package/tui/dist/hydrate.js.map +1 -0
- package/tui/dist/index.d.ts +12 -0
- package/tui/dist/index.d.ts.map +1 -0
- package/tui/dist/index.js +12 -0
- package/tui/dist/index.js.map +1 -0
- package/tui/dist/input.d.ts +21 -0
- package/tui/dist/input.d.ts.map +1 -0
- package/tui/dist/input.js +128 -0
- package/tui/dist/input.js.map +1 -0
- package/tui/dist/live.d.ts +20 -0
- package/tui/dist/live.d.ts.map +1 -0
- package/tui/dist/live.js +67 -0
- package/tui/dist/live.js.map +1 -0
- package/tui/dist/main.d.ts +3 -0
- package/tui/dist/main.d.ts.map +1 -0
- package/tui/dist/main.js +184 -0
- package/tui/dist/main.js.map +1 -0
- package/tui/dist/motion.d.ts +13 -0
- package/tui/dist/motion.d.ts.map +1 -0
- package/tui/dist/motion.js +31 -0
- package/tui/dist/motion.js.map +1 -0
- package/tui/dist/navigator.d.ts +21 -0
- package/tui/dist/navigator.d.ts.map +1 -0
- package/tui/dist/navigator.js +168 -0
- package/tui/dist/navigator.js.map +1 -0
- package/tui/dist/refresh.d.ts +3 -0
- package/tui/dist/refresh.d.ts.map +1 -0
- package/tui/dist/refresh.js +9 -0
- package/tui/dist/refresh.js.map +1 -0
- package/tui/dist/render.d.ts +21 -0
- package/tui/dist/render.d.ts.map +1 -0
- package/tui/dist/render.js +807 -0
- package/tui/dist/render.js.map +1 -0
- package/tui/dist/sections.d.ts +4 -0
- package/tui/dist/sections.d.ts.map +1 -0
- package/tui/dist/sections.js +19 -0
- package/tui/dist/sections.js.map +1 -0
- package/tui/dist/socket-server.d.ts +24 -0
- package/tui/dist/socket-server.d.ts.map +1 -0
- package/tui/dist/socket-server.js +85 -0
- package/tui/dist/socket-server.js.map +1 -0
- package/tui/dist/state.d.ts +51 -0
- package/tui/dist/state.d.ts.map +1 -0
- package/tui/dist/state.js +480 -0
- package/tui/dist/state.js.map +1 -0
- package/tui/dist/stylize.d.ts +4 -0
- package/tui/dist/stylize.d.ts.map +1 -0
- package/tui/dist/stylize.js +248 -0
- package/tui/dist/stylize.js.map +1 -0
- package/tui/dist/theme.d.ts +19 -0
- package/tui/dist/theme.d.ts.map +1 -0
- package/tui/dist/theme.js +86 -0
- package/tui/dist/theme.js.map +1 -0
- package/tui/dist/topology/canvas.d.ts +43 -0
- package/tui/dist/topology/canvas.d.ts.map +1 -0
- package/tui/dist/topology/canvas.js +131 -0
- package/tui/dist/topology/canvas.js.map +1 -0
- package/tui/dist/topology/fixture.d.ts +4 -0
- package/tui/dist/topology/fixture.d.ts.map +1 -0
- package/tui/dist/topology/fixture.js +71 -0
- package/tui/dist/topology/fixture.js.map +1 -0
- package/tui/dist/topology/glyphs.d.ts +21 -0
- package/tui/dist/topology/glyphs.d.ts.map +1 -0
- package/tui/dist/topology/glyphs.js +49 -0
- package/tui/dist/topology/glyphs.js.map +1 -0
- package/tui/dist/topology/graph-types.d.ts +39 -0
- package/tui/dist/topology/graph-types.d.ts.map +1 -0
- package/tui/dist/topology/graph-types.js +2 -0
- package/tui/dist/topology/graph-types.js.map +1 -0
- package/tui/dist/topology/layout.d.ts +52 -0
- package/tui/dist/topology/layout.d.ts.map +1 -0
- package/tui/dist/topology/layout.js +118 -0
- package/tui/dist/topology/layout.js.map +1 -0
- package/tui/dist/topology/render-graph.d.ts +8 -0
- package/tui/dist/topology/render-graph.d.ts.map +1 -0
- package/tui/dist/topology/render-graph.js +20 -0
- package/tui/dist/topology/render-graph.js.map +1 -0
- package/tui/dist/topology/runtime-marks.d.ts +53 -0
- package/tui/dist/topology/runtime-marks.d.ts.map +1 -0
- package/tui/dist/topology/runtime-marks.js +185 -0
- package/tui/dist/topology/runtime-marks.js.map +1 -0
- package/tui/dist/topology/styles/braille.d.ts +5 -0
- package/tui/dist/topology/styles/braille.d.ts.map +1 -0
- package/tui/dist/topology/styles/braille.js +84 -0
- package/tui/dist/topology/styles/braille.js.map +1 -0
- package/tui/dist/topology/styles/hatchet.d.ts +41 -0
- package/tui/dist/topology/styles/hatchet.d.ts.map +1 -0
- package/tui/dist/topology/styles/hatchet.js +146 -0
- package/tui/dist/topology/styles/hatchet.js.map +1 -0
- package/tui/dist/types.d.ts +362 -0
- package/tui/dist/types.d.ts.map +1 -0
- package/tui/dist/types.js +6 -0
- package/tui/dist/types.js.map +1 -0
- package/ui/dist/assets/{index-DkNi0RT8.js → index-Dv5VaLCN.js} +135 -135
- package/ui/dist/index.html +1 -1
- package/dist/commands/context-pack.d.ts +0 -4
- package/dist/commands/context-pack.d.ts.map +0 -1
- package/dist/commands/context-pack.js +0 -357
- package/dist/commands/context-pack.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/** the RuntimeMark.tsx rect list, transcribed (x, y, w, h) */
|
|
2
|
+
const CLAWD_BODY_RECTS = [
|
|
3
|
+
[3, 2, 10, 8], // body
|
|
4
|
+
[1, 5, 2, 3], // left arm
|
|
5
|
+
[13, 5, 2, 3], // right arm
|
|
6
|
+
[4, 10, 2, 3], // legs
|
|
7
|
+
[7, 10, 2, 3],
|
|
8
|
+
[10, 10, 2, 3],
|
|
9
|
+
];
|
|
10
|
+
const CLAWD_EYE_RECTS = [
|
|
11
|
+
[5, 4, 1, 2],
|
|
12
|
+
[10, 4, 1, 2],
|
|
13
|
+
];
|
|
14
|
+
/** the 16x16 pixel matrix, derived from the rect list (row-major) */
|
|
15
|
+
export function clawdGrid() {
|
|
16
|
+
const g = Array.from({ length: 16 }, () => Array.from({ length: 16 }, () => 0));
|
|
17
|
+
for (const [x, y, w, h] of CLAWD_BODY_RECTS)
|
|
18
|
+
for (let r = y; r < y + h; r++)
|
|
19
|
+
for (let c = x; c < x + w; c++)
|
|
20
|
+
g[r][c] = 1;
|
|
21
|
+
for (const [x, y, w, h] of CLAWD_EYE_RECTS)
|
|
22
|
+
for (let r = y; r < y + h; r++)
|
|
23
|
+
for (let c = x; c < x + w; c++)
|
|
24
|
+
g[r][c] = 2;
|
|
25
|
+
return g;
|
|
26
|
+
}
|
|
27
|
+
/** FAITHFUL form — 16 cells x 8 rows of half-blocks (▀ paints the top pixel
|
|
28
|
+
* with fg and the bottom with bg): the detail-pane / prototype scale. */
|
|
29
|
+
export function clawdFaithfulRows() {
|
|
30
|
+
const g = clawdGrid();
|
|
31
|
+
const rows = [];
|
|
32
|
+
for (let r = 0; r < 16; r += 2) {
|
|
33
|
+
const segs = [];
|
|
34
|
+
for (let c = 0; c < 16; c++) {
|
|
35
|
+
const top = g[r][c];
|
|
36
|
+
const bot = g[r + 1][c];
|
|
37
|
+
const tok = (p) => (p === 1 ? "clawd" : p === 2 ? "clawdEye" : undefined);
|
|
38
|
+
if (top === 0 && bot === 0)
|
|
39
|
+
segs.push({ text: " " });
|
|
40
|
+
else if (top === bot)
|
|
41
|
+
segs.push({ text: "█", token: tok(top) });
|
|
42
|
+
else if (top === 0)
|
|
43
|
+
segs.push({ text: "▄", token: tok(bot) });
|
|
44
|
+
else if (bot === 0)
|
|
45
|
+
segs.push({ text: "▀", token: tok(top) });
|
|
46
|
+
else
|
|
47
|
+
segs.push({ text: "▀", token: tok(top), bg: tok(bot) });
|
|
48
|
+
}
|
|
49
|
+
rows.push(segs);
|
|
50
|
+
}
|
|
51
|
+
return rows;
|
|
52
|
+
}
|
|
53
|
+
/** quadrant-block downsample: the 16x16 grid → cols x rows cells, each cell
|
|
54
|
+
* a 2x2 quadrant whose quadrants are majority-vote body coverage of their
|
|
55
|
+
* source region. PROVABLY grid-derived (guard finding 4) — the mini forms
|
|
56
|
+
* are OUTPUTS of this function, never hand-picked glyphs. Honest limit: the
|
|
57
|
+
* 1px eyes are below majority threshold at these scales and vanish — that
|
|
58
|
+
* fidelity fact is part of the mr7 packet, not hidden. */
|
|
59
|
+
const QUADRANT_CHARS = {
|
|
60
|
+
0b0000: " ", 0b0001: "▗", 0b0010: "▖", 0b0011: "▄", 0b0100: "▝", 0b0101: "▐",
|
|
61
|
+
0b0110: "▞", 0b0111: "▟", 0b1000: "▘", 0b1001: "▚", 0b1010: "▌", 0b1011: "▙",
|
|
62
|
+
0b1100: "▀", 0b1101: "▜", 0b1110: "▛", 0b1111: "█",
|
|
63
|
+
};
|
|
64
|
+
export function clawdDownsample(cols, rows) {
|
|
65
|
+
const g = clawdGrid();
|
|
66
|
+
const cellW = 16 / cols;
|
|
67
|
+
const cellH = 16 / rows;
|
|
68
|
+
const covered = (x0, y0, x1, y1) => {
|
|
69
|
+
let body = 0;
|
|
70
|
+
let total = 0;
|
|
71
|
+
for (let y = Math.floor(y0); y < Math.ceil(y1); y++)
|
|
72
|
+
for (let x = Math.floor(x0); x < Math.ceil(x1); x++) {
|
|
73
|
+
total++;
|
|
74
|
+
if (g[y][x] !== 0)
|
|
75
|
+
body++;
|
|
76
|
+
}
|
|
77
|
+
return total > 0 && body * 2 >= total; // majority vote
|
|
78
|
+
};
|
|
79
|
+
const out = [];
|
|
80
|
+
for (let r = 0; r < rows; r++) {
|
|
81
|
+
const segs = [];
|
|
82
|
+
for (let c = 0; c < cols; c++) {
|
|
83
|
+
const x0 = c * cellW;
|
|
84
|
+
const y0 = r * cellH;
|
|
85
|
+
const bits = (covered(x0, y0, x0 + cellW / 2, y0 + cellH / 2) ? 0b1000 : 0) |
|
|
86
|
+
(covered(x0 + cellW / 2, y0, x0 + cellW, y0 + cellH / 2) ? 0b0100 : 0) |
|
|
87
|
+
(covered(x0, y0 + cellH / 2, x0 + cellW / 2, y0 + cellH) ? 0b0010 : 0) |
|
|
88
|
+
(covered(x0 + cellW / 2, y0 + cellH / 2, x0 + cellW, y0 + cellH) ? 0b0001 : 0);
|
|
89
|
+
const ch = QUADRANT_CHARS[bits];
|
|
90
|
+
segs.push(ch === " " ? { text: " " } : { text: ch, token: "clawd" });
|
|
91
|
+
}
|
|
92
|
+
out.push(segs);
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
/** FOUNDER ROUND-2 DESIGN (2026-08-04 via pm-lead): the row mark is a flat
|
|
97
|
+
* claude-terracotta BLOCK with two short dark vertical eye bars centered —
|
|
98
|
+
* no limbs/legs; color + face ARE the mark at 2-cell size. Exact source
|
|
99
|
+
* values: body #ad6755, eyes #181818 (RuntimeMark.tsx). */
|
|
100
|
+
export function clawdFounderMark() {
|
|
101
|
+
// superseded by clawdSquareMark (round-3: wide-rect center-bunch REJECTED);
|
|
102
|
+
// kept for the decision-record lineage only
|
|
103
|
+
return [
|
|
104
|
+
{ text: "╹", token: "clawdEye", bg: "clawd" },
|
|
105
|
+
{ text: "╹", token: "clawdEye", bg: "clawd" },
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
/** PICKS-V4 clawd row mark (founder amendment, PICKS-OF-RECORD sha256-16
|
|
109
|
+
* 14afeb74, 2026-08-04 — a bounded refinement INSIDE the locked square-with-
|
|
110
|
+
* eyes direction): the eyes are literally the characters `><` — left eye `>`,
|
|
111
|
+
* right eye `<`, pointing INWARD, squinty (reference image-cache 102).
|
|
112
|
+
* Founder rationale verbatim: eyes at the far edges do not read as eyes;
|
|
113
|
+
* inward angle brackets make it read as a FACE. Dark #181818 eyes ON the
|
|
114
|
+
* #ad6755 terracotta field, unchanged. (Lineage: round-4 shipped the ▘▝
|
|
115
|
+
* outer-quadrant pair; superseded by this amendment.) */
|
|
116
|
+
export function clawdSquareMark() {
|
|
117
|
+
return [
|
|
118
|
+
{ text: ">", token: "clawdEye", bg: "clawd" },
|
|
119
|
+
{ text: "<", token: "clawdEye", bg: "clawd" },
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
/** ROUND-3 codex blue-hint CANDIDATES — PICKED at picks v4 (14afeb74):
|
|
123
|
+
* CHEVRON-ONLY, on detail/topology surfaces only (founder delegated; pm-lead
|
|
124
|
+
* ruled the most restrained option). codexMark() below now ships the chevron
|
|
125
|
+
* form; this record keeps the presented variants for decision lineage. Each
|
|
126
|
+
* variant uses the OFFICIAL sampled #6867aa (token codexBlue), never a
|
|
127
|
+
* remembered value. */
|
|
128
|
+
export function codexHintVariants() {
|
|
129
|
+
return {
|
|
130
|
+
none: codexMark(),
|
|
131
|
+
chevron: [
|
|
132
|
+
{ text: ">", token: "codexBlue", bold: true },
|
|
133
|
+
{ text: "_", token: "markInk", bold: true },
|
|
134
|
+
],
|
|
135
|
+
outline: [
|
|
136
|
+
{ text: "▕", token: "codexBlue" },
|
|
137
|
+
{ text: ">", token: "markInk", bold: true },
|
|
138
|
+
{ text: "_", token: "markInk", bold: true },
|
|
139
|
+
{ text: "▏", token: "codexBlue" },
|
|
140
|
+
],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/** row-mark CANDIDATES for the mr7 pick — both are downsample outputs */
|
|
144
|
+
export function clawdMiniA() {
|
|
145
|
+
return clawdDownsample(2, 1)[0];
|
|
146
|
+
}
|
|
147
|
+
export function clawdMiniB() {
|
|
148
|
+
return clawdDownsample(3, 1)[0];
|
|
149
|
+
}
|
|
150
|
+
/** Codex: the `>_` prompt mark with the PICKS-V4 CHEVRON-ONLY blue hint
|
|
151
|
+
* (item a, 14afeb74): the `>` carries the OFFICIAL sampled #6867aa; the `_`
|
|
152
|
+
* stays light ink. Text stays exactly ASCII `>_` (web-identity: the SAME
|
|
153
|
+
* mark, not a cousin; ❯ remains vetoed). This mark renders on detail +
|
|
154
|
+
* topology surfaces only — the explorer carries no marks (locked). */
|
|
155
|
+
export function codexMark() {
|
|
156
|
+
return [
|
|
157
|
+
{ text: ">", token: "codexBlue", bold: true },
|
|
158
|
+
{ text: "_", token: "markInk", bold: true },
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
/** terminal/tty runtime: dark cell + white `>_` — same family, inverted. */
|
|
162
|
+
export function terminalMark() {
|
|
163
|
+
return [
|
|
164
|
+
{ text: ">", token: "bright", bg: "markBg", bold: true },
|
|
165
|
+
{ text: "_", token: "bright", bg: "markBg", bold: true },
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
/** the row-scale mark for a served runtime string (placeholder-safe default:
|
|
169
|
+
* miniA for claude until the founder pick lands — swap point, one site) */
|
|
170
|
+
export function runtimeMarkSegs(runtime) {
|
|
171
|
+
const r = (runtime ?? "").toLowerCase();
|
|
172
|
+
if (r.startsWith("claude"))
|
|
173
|
+
return clawdSquareMark(); // round-3 locked square
|
|
174
|
+
if (r.startsWith("codex"))
|
|
175
|
+
return codexMark();
|
|
176
|
+
if (r === "terminal" || r === "tty" || r.startsWith("external"))
|
|
177
|
+
return terminalMark();
|
|
178
|
+
// unknown runtime: honest text token, dimmed — never a fabricated mark
|
|
179
|
+
return [{ text: "?", token: "dim" }];
|
|
180
|
+
}
|
|
181
|
+
/** plain-text width of a mark (all marks are single-cell glyphs) */
|
|
182
|
+
export function markText(segs) {
|
|
183
|
+
return segs.map((s) => s.text).join("");
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=runtime-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-marks.js","sourceRoot":"","sources":["../../src/topology/runtime-marks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GraphCanvas } from "../canvas.js";
|
|
2
|
+
import type { GraphLayout } from "../layout.js";
|
|
3
|
+
import type { StyleContext } from "./hatchet.js";
|
|
4
|
+
export declare function renderBraille(layout: GraphLayout, ctx: StyleContext, width: number, tier1Fallback: boolean): GraphCanvas;
|
|
5
|
+
//# sourceMappingURL=braille.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braille.d.ts","sourceRoot":"","sources":["../../../src/topology/styles/braille.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsCjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,WAAW,CAsCxH"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// SPIKE — `--style braille`: the optional smooth end (TIER-2, modern
|
|
2
|
+
// terminals). Same boxed nodes as the Hatchet mainline; edges drawn at 2×4
|
|
3
|
+
// sub-cell resolution as braille dot runs. DEMOTED by the founder refinement
|
|
4
|
+
// to an optional style — the proven TIER-1 fallback IS renderHatchet (same
|
|
5
|
+
// layout, box-drawing edges), so degrading loses smoothness, never meaning.
|
|
6
|
+
import { GraphCanvas } from "../canvas.js";
|
|
7
|
+
import { edgeToken } from "../glyphs.js";
|
|
8
|
+
import { drawClipIndicator, drawContainers, drawNodeBox, renderHatchet } from "./hatchet.js";
|
|
9
|
+
// braille dot bits by (subCol 0-1, subRow 0-3)
|
|
10
|
+
const DOT_BITS = [
|
|
11
|
+
[0x01, 0x02, 0x04, 0x40],
|
|
12
|
+
[0x08, 0x10, 0x20, 0x80],
|
|
13
|
+
];
|
|
14
|
+
class BrailleField {
|
|
15
|
+
cells = new Map();
|
|
16
|
+
setDot(px, py, token) {
|
|
17
|
+
const cellX = Math.floor(px / 2);
|
|
18
|
+
const cellY = Math.floor(py / 4);
|
|
19
|
+
const key = `${cellX},${cellY}`;
|
|
20
|
+
const bits = DOT_BITS[px % 2][py % 4];
|
|
21
|
+
const existing = this.cells.get(key);
|
|
22
|
+
this.cells.set(key, { bits: (existing?.bits ?? 0) | bits, token: existing?.token ?? token });
|
|
23
|
+
}
|
|
24
|
+
line(x1, y1, x2, y2, token) {
|
|
25
|
+
const steps = Math.max(Math.abs(x2 - x1), Math.abs(y2 - y1), 1);
|
|
26
|
+
for (let i = 0; i <= steps; i++) {
|
|
27
|
+
this.setDot(Math.round(x1 + ((x2 - x1) * i) / steps), Math.round(y1 + ((y2 - y1) * i) / steps), token);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
blit(canvas) {
|
|
31
|
+
for (const [key, cell] of this.cells) {
|
|
32
|
+
const [x, y] = key.split(",").map(Number);
|
|
33
|
+
if (canvas.charAt(x, y) !== " " || canvas.isProtected(x, y))
|
|
34
|
+
continue; // never dot boxes/text
|
|
35
|
+
canvas.set(x, y, String.fromCharCode(0x2800 + cell.bits), cell.token);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function renderBraille(layout, ctx, width, tier1Fallback) {
|
|
40
|
+
if (tier1Fallback)
|
|
41
|
+
return renderHatchet(layout, ctx, width); // the PROVEN fallback path
|
|
42
|
+
// DRAW ORDER = the hatchet semantics (pm kickback: opacity must be a CLASS
|
|
43
|
+
// invariant, never a draw-order artifact): (1) box-drawing edge runs first,
|
|
44
|
+
// (2) OPAQUE boxes clear any pass-through segment, (3) the braille field
|
|
45
|
+
// blits last but is protected-cell-aware, (4) arrowheads last of all.
|
|
46
|
+
const canvas = new GraphCanvas(width);
|
|
47
|
+
drawContainers(canvas, layout, ctx);
|
|
48
|
+
const field = new BrailleField();
|
|
49
|
+
const arrows = [];
|
|
50
|
+
for (const edge of layout.edges) {
|
|
51
|
+
const from = layout.byId.get(edge.source);
|
|
52
|
+
const to = layout.byId.get(edge.target);
|
|
53
|
+
if (!from || !to)
|
|
54
|
+
continue;
|
|
55
|
+
const token = edgeToken(edge.label);
|
|
56
|
+
const rightward = to.x > from.x;
|
|
57
|
+
const txCell = rightward ? to.x - 1 : to.x + to.w;
|
|
58
|
+
if (from.y === to.y) {
|
|
59
|
+
// CLEAN-BOX refinement: a straight horizontal is already straight —
|
|
60
|
+
// box-drawing ─ aligns mid-cell with the arrowhead (braille ⠤ sits low
|
|
61
|
+
// and kinks the junction); braille earns its keep on DIAGONALS only.
|
|
62
|
+
const [x1, x2] = rightward ? [from.x + from.w, txCell - 1] : [txCell + 1, from.x - 1];
|
|
63
|
+
canvas.hline(x1, x2, from.y + 1, "─", token);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const sx = (rightward ? from.x + from.w : from.x - 1) * 2;
|
|
67
|
+
const sy = (from.y + 1) * 4 + 2;
|
|
68
|
+
const tx = txCell * 2 + (rightward ? 0 : 1);
|
|
69
|
+
const ty = (to.y + 1) * 4 + 2;
|
|
70
|
+
field.line(sx, sy, tx, ty, token);
|
|
71
|
+
}
|
|
72
|
+
arrows.push({ x: txCell, y: to.y + 1, ch: rightward ? "▸" : "◂", token });
|
|
73
|
+
}
|
|
74
|
+
for (const p of layout.placed)
|
|
75
|
+
drawNodeBox(canvas, p, ctx);
|
|
76
|
+
field.blit(canvas); // protected-aware: never dots a box cell
|
|
77
|
+
for (const a of arrows)
|
|
78
|
+
if (!canvas.isProtected(a.x, a.y))
|
|
79
|
+
canvas.set(a.x, a.y, a.ch, a.token, true);
|
|
80
|
+
drawClipIndicator(canvas, layout, width);
|
|
81
|
+
canvas.text(2, canvas.height + 1, "braille sub-cell edges · TIER-2 (modern terminals) · fallback = hatchet box-drawing", "dim");
|
|
82
|
+
return canvas;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=braille.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braille.js","sourceRoot":"","sources":["../../../src/topology/styles/braille.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { GraphCanvas } from "../canvas.js";
|
|
2
|
+
import { edgeToken } from "../glyphs.js";
|
|
3
|
+
import type { GraphLayout, PlacedNode } from "../layout.js";
|
|
4
|
+
import type { Action } from "../../types.js";
|
|
5
|
+
export interface StyleContext {
|
|
6
|
+
/** host/rig names for drill actions (the SAME Action vocabulary every
|
|
7
|
+
* adapter dispatches — PIN-1) */
|
|
8
|
+
host: string;
|
|
9
|
+
rig: string;
|
|
10
|
+
/** logicalId of the selected node (accent border, like Hatchet) */
|
|
11
|
+
selected?: string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function drillAction(node: PlacedNode, ctx: StyleContext): Action;
|
|
14
|
+
export declare function drawNodeBox(canvas: GraphCanvas, p: PlacedNode, ctx: StyleContext): void;
|
|
15
|
+
interface Arrow {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
ch: string;
|
|
19
|
+
token: ReturnType<typeof edgeToken>;
|
|
20
|
+
}
|
|
21
|
+
/** straight orthogonal connector; the arrowhead is returned so the caller can
|
|
22
|
+
* draw it LAST (it must survive the node boxes painting over line ends) */
|
|
23
|
+
type Rect = {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
w: number;
|
|
27
|
+
h: number;
|
|
28
|
+
};
|
|
29
|
+
export declare function drawEdge(canvas: GraphCanvas, from: PlacedNode, to: PlacedNode, kind: string, lane?: number, obstacles?: Rect[]): Arrow;
|
|
30
|
+
/** R2 HIGH-1: the LOCKED containment hierarchy drawn as real container boxes
|
|
31
|
+
* — the rig (double border, name tab) wraps pod containers (light border,
|
|
32
|
+
* ▾-name tab, header hit zone → drill pod) which wrap their agent boxes.
|
|
33
|
+
* Containers are BACKGROUNDS (unprotected fills): edges may route across
|
|
34
|
+
* their interiors; agent boxes stay opaque+protected on top. */
|
|
35
|
+
export declare function drawContainers(canvas: GraphCanvas, layout: GraphLayout, ctx: StyleContext): void;
|
|
36
|
+
export declare function renderHatchet(layout: GraphLayout, ctx: StyleContext, width: number): GraphCanvas;
|
|
37
|
+
/** MR8 width-clip honesty: the view never quietly loses right-side nodes —
|
|
38
|
+
* an INDICATOR only (founder-scoped: no scroll, no rework, no cap) */
|
|
39
|
+
export declare function drawClipIndicator(canvas: GraphCanvas, layout: GraphLayout, width: number): void;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=hatchet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hatchet.d.ts","sourceRoot":"","sources":["../../../src/topology/styles/hatchet.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAkB,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,gBAAgB,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B;qCACiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAOvE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAmBvF;AAED,UAAU,KAAK;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CACrC;AAED;2EAC2E;AAC3E,KAAK,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,SAAS,GAAE,IAAI,EAAO,GAAG,KAAK,CAmDrI;AAED;;;;gEAIgE;AAChE,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAchG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAmBhG;AAED;sEACsE;AACtE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/F"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// SPIKE — the MAINLINE style (founder-preferred, Hatchet reference):
|
|
2
|
+
// boxed nodes + straight box-drawing connector lines + arrowheads.
|
|
3
|
+
// Info lives INSIDE the node (name line + runtime · ctx% · pod meta line),
|
|
4
|
+
// status lives ON the node (border color + glyph), edge KIND is line COLOR
|
|
5
|
+
// (delegates=teal accent · collaborates=green ok · escalates=amber warn) —
|
|
6
|
+
// NO text labels on the graph (founder refinement). TIER-1 glyphs only.
|
|
7
|
+
import { GraphCanvas } from "../canvas.js";
|
|
8
|
+
import { edgeToken } from "../glyphs.js";
|
|
9
|
+
import { runtimeMarkSegs } from "../runtime-marks.js";
|
|
10
|
+
export function drillAction(node, ctx) {
|
|
11
|
+
const target = {
|
|
12
|
+
host: ctx.host,
|
|
13
|
+
rig: ctx.rig,
|
|
14
|
+
...(node.node.data.podNamespace ? { pod: node.node.data.podNamespace } : {}),
|
|
15
|
+
};
|
|
16
|
+
return { type: "drill", resource: "agent", name: node.node.data.logicalId, target };
|
|
17
|
+
}
|
|
18
|
+
export function drawNodeBox(canvas, p, ctx) {
|
|
19
|
+
const selected = ctx.selected === p.node.data.logicalId;
|
|
20
|
+
const borderToken = selected ? "accent" : p.glyph.token;
|
|
21
|
+
canvas.box(p.x, p.y, p.w, p.h, borderToken);
|
|
22
|
+
canvas.text(p.x + 2, p.y + 1, p.glyph.glyph, p.glyph.token, true);
|
|
23
|
+
canvas.text(p.x + 4, p.y + 1, p.title, "bright", selected);
|
|
24
|
+
if (p.glyph.overlay)
|
|
25
|
+
canvas.text(p.x + 4 + p.title.length + 2, p.y + 1, p.glyph.overlay, "warn", true);
|
|
26
|
+
// S19 MR2: runtime renders as the web-family MARK + adjacent ctx%
|
|
27
|
+
let mx = p.x + 2;
|
|
28
|
+
for (const seg of runtimeMarkSegs(p.node.data.runtime)) {
|
|
29
|
+
canvas.text(mx, p.y + 2, seg.text, seg.token, seg.bold);
|
|
30
|
+
if (seg.bg)
|
|
31
|
+
for (let i = 0; i < seg.text.length; i++)
|
|
32
|
+
canvas.set(mx + i, p.y + 2, seg.text[i], seg.token, seg.bold, seg.bg);
|
|
33
|
+
mx += seg.text.length;
|
|
34
|
+
}
|
|
35
|
+
const ctxText = ` ${p.node.data.contextUsedPercentage == null ? "—" : `${Math.round(p.node.data.contextUsedPercentage)}%`}`;
|
|
36
|
+
canvas.text(mx, p.y + 2, ctxText, "dim");
|
|
37
|
+
// the WHOLE box is the hit surface — every row emits the same drill action
|
|
38
|
+
const action = drillAction(p, ctx);
|
|
39
|
+
for (let row = 0; row < p.h; row++)
|
|
40
|
+
canvas.zone(p.y + row, p.x, p.x + p.w, action);
|
|
41
|
+
}
|
|
42
|
+
export function drawEdge(canvas, from, to, kind, lane = 0, obstacles = []) {
|
|
43
|
+
const token = edgeToken(kind);
|
|
44
|
+
const sy = from.y + 1;
|
|
45
|
+
const ty = to.y + 1;
|
|
46
|
+
if (to.x > from.x + from.w) {
|
|
47
|
+
// rightward: out of source right edge, one corridor turn, into target left edge
|
|
48
|
+
const sx = from.x + from.w;
|
|
49
|
+
const corridor = to.x - 3 - lane * 2;
|
|
50
|
+
canvas.hline(sx, corridor, sy, "─", token);
|
|
51
|
+
if (sy !== ty) {
|
|
52
|
+
canvas.vline(corridor, Math.min(sy, ty), Math.max(sy, ty), "│", token);
|
|
53
|
+
canvas.set(corridor, sy, sy < ty ? "┐" : "┘", token);
|
|
54
|
+
canvas.set(corridor, ty, sy < ty ? "└" : "┌", token);
|
|
55
|
+
}
|
|
56
|
+
canvas.hline(corridor + 1, to.x - 2, ty, "─", token);
|
|
57
|
+
return { x: to.x - 1, y: ty, ch: "▸", token };
|
|
58
|
+
}
|
|
59
|
+
if (to.x + to.w < from.x) {
|
|
60
|
+
// leftward back-edge (escalation): route UNDER the boxes so it never
|
|
61
|
+
// crowds the delegation row — down, left along a low corridor, up into
|
|
62
|
+
// the target's bottom edge (the mockup's curve, box-drawn). The vertical
|
|
63
|
+
// legs pick columns that no OTHER box occupies (obstacle-aware).
|
|
64
|
+
const belowY = Math.max(...[from, to, ...obstacles].map((p) => p.y + p.h)) + 1 + lane;
|
|
65
|
+
const freeColumn = (box, fromRight) => {
|
|
66
|
+
const candidates = [];
|
|
67
|
+
for (let i = 2; i < box.w - 1; i++)
|
|
68
|
+
candidates.push(fromRight ? box.x + box.w - 1 - i : box.x + i);
|
|
69
|
+
for (const x of candidates) {
|
|
70
|
+
const blocked = obstacles.some((p) => p !== box && x >= p.x && x <= p.x + p.w - 1 && p.y + p.h > box.y + box.h && p.y <= belowY);
|
|
71
|
+
if (!blocked)
|
|
72
|
+
return x;
|
|
73
|
+
}
|
|
74
|
+
return box.x + 2;
|
|
75
|
+
};
|
|
76
|
+
const exitX = freeColumn(from, false);
|
|
77
|
+
const enterX = freeColumn(to, true);
|
|
78
|
+
canvas.vline(exitX, from.y + from.h, belowY - 1, "│", token);
|
|
79
|
+
canvas.set(exitX, belowY, "┘", token);
|
|
80
|
+
canvas.hline(enterX + 1, exitX - 1, belowY, "─", token);
|
|
81
|
+
canvas.set(enterX, belowY, "└", token);
|
|
82
|
+
canvas.vline(enterX, to.y + to.h + 1, belowY - 1, "│", token);
|
|
83
|
+
return { x: enterX, y: to.y + to.h, ch: "▴", token };
|
|
84
|
+
}
|
|
85
|
+
// same column: vertical connector
|
|
86
|
+
const x = from.x + Math.min(4, from.w - 2);
|
|
87
|
+
if (to.y > from.y) {
|
|
88
|
+
canvas.vline(x, from.y + from.h, to.y - 2, "│", token);
|
|
89
|
+
return { x, y: to.y - 1, ch: "▾", token };
|
|
90
|
+
}
|
|
91
|
+
canvas.vline(x, to.y + to.h + 1, from.y - 1, "│", token);
|
|
92
|
+
return { x, y: to.y + to.h, ch: "▴", token };
|
|
93
|
+
}
|
|
94
|
+
/** R2 HIGH-1: the LOCKED containment hierarchy drawn as real container boxes
|
|
95
|
+
* — the rig (double border, name tab) wraps pod containers (light border,
|
|
96
|
+
* ▾-name tab, header hit zone → drill pod) which wrap their agent boxes.
|
|
97
|
+
* Containers are BACKGROUNDS (unprotected fills): edges may route across
|
|
98
|
+
* their interiors; agent boxes stay opaque+protected on top. */
|
|
99
|
+
export function drawContainers(canvas, layout, ctx) {
|
|
100
|
+
for (const c of layout.containers) {
|
|
101
|
+
if (c.kind === "rig") {
|
|
102
|
+
canvas.box(c.x, c.y, c.w, c.h, "accent", true, false);
|
|
103
|
+
const tab = ` ▦ RIG ${c.name || ctx.rig} `; // round-3 rig glyph
|
|
104
|
+
canvas.text(c.x + 2, c.y, tab, "accent", true);
|
|
105
|
+
canvas.zone(c.y, c.x + 2, c.x + 2 + tab.length, { type: "drill", resource: "rig", name: c.name || ctx.rig, target: { host: ctx.host } });
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
canvas.box(c.x, c.y, c.w, c.h, "chrome", false, false);
|
|
109
|
+
const tab = ` ≡ ${c.name} `; // round-3 pod glyph
|
|
110
|
+
canvas.text(c.x + 1, c.y, tab, "accent", true);
|
|
111
|
+
canvas.zone(c.y, c.x + 1, c.x + 1 + tab.length, { type: "drill", resource: "pod", name: c.name, target: { host: ctx.host, rig: ctx.rig } });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export function renderHatchet(layout, ctx, width) {
|
|
116
|
+
const canvas = new GraphCanvas(width);
|
|
117
|
+
drawContainers(canvas, layout, ctx);
|
|
118
|
+
// then edges, agent boxes (borders clean up line ends), arrowheads LAST
|
|
119
|
+
const lanes = new Map();
|
|
120
|
+
const arrows = [];
|
|
121
|
+
for (const edge of layout.edges) {
|
|
122
|
+
const from = layout.byId.get(edge.source);
|
|
123
|
+
const to = layout.byId.get(edge.target);
|
|
124
|
+
if (!from || !to)
|
|
125
|
+
continue; // honest: an edge to an unknown node is not drawn as guesswork
|
|
126
|
+
const laneKey = `${to.x}:${to.x + to.w < from.x ? "back" : "fwd"}`;
|
|
127
|
+
const lane = lanes.get(laneKey) ?? 0;
|
|
128
|
+
lanes.set(laneKey, lane + 1);
|
|
129
|
+
arrows.push(drawEdge(canvas, from, to, edge.label, lane, [...layout.placed, ...layout.containers.filter((c) => c.kind === "pod")]));
|
|
130
|
+
}
|
|
131
|
+
for (const p of layout.placed)
|
|
132
|
+
drawNodeBox(canvas, p, ctx);
|
|
133
|
+
for (const a of arrows)
|
|
134
|
+
canvas.set(a.x, a.y, a.ch, a.token, true);
|
|
135
|
+
drawClipIndicator(canvas, layout, width);
|
|
136
|
+
return canvas;
|
|
137
|
+
}
|
|
138
|
+
/** MR8 width-clip honesty: the view never quietly loses right-side nodes —
|
|
139
|
+
* an INDICATOR only (founder-scoped: no scroll, no rework, no cap) */
|
|
140
|
+
export function drawClipIndicator(canvas, layout, width) {
|
|
141
|
+
if (!layout.clipped)
|
|
142
|
+
return;
|
|
143
|
+
const label = " content clipped ▸ ";
|
|
144
|
+
canvas.text(Math.max(width - label.length, 0), 0, label, "warn", true);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=hatchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hatchet.js","sourceRoot":"","sources":["../../../src/topology/styles/hatchet.ts"],"names":[],"mappings":"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"}
|