@junghanacs/entwurf 0.13.1 → 0.14.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/AGENTS.md +48 -15
- package/BASELINE.md +3 -3
- package/CHANGELOG.md +45 -0
- package/CONTRIBUTING.md +13 -9
- package/DELIVERY.md +7 -6
- package/README.md +27 -27
- package/VERIFY.md +22 -14
- package/demo/README.md +1 -1
- package/demo/demo-baseline.sh +1 -3
- package/demo/demo.sh +2 -5
- package/docs/acp-backend-rail.md +9 -4
- package/docs/external-mcp-host.md +4 -5
- package/docs/setup-clean-host.md +8 -7
- package/mcp/entwurf-bridge/dist/mcp/entwurf-bridge/src/index.js +148 -28
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/acp/overlay.js +8 -6
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-control-rpc.js +7 -5
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-core.js +13 -14
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-resume-args.js +45 -40
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-contract.js +117 -95
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-decider.js +23 -57
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-lock.js +16 -7
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-production.js +5 -53
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-release.js +21 -36
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-runner.js +3 -15
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-send-fallback.js +12 -11
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-send.js +2 -7
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-surface.js +30 -67
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-visible-resume.js +256 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/meta-session.js +91 -5
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-fresh-call.js +258 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-launch.js +202 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-placement.js +289 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-resume-call.js +170 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/resume-launch-identity.js +136 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/session-id.js +8 -5
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/socket-discovery.js +3 -3
- package/mcp/entwurf-bridge/dist/scripts/meta-facts.js +51 -0
- package/mcp/entwurf-bridge/dist/scripts/new-session-id.js +9 -4
- package/mcp/entwurf-bridge/src/index.ts +164 -28
- package/mcp/entwurf-bridge/start.sh +2 -2
- package/mcp/entwurf-bridge/test.sh +23 -9
- package/mcp/entwurf-bridge/tsconfig.build.json +11 -2
- package/package.json +22 -11
- package/pi-extensions/entwurf-control.ts +218 -40
- package/pi-extensions/lib/acp/backend.ts +71 -12
- package/pi-extensions/lib/acp/overlay.ts +8 -6
- package/pi-extensions/lib/entwurf-control-rpc.ts +7 -5
- package/pi-extensions/lib/entwurf-core.ts +15 -15
- package/pi-extensions/lib/entwurf-resume-args.ts +41 -52
- package/pi-extensions/lib/entwurf-v2-contract-schema.ts +1 -1
- package/pi-extensions/lib/entwurf-v2-contract.ts +120 -99
- package/pi-extensions/lib/entwurf-v2-decider.ts +30 -91
- package/pi-extensions/lib/entwurf-v2-lock.ts +16 -7
- package/pi-extensions/lib/entwurf-v2-production.ts +4 -78
- package/pi-extensions/lib/entwurf-v2-release.ts +25 -49
- package/pi-extensions/lib/entwurf-v2-runner.ts +6 -21
- package/pi-extensions/lib/entwurf-v2-send-fallback.ts +12 -11
- package/pi-extensions/lib/entwurf-v2-send.ts +2 -7
- package/pi-extensions/lib/entwurf-v2-surface.ts +36 -76
- package/pi-extensions/lib/entwurf-v2-visible-resume.ts +370 -0
- package/pi-extensions/lib/meta-session.ts +93 -5
- package/pi-extensions/lib/mux-fresh-call.ts +328 -0
- package/pi-extensions/lib/mux-launch.ts +267 -0
- package/pi-extensions/lib/mux-placement.ts +387 -0
- package/pi-extensions/lib/mux-resume-call.ts +221 -0
- package/pi-extensions/lib/resume-launch-identity.ts +162 -0
- package/pi-extensions/lib/session-id.js +8 -5
- package/pi-extensions/lib/socket-discovery.ts +3 -3
- package/run.sh +471 -201
- package/scripts/agy-bridge-config.py +5 -1
- package/scripts/check-acp-backend-preflight.ts +1 -1
- package/scripts/check-acp-overlay.ts +13 -3
- package/scripts/check-acp-stream-hooks.ts +504 -0
- package/scripts/check-elapsed.sh +25 -0
- package/scripts/check-entwurf-bridge-boot.ts +51 -4
- package/scripts/check-entwurf-bridge-pi-free.ts +6 -5
- package/scripts/check-entwurf-control-rpc.ts +4 -3
- package/scripts/check-entwurf-resume-args.ts +72 -70
- package/scripts/check-entwurf-session-identity.ts +14 -10
- package/scripts/check-entwurf-v2-contract.ts +34 -59
- package/scripts/check-entwurf-v2-decider.ts +17 -177
- package/scripts/check-entwurf-v2-lock.ts +5 -2
- package/scripts/check-entwurf-v2-matrix.ts +3 -53
- package/scripts/check-entwurf-v2-production.ts +2 -91
- package/scripts/check-entwurf-v2-release.ts +10 -105
- package/scripts/check-entwurf-v2-runner.ts +4 -85
- package/scripts/check-entwurf-v2-send-fallback.ts +5 -6
- package/scripts/check-entwurf-v2-send.ts +0 -28
- package/scripts/check-entwurf-v2-surface.ts +157 -128
- package/scripts/check-entwurf-v2-visible-resume.ts +445 -0
- package/scripts/check-fresh-cut-gate.sh +1 -1
- package/scripts/check-gate-qualification.ts +98 -7
- package/scripts/check-install-container.sh +10 -2
- package/scripts/check-install-surface.ts +1 -1
- package/scripts/check-keyset-overlap.py +1 -1
- package/scripts/check-meta-facts.ts +249 -0
- package/scripts/check-meta-identity-consumers.ts +1 -1
- package/scripts/check-meta-session.ts +169 -0
- package/scripts/check-mux-launch-tmux.ts +316 -0
- package/scripts/check-mux-launch.ts +288 -0
- package/scripts/check-mux-launcher-fence.ts +264 -0
- package/scripts/check-mux-parent-artifact.ts +195 -0
- package/scripts/check-mux-placement-tmux.ts +322 -0
- package/scripts/check-mux-placement.ts +323 -0
- package/scripts/check-mux-resume-call.ts +282 -0
- package/scripts/check-probe-cli-shim.ts +25 -22
- package/scripts/check-probe-ordering.ts +84 -76
- package/scripts/check-release-gate-outcomes.ts +127 -7
- package/scripts/check-resume-launch-identity.ts +244 -0
- package/scripts/check-socket-discovery.ts +1 -1
- package/scripts/fixtures/mux-parent-transcript.scrubbed.jsonl +3 -0
- package/scripts/inventory-verification-surface.ts +349 -0
- package/scripts/lib/claude-launcher-fence.ts +322 -0
- package/scripts/lib/mutation-qualify.ts +109 -3
- package/scripts/meta-bridge-doctor.sh +6 -8
- package/scripts/meta-facts.ts +60 -0
- package/scripts/mutants/acp-overlay.json +17 -0
- package/scripts/mutants/acp-stream-hooks.json +158 -0
- package/scripts/mutants/bridge-boot-resume.json +45 -0
- package/scripts/mutants/meta-facts.json +50 -0
- package/scripts/mutants/meta-identity.json +36 -0
- package/scripts/mutants/mux-boundary.json +196 -0
- package/scripts/mutants/mux-fresh-call.json +185 -0
- package/scripts/mutants/mux-launcher-fence.json +123 -0
- package/scripts/mutants/mux-parent-artifact.json +39 -0
- package/scripts/mutants/mux-resume-call.json +148 -0
- package/scripts/mutants/probe-ordering.json +0 -1037
- package/scripts/mutants/release-gate.json +35 -0
- package/scripts/mutants/resume-args.json +76 -0
- package/scripts/mutants/resume-launch-identity.json +96 -0
- package/scripts/mutants/v2-surface.json +58 -18
- package/scripts/mutants/v2-visible-resume.json +215 -0
- package/scripts/new-session-id.ts +9 -4
- package/scripts/smoke-acp-raw-turn-live.ts +1 -1
- package/scripts/smoke-agy-native-push-live.ts +6 -17
- package/scripts/smoke-entwurf-v2-matrix-live.ts +1 -1
- package/scripts/smoke-meta-honesty.sh +1 -1
- package/scripts/smoke-mux-fresh-call-live.ts +365 -0
- package/scripts/smoke-mux-lifecycle-live.ts +1136 -0
- package/scripts/smoke-pi-attach.ts +1 -1
- package/scripts/smoke-user-scope-citizen.sh +1 -1
- package/scripts/tsconfig.json +1 -0
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-preflight.js +0 -160
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-spawn-production.js +0 -273
- package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-spawn.js +0 -216
- package/pi-extensions/lib/entwurf-v2-spawn-production.ts +0 -373
- package/pi-extensions/lib/entwurf-v2-spawn.ts +0 -323
- package/scripts/check-acp-sdk-surface.ts +0 -275
- package/scripts/check-entwurf-v2-spawn-production.ts +0 -551
- package/scripts/check-entwurf-v2-spawn.ts +0 -399
- package/scripts/smoke-entwurf-v2-spawn-live.ts +0 -188
- package/scripts/smoke-entwurf-v2-spawn-resume-live.ts +0 -467
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"lane": "mux-resume-call",
|
|
4
|
+
"mutants": [
|
|
5
|
+
{
|
|
6
|
+
"claim": "MUXRESUME-CWD-MISSING-REFUSED",
|
|
7
|
+
"title": "a deleted recorded cwd is accepted — tmux then opens the window in $HOME and the wrong-project resume looks successful",
|
|
8
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
9
|
+
"find": ["\t\treturn \"cwd-missing\";"],
|
|
10
|
+
"replace": ["\t\treturn null;"],
|
|
11
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
12
|
+
"timeoutSeconds": 60,
|
|
13
|
+
"signature": "[QK:MUXRESUME-CWD-MISSING-REFUSED]",
|
|
14
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"claim": "MUXRESUME-CWD-FORMAT-REFUSED",
|
|
18
|
+
"title": "the '#' refusal stops matching, so tmux format-expands the path it was handed",
|
|
19
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
20
|
+
"find": ["\tif (cwd.includes(\"#\")) return \"cwd-format-token\";"],
|
|
21
|
+
"replace": ["\tif (cwd.includes(\"\\u0000\")) return \"cwd-format-token\";"],
|
|
22
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
23
|
+
"timeoutSeconds": 60,
|
|
24
|
+
"signature": "[QK:MUXRESUME-CWD-FORMAT-REFUSED]",
|
|
25
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"claim": "MUXRESUME-CWD-WHITESPACE-OK",
|
|
29
|
+
"title": "a quoting fear is added back as a whitespace refusal, which would reject real project directories tmux handles fine",
|
|
30
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
31
|
+
"find": ["\tif (cwd.includes(\"#\")) return \"cwd-format-token\";"],
|
|
32
|
+
"replace": ["\tif (cwd.includes(\"#\") || /\\s/.test(cwd)) return \"cwd-format-token\";"],
|
|
33
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
34
|
+
"timeoutSeconds": 60,
|
|
35
|
+
"signature": "[QK:MUXRESUME-CWD-WHITESPACE-OK]",
|
|
36
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"claim": "MUXRESUME-ARGV-HAS-CWD",
|
|
40
|
+
"title": "the -c is dropped, so the citizen comes back in the CALLER's directory instead of its own project",
|
|
41
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
42
|
+
"find": ["\t\t\"-c\",\n\t\tcwd,\n\t\t\"-P\","],
|
|
43
|
+
"replace": ["\t\t\"-P\","],
|
|
44
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
45
|
+
"timeoutSeconds": 60,
|
|
46
|
+
"signature": "[QK:MUXRESUME-ARGV-HAS-CWD]",
|
|
47
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"claim": "MUXRESUME-ARGV-RUNTIME-AFTER-DASHDASH",
|
|
51
|
+
"title": "the `--` separator is dropped, so tmux reads pi's own flags as tmux options",
|
|
52
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
53
|
+
"find": ["\t\t\"--\",\n\t\truntimePath,"],
|
|
54
|
+
"replace": ["\t\truntimePath,"],
|
|
55
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
56
|
+
"timeoutSeconds": 60,
|
|
57
|
+
"signature": "[QK:MUXRESUME-ARGV-RUNTIME-AFTER-DASHDASH]",
|
|
58
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"claim": "MUXRESUME-ARGV-CARRIER-FREE",
|
|
62
|
+
"title": "a window-name carrier is added to the append shape, which is how a placement verb starts growing knobs it does not own",
|
|
63
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
64
|
+
"find": ["\t\t\"-P\","],
|
|
65
|
+
"replace": ["\t\t\"-n\",\n\t\t\"resume\",\n\t\t\"-P\","],
|
|
66
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
67
|
+
"timeoutSeconds": 60,
|
|
68
|
+
"signature": "[QK:MUXRESUME-ARGV-CARRIER-FREE]",
|
|
69
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"claim": "MUXRESUME-NO-IDENTITY",
|
|
73
|
+
"title": "identity vocabulary enters the placement module, which is the first step of a leaf learning whose citizen it is opening",
|
|
74
|
+
"subject": "pi-extensions/lib/mux-resume-call.ts",
|
|
75
|
+
"find": ["export const RESUME_CALL_RUNTIME = \"pi\";"],
|
|
76
|
+
"replace": ["export const RESUME_CALL_RUNTIME = \"pi\";\nexport const RESUME_CALL_TARGET_KEY = \"gardenId\";"],
|
|
77
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
78
|
+
"timeoutSeconds": 60,
|
|
79
|
+
"signature": "[QK:MUXRESUME-NO-IDENTITY]",
|
|
80
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"claim": "MUXRESUME-SURFACE-SEAM",
|
|
84
|
+
"title": "the v2 composition imports mux directly, collapsing the injected seam that keeps the delivery fence where the boundary gate scans for it",
|
|
85
|
+
"subject": "pi-extensions/lib/entwurf-v2-visible-resume.ts",
|
|
86
|
+
"find": ["import { buildResumePiArgs } from \"./entwurf-resume-args.ts\";"],
|
|
87
|
+
"replace": [
|
|
88
|
+
"import { buildResumePiArgs } from \"./entwurf-resume-args.ts\";\nimport { RESUME_CALL_RUNTIME } from \"./mux-resume-call.ts\";\nvoid RESUME_CALL_RUNTIME;"
|
|
89
|
+
],
|
|
90
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
91
|
+
"timeoutSeconds": 60,
|
|
92
|
+
"signature": "[QK:MUXRESUME-SURFACE-SEAM]",
|
|
93
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"claim": "MUXRESUME-PI-SURFACE-REGISTERED",
|
|
97
|
+
"title": "the native pi registration is never called, so the verb exists in source and nowhere an operator can reach",
|
|
98
|
+
"subject": "pi-extensions/entwurf-control.ts",
|
|
99
|
+
"find": ["\t\tregisterResumeCallTool(pi);"],
|
|
100
|
+
"replace": ["\t\tvoid registerResumeCallTool;"],
|
|
101
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
102
|
+
"timeoutSeconds": 60,
|
|
103
|
+
"signature": "[QK:MUXRESUME-PI-SURFACE-REGISTERED]",
|
|
104
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"claim": "MUXRESUME-PI-SURFACE-TARGET-ONLY",
|
|
108
|
+
"title": "a task knob is added to the native schema, re-opening the prompt axis a resume deliberately does not have",
|
|
109
|
+
"subject": "pi-extensions/entwurf-control.ts",
|
|
110
|
+
"find": [
|
|
111
|
+
"\t\t\t\tdescription: \"Garden id of the DORMANT pi citizen to reopen (discover with entwurf_peers).\",\n\t\t\t}),"
|
|
112
|
+
],
|
|
113
|
+
"replace": [
|
|
114
|
+
"\t\t\t\tdescription: \"Garden id of the DORMANT pi citizen to reopen (discover with entwurf_peers).\",\n\t\t\t}),\n\t\t\ttask: Type.String({ description: \"What the resumed citizen should do.\" }),"
|
|
115
|
+
],
|
|
116
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
117
|
+
"timeoutSeconds": 60,
|
|
118
|
+
"signature": "[QK:MUXRESUME-PI-SURFACE-TARGET-ONLY]",
|
|
119
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"claim": "MUXRESUME-DESC-CONTRACT-PI",
|
|
123
|
+
"title": "the native description stops saying a resume runs no turn, so a caller reasonably expects the citizen to act on being reopened",
|
|
124
|
+
"subject": "pi-extensions/entwurf-control.ts",
|
|
125
|
+
"find": ["This runs NO turn: the window comes\nback with the conversation and waits"],
|
|
126
|
+
"replace": ["The window comes\nback with the conversation and waits"],
|
|
127
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
128
|
+
"timeoutSeconds": 60,
|
|
129
|
+
"signature": "[QK:MUXRESUME-DESC-CONTRACT-PI]",
|
|
130
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"claim": "MUXRESUME-DESC-CONTRACT-MCP",
|
|
134
|
+
"title": "the MCP description drops the dormant-only scope, inviting callers to aim the verb at live citizens it will refuse",
|
|
135
|
+
"subject": "mcp/entwurf-bridge/src/index.ts",
|
|
136
|
+
"find": [
|
|
137
|
+
"\t\"Reopen ONE DORMANT pi citizen under its OWN garden id, in a visible window in the operator's own tmux \""
|
|
138
|
+
],
|
|
139
|
+
"replace": [
|
|
140
|
+
"\t\"Reopen ONE pi citizen under its OWN garden id, in a visible window in the operator's own tmux \""
|
|
141
|
+
],
|
|
142
|
+
"gate": ["bash", "run.sh", "check-mux-resume-call"],
|
|
143
|
+
"timeoutSeconds": 60,
|
|
144
|
+
"signature": "[QK:MUXRESUME-DESC-CONTRACT-MCP]",
|
|
145
|
+
"signatureSource": "scripts/check-mux-resume-call.ts"
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|