@cluesmith/codev 3.3.1 → 3.3.2
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/dashboard-dist/assets/index-D3XaKpZW.js.map +1 -1
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +52 -1
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/reset/constants.d.ts +118 -0
- package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/constants.js +118 -0
- package/dist/agent-farm/commands/reset/constants.js.map +1 -1
- package/dist/agent-farm/commands/reset/context.d.ts +18 -0
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/context.js +41 -0
- package/dist/agent-farm/commands/reset/context.js.map +1 -1
- package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/receipt.js +16 -5
- package/dist/agent-farm/commands/reset/receipt.js.map +1 -1
- package/dist/agent-farm/commands/reset/reorient.d.ts +1 -1
- package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/reorient.js +8 -1
- package/dist/agent-farm/commands/reset/reorient.js.map +1 -1
- package/dist/agent-farm/commands/reset/self.d.ts +335 -0
- package/dist/agent-farm/commands/reset/self.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/self.js +636 -0
- package/dist/agent-farm/commands/reset/self.js.map +1 -0
- package/dist/agent-farm/commands/reset.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset.js +23 -18
- package/dist/agent-farm/commands/reset.js.map +1 -1
- package/dist/agent-farm/commands/self-refresh.d.ts +60 -0
- package/dist/agent-farm/commands/self-refresh.d.ts.map +1 -0
- package/dist/agent-farm/commands/self-refresh.js +506 -0
- package/dist/agent-farm/commands/self-refresh.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +27 -2
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +7 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +13 -1
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +12 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +12 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/servers/mailbox-delivery.d.ts +141 -13
- package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-delivery.js +172 -16
- package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.d.ts +23 -1
- package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.js +91 -31
- package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +58 -18
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
- package/dist/agent-farm/servers/message-write.js +73 -28
- package/dist/agent-farm/servers/message-write.js.map +1 -1
- package/dist/agent-farm/servers/render-gate.d.ts +13 -0
- package/dist/agent-farm/servers/render-gate.d.ts.map +1 -1
- package/dist/agent-farm/servers/render-gate.js +21 -0
- package/dist/agent-farm/servers/render-gate.js.map +1 -1
- package/dist/agent-farm/servers/session-submit.d.ts +220 -27
- package/dist/agent-farm/servers/session-submit.d.ts.map +1 -1
- package/dist/agent-farm/servers/session-submit.js +333 -42
- package/dist/agent-farm/servers/session-submit.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +114 -25
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +14 -0
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/types.d.ts +36 -1
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.d.ts +60 -4
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.js +115 -22
- package/dist/agent-farm/utils/message-format.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +8 -2
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +19 -2
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/commands/porch/context-refresh.d.ts +181 -0
- package/dist/commands/porch/context-refresh.d.ts.map +1 -0
- package/dist/commands/porch/context-refresh.js +270 -0
- package/dist/commands/porch/context-refresh.js.map +1 -0
- package/dist/commands/porch/index.d.ts +6 -0
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +46 -0
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +0 -9
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +133 -4
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +102 -0
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/types.d.ts +61 -0
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/lib/self-refresh-invocation.d.ts +60 -0
- package/dist/lib/self-refresh-invocation.d.ts.map +1 -0
- package/dist/lib/self-refresh-invocation.js +64 -0
- package/dist/lib/self-refresh-invocation.js.map +1 -0
- package/dist/lib/test-env.d.ts +50 -0
- package/dist/lib/test-env.d.ts.map +1 -1
- package/dist/lib/test-env.js +76 -0
- package/dist/lib/test-env.js.map +1 -1
- package/package.json +4 -4
- package/skeleton/.claude/skills/arch-save/SKILL.md +8 -2
- package/skeleton/.claude/skills/builder-refresh/SKILL.md +138 -0
- package/skeleton/.codex/skills/arch-save/SKILL.md +8 -2
- package/skeleton/.codex/skills/builder-refresh/SKILL.md +138 -0
- package/skeleton/protocol-schema.json +17 -0
- package/skeleton/protocols/air/protocol.json +1 -1
- package/skeleton/protocols/aspir/protocol.json +5 -1
- package/skeleton/protocols/bugfix/protocol.json +1 -1
- package/skeleton/protocols/experiment/protocol.json +1 -1
- package/skeleton/protocols/maintain/protocol.json +1 -1
- package/skeleton/protocols/pir/protocol.json +1 -1
- package/skeleton/protocols/protocol-schema.json +17 -0
- package/skeleton/protocols/research/protocol.json +1 -1
- package/skeleton/protocols/spike/protocol.json +1 -1
- package/skeleton/protocols/spir/protocol.json +5 -1
|
@@ -73,6 +73,107 @@ function findProtocolFile(workspaceRoot, protocolName) {
|
|
|
73
73
|
}
|
|
74
74
|
return null;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Parse and validate a protocol's `context_refresh` block (Spec 1470).
|
|
78
|
+
*
|
|
79
|
+
* ## Why this rejects rather than ignores
|
|
80
|
+
*
|
|
81
|
+
* There is no runtime schema validation anywhere in porch — `loadProtocol` is
|
|
82
|
+
* `JSON.parse` plus this hand-rolled normalizer, and `protocol-schema.json` is
|
|
83
|
+
* editor tooling that validates nothing at run time. So an unresolvable
|
|
84
|
+
* declaration has no other layer to catch it: a boundary naming a phase the
|
|
85
|
+
* protocol does not have would simply never match a transition, and the protocol
|
|
86
|
+
* author would see a feature that is configured, reports no error, and silently
|
|
87
|
+
* never fires.
|
|
88
|
+
*
|
|
89
|
+
* A context refresh that does not happen is invisible by nature — the builder
|
|
90
|
+
* just keeps accumulating context — so this is the ONLY place the mistake can
|
|
91
|
+
* be made loud. Every rejection names the offending value, because "invalid
|
|
92
|
+
* context_refresh" sends the author back to guess which of several keys is wrong.
|
|
93
|
+
*
|
|
94
|
+
* @param raw The `context_refresh` value as it appears in protocol.json
|
|
95
|
+
* @param phases Already-normalized phases, used to prove each boundary resolves
|
|
96
|
+
* @param protocolName For error messages
|
|
97
|
+
*/
|
|
98
|
+
function normalizeContextRefresh(raw, phases, protocolName) {
|
|
99
|
+
// ONLY `undefined` means "omitted". An explicit `null` is a configuration
|
|
100
|
+
// act that would silently do nothing, which is the same silent no-op this
|
|
101
|
+
// function exists to reject — and all three schemas type this key as an
|
|
102
|
+
// object, so `null` violates them too. An author who wants no refreshes omits
|
|
103
|
+
// the key.
|
|
104
|
+
if (raw === undefined)
|
|
105
|
+
return undefined;
|
|
106
|
+
const fail = (msg) => {
|
|
107
|
+
throw new Error(`Invalid protocol '${protocolName}': context_refresh ${msg}`);
|
|
108
|
+
};
|
|
109
|
+
if (raw === null) {
|
|
110
|
+
return fail('is null; omit the key entirely to declare no refresh boundaries');
|
|
111
|
+
}
|
|
112
|
+
if (typeof raw !== 'object' || Array.isArray(raw)) {
|
|
113
|
+
return fail(`must be an object, got ${Array.isArray(raw) ? 'array' : typeof raw}`);
|
|
114
|
+
}
|
|
115
|
+
const obj = raw;
|
|
116
|
+
// Unknown keys are rejected rather than ignored: a typo'd key
|
|
117
|
+
// ("on_entry" for "on_enter") is indistinguishable from "declared nothing"
|
|
118
|
+
// if we skip it, which is the silent-no-op failure this whole function exists
|
|
119
|
+
// to prevent.
|
|
120
|
+
const KNOWN = new Set(['on_enter', 'on_plan_phase_advance']);
|
|
121
|
+
for (const key of Object.keys(obj)) {
|
|
122
|
+
if (!KNOWN.has(key)) {
|
|
123
|
+
return fail(`has unknown key '${key}' (expected one of: ${[...KNOWN].join(', ')})`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
let on_enter;
|
|
127
|
+
if (obj.on_enter !== undefined) {
|
|
128
|
+
if (!Array.isArray(obj.on_enter)) {
|
|
129
|
+
return fail(`on_enter must be an array of phase ids, got ${typeof obj.on_enter}`);
|
|
130
|
+
}
|
|
131
|
+
const phaseIds = new Set(phases.map(p => p.id));
|
|
132
|
+
for (const entry of obj.on_enter) {
|
|
133
|
+
if (typeof entry !== 'string') {
|
|
134
|
+
return fail(`on_enter entries must be strings, got ${typeof entry}`);
|
|
135
|
+
}
|
|
136
|
+
if (!phaseIds.has(entry)) {
|
|
137
|
+
return fail(`on_enter names phase '${entry}', which this protocol does not have ` +
|
|
138
|
+
`(phases: ${[...phaseIds].join(', ')})`);
|
|
139
|
+
}
|
|
140
|
+
// The protocol's FIRST phase is never transitioned INTO — `porch init`
|
|
141
|
+
// sets it directly as the starting state, and every transition site moves
|
|
142
|
+
// to a SUCCESSOR. So an entry boundary on it would validate cleanly and
|
|
143
|
+
// then never fire: the same silent no-op rejected just above for
|
|
144
|
+
// `on_plan_phase_advance`, and the reason this validator exists.
|
|
145
|
+
if (entry === phases[0]?.id) {
|
|
146
|
+
return fail(`on_enter names '${entry}', which is this protocol's first phase. A project ` +
|
|
147
|
+
`STARTS there rather than transitioning into it, so the boundary could never fire`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Duplicates resolve fine but say something the author did not mean — a
|
|
151
|
+
// boundary cannot fire twice on one transition. Rejecting keeps the runtime
|
|
152
|
+
// in step with the schemas' `uniqueItems`, so the two cannot disagree.
|
|
153
|
+
const seen = new Set();
|
|
154
|
+
for (const entry of obj.on_enter) {
|
|
155
|
+
if (seen.has(entry))
|
|
156
|
+
return fail(`on_enter lists phase '${entry}' more than once`);
|
|
157
|
+
seen.add(entry);
|
|
158
|
+
}
|
|
159
|
+
on_enter = obj.on_enter;
|
|
160
|
+
}
|
|
161
|
+
let on_plan_phase_advance;
|
|
162
|
+
if (obj.on_plan_phase_advance !== undefined) {
|
|
163
|
+
if (typeof obj.on_plan_phase_advance !== 'boolean') {
|
|
164
|
+
return fail(`on_plan_phase_advance must be a boolean, got ${typeof obj.on_plan_phase_advance}`);
|
|
165
|
+
}
|
|
166
|
+
// A protocol with no per_plan_phase phase never advances between plan
|
|
167
|
+
// phases, so `true` here is a declaration that can never fire — the exact
|
|
168
|
+
// silent no-op this validator exists to reject.
|
|
169
|
+
if (obj.on_plan_phase_advance && !phases.some(p => p.type === 'per_plan_phase')) {
|
|
170
|
+
return fail(`on_plan_phase_advance is true, but this protocol has no 'per_plan_phase' phase, ` +
|
|
171
|
+
`so the boundary could never fire`);
|
|
172
|
+
}
|
|
173
|
+
on_plan_phase_advance = obj.on_plan_phase_advance;
|
|
174
|
+
}
|
|
175
|
+
return { on_enter, on_plan_phase_advance };
|
|
176
|
+
}
|
|
76
177
|
/**
|
|
77
178
|
* Normalize protocol JSON to our simplified Protocol type
|
|
78
179
|
*/
|
|
@@ -136,6 +237,7 @@ function normalizeProtocol(json) {
|
|
|
136
237
|
phases,
|
|
137
238
|
checks,
|
|
138
239
|
phase_completion,
|
|
240
|
+
context_refresh: normalizeContextRefresh(obj.context_refresh, phases, obj.name),
|
|
139
241
|
};
|
|
140
242
|
}
|
|
141
243
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/commands/porch/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/commands/porch/protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,aAAqB,EAAE,YAAoB;IACtE,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,aAAa,YAAY,gBAAgB;YACzC,iCAAiC,YAAY,sBAAsB,YAAY,mCAAmC,YAAY,GAAG,CAClI,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,aAAqB,EAAE,YAAoB;IACnE,qCAAqC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,YAAY,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC5F,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,6DAA6D;IAC7D,sCAAsC;IACtC,MAAM,YAAY,GAAG;QACnB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC;KAClD,CAAC;IACF,4BAA4B;IAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5D,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,SAAS;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBAC/D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;gBACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACvC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;wBACnC,OAAO,QAAQ,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,uBAAuB,CAC9B,GAAY,EACZ,MAAuB,EACvB,YAAoB;IAEpB,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,8EAA8E;IAC9E,WAAW;IACX,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAExC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAS,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,sBAAsB,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,iEAAiE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,0BAA0B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,8DAA8D;IAC9D,2EAA2E;IAC3E,8EAA8E;IAC9E,cAAc;IACd,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,IAAI,QAA8B,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,+CAA+C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,yCAAyC,OAAO,KAAK,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CACT,yBAAyB,KAAK,uCAAuC;oBACnE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1C,CAAC;YACJ,CAAC;YACD,uEAAuE;YACvE,0EAA0E;YAC1E,wEAAwE;YACxE,iEAAiE;YACjE,iEAAiE;YACjE,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC5B,OAAO,IAAI,CACT,mBAAmB,KAAK,qDAAqD;oBAC3E,kFAAkF,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAoB,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,yBAAyB,KAAK,kBAAkB,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,QAAQ,GAAG,GAAG,CAAC,QAAoB,CAAC;IACtC,CAAC;IAED,IAAI,qBAA0C,CAAC;IAC/C,IAAI,GAAG,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,OAAO,GAAG,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,IAAI,CACT,gDAAgD,OAAO,GAAG,CAAC,qBAAqB,EAAE,CACnF,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,GAAG,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;YAChF,OAAO,IAAI,CACT,kFAAkF;gBAChF,kCAAkC,CACrC,CAAC;QACJ,CAAC;QACD,qBAAqB,GAAG,GAAG,CAAC,qBAAqB,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,MAAM,GAAoB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,8DAA8D;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAA+C,CAAC;IACrE,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAiC,CAAC,EAAE,CAAC;YACrF,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,GAA8B,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAiB,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAyB,EAAE,CAAC;YAClG,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAwC,EAAE,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAiC,CAAC,EAAE,CAAC;gBACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;oBACtE,MAAM,QAAQ,GAAG,KAAgC,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAiB,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAyB,EAAE,CAAC;gBAClG,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,gBAAoD,CAAC;IACzD,IAAI,GAAG,CAAC,gBAAgB,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACrE,gBAAgB,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAA2C,CAAC,EAAE,CAAC;YAC1F,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAc;QACxB,OAAO,EAAE,GAAG,CAAC,OAA6B;QAC1C,WAAW,EAAE,GAAG,CAAC,WAAiC;QAClD,MAAM;QACN,MAAM;QACN,gBAAgB;QAChB,eAAe,EAAE,uBAAuB,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,IAAc,CAAC;KAC1F,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,CAAU;IAChC,MAAM,KAAK,GAAG,CAA4B,CAAC;IAE3C,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAA+B,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAiD,CAAC;IAE3E,4DAA4D;IAC5D,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,KAAK,CAAC,IAA+B,CAAC;QACtD,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,GAAG,OAAO,CAAC,IAAqB,CAAC;QACvC,CAAC;IACH,CAAC;IAED,IAAI,UAAU,EAAE,WAAW,EAAE,CAAC;QAC5B,IAAI,GAAG,UAAU,CAAC,WAAqB,CAAC;IAC1C,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAiC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,+CAA+C;IAC/C,IAAI,KAA8B,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAA4C,CAAC;IACpE,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,GAAG;YACN,MAAM,EAAE,QAAQ,CAAC,MAAgB;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAkB;SACtC,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,IAAI,MAAgC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAA6C,CAAC;IACtE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG;YACP,IAAI,EAAE,SAAS,CAAC,IAAc;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAkB;YACpC,QAAQ,EAAG,SAAS,CAAC,QAAoB,IAAI,IAAI;SAClD,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,WAAyC,CAAC;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,WAAkD,CAAC;IAC/E,IAAI,aAAa,EAAE,CAAC;QAClB,WAAW,GAAG;YACZ,MAAM,EAAE,aAAa,CAAC,MAA6B;YACnD,IAAI,EAAE,aAAa,CAAC,IAA2B;SAChD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAY;QACtB,IAAI,EAAG,KAAK,CAAC,IAAe,IAAI,KAAK,CAAC,EAAY;QAClD,IAAI,EAAE,KAAK,CAAC,IAA8D;QAC1E,KAAK;QACL,MAAM;QACN,cAAc,EAAG,KAAK,CAAC,cAAyB,IAAI,CAAC;QACrD,WAAW;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC9C,IAAI;KACL,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,OAAe;IAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB,EAAE,cAAsB;IACrE,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,OAAe,EACf,SAA0B;IAE1B,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,sEAAsE;IACtE,6EAA6E;IAC7E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;YAChC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;YACrC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,8BAA8B;YAClE,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,8BAA8B;YACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,IAAI,oCAAoC,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,IAAI;gBAAE,SAAS,CAAC,kBAAkB;YAC/C,MAAM,CAAC,SAAS,CAAC,GAAG;gBAClB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;gBACzC,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;aAC9B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAkB,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAkB,EAAE,OAAe;IAC1D,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAkB,EAClB,SAA0B;IAE1B,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;QAChC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QACrC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;KAChD,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,IAAI,oCAAoC,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,IAAI;YAAE,SAAS,CAAC,+BAA+B;QAC7D,IAAI,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,OAAe;IAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,OAAe;IAChE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,OAAe;IACjE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,OAAe;IAClE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,cAAc,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB,EAAE,OAAe;IACrE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,OAAe;IACnE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;AAC9B,CAAC"}
|
|
@@ -59,6 +59,43 @@ export interface CheckOverride {
|
|
|
59
59
|
}
|
|
60
60
|
/** Map of check name → override, from .codev/config.json `porch.checks` */
|
|
61
61
|
export type CheckOverrides = Record<string, CheckOverride>;
|
|
62
|
+
/**
|
|
63
|
+
* Context-refresh boundaries a protocol declares (Spec 1470).
|
|
64
|
+
*
|
|
65
|
+
* A "boundary" is a moment porch already transitions the state machine, at which
|
|
66
|
+
* a builder's context can be refreshed without losing anything: the artifacts,
|
|
67
|
+
* `status.yaml`, the thread narrative and git carry the durable state, so a
|
|
68
|
+
* refreshed builder re-orients from disk rather than from memory.
|
|
69
|
+
*
|
|
70
|
+
* Keyed by porch's OWN transition points rather than by protocol-shaped literal
|
|
71
|
+
* names (`after-spec`, `before-review`). A literal name has to be mapped onto a
|
|
72
|
+
* real transition somewhere, and that mapping is exactly what goes stale when a
|
|
73
|
+
* protocol changes shape — leaving a boundary that can be declared but never
|
|
74
|
+
* fires. Naming the transition directly removes the translation layer.
|
|
75
|
+
*
|
|
76
|
+
* Absent key means no refreshes, which is the default for every protocol that
|
|
77
|
+
* does not opt in.
|
|
78
|
+
*/
|
|
79
|
+
export interface ContextRefreshConfig {
|
|
80
|
+
/**
|
|
81
|
+
* Protocol phase ids to refresh on ENTRY to.
|
|
82
|
+
*
|
|
83
|
+
* Entry, not exit: the spec requires the refresh to happen after the gate
|
|
84
|
+
* outcome and the phase transition are durable in `status.yaml`, so a
|
|
85
|
+
* refreshed builder cannot mistake "waiting at a gate" for "approved".
|
|
86
|
+
*/
|
|
87
|
+
on_enter?: string[];
|
|
88
|
+
/**
|
|
89
|
+
* Refresh when advancing from one plan phase to the NEXT one.
|
|
90
|
+
*
|
|
91
|
+
* "Advance between", not "enter each": entering the `implement` phase IS
|
|
92
|
+
* entering the first plan phase, so a per-plan-phase boundary that fired on
|
|
93
|
+
* entry would fire twice in a row at that moment. Defining it as advancement
|
|
94
|
+
* excludes the first plan phase by construction rather than by a dedup rule
|
|
95
|
+
* somebody has to remember.
|
|
96
|
+
*/
|
|
97
|
+
on_plan_phase_advance?: boolean;
|
|
98
|
+
}
|
|
62
99
|
/**
|
|
63
100
|
* Protocol definition (loaded from protocol.json)
|
|
64
101
|
*/
|
|
@@ -69,6 +106,7 @@ export interface Protocol {
|
|
|
69
106
|
phases: ProtocolPhase[];
|
|
70
107
|
checks?: Record<string, CheckDef>;
|
|
71
108
|
phase_completion?: Record<string, string>;
|
|
109
|
+
context_refresh?: ContextRefreshConfig;
|
|
72
110
|
}
|
|
73
111
|
/**
|
|
74
112
|
* Gate status
|
|
@@ -161,6 +199,29 @@ export interface ProjectState {
|
|
|
161
199
|
* pre-date this field stay parseable.
|
|
162
200
|
*/
|
|
163
201
|
pr_ready_for_human?: boolean;
|
|
202
|
+
/**
|
|
203
|
+
* Context-refresh boundaries already consumed for this project (Spec 1470).
|
|
204
|
+
*
|
|
205
|
+
* Appended in the SAME state write as the transition that triggered the
|
|
206
|
+
* boundary, which is what makes at-most-once a property of the control flow
|
|
207
|
+
* rather than a guard. A refresh is destructive (`/clear` has no undo) and
|
|
208
|
+
* porch transitions can loop — #1408 reset every plan phase to `pending` —
|
|
209
|
+
* so "already refreshed here" must be a recorded fact, never inferred from
|
|
210
|
+
* phase or iteration.
|
|
211
|
+
*
|
|
212
|
+
* `acknowledged_at` is set by PORCH (never by the builder, which is forbidden
|
|
213
|
+
* from writing this file) on the first normal-path `porch next` after the
|
|
214
|
+
* boundary. A boundary recorded but never acknowledged means the builder did
|
|
215
|
+
* not come back — the unattended-stall signal, which cannot be derived from
|
|
216
|
+
* `updated_at` because the normal task-emission path writes no state at all.
|
|
217
|
+
*
|
|
218
|
+
* Optional so status files predating this field stay parseable.
|
|
219
|
+
*/
|
|
220
|
+
context_refreshes?: Array<{
|
|
221
|
+
boundary: string;
|
|
222
|
+
at: string;
|
|
223
|
+
acknowledged_at?: string;
|
|
224
|
+
}>;
|
|
164
225
|
started_at: string;
|
|
165
226
|
updated_at: string;
|
|
166
227
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAClD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE place that spells out how to invoke `afx self-refresh` (Spec 1470).
|
|
3
|
+
*
|
|
4
|
+
* ## Why this module exists
|
|
5
|
+
*
|
|
6
|
+
* `--boundary` is not cosmetic: it binds the challenge to the boundary it was
|
|
7
|
+
* issued at, so a challenge left behind by an aborted refresh cannot be used to
|
|
8
|
+
* clear a builder at a LATER boundary, against a save describing work that has
|
|
9
|
+
* since moved on. Any instruction that omits the flag silently disables that
|
|
10
|
+
* guard for whoever follows it.
|
|
11
|
+
*
|
|
12
|
+
* That has already happened twice on this feature, in two different places, and
|
|
13
|
+
* the second was fixed one commit after the first:
|
|
14
|
+
*
|
|
15
|
+
* 1. porch's refresh task text printed `afx self-refresh --begin` with no
|
|
16
|
+
* boundary — so the guard was inert in production from the moment it
|
|
17
|
+
* shipped.
|
|
18
|
+
* 2. the CLI's own `--begin` output printed a bare `afx self-refresh` as the
|
|
19
|
+
* follow-up — so anyone following the command's own instruction dropped the
|
|
20
|
+
* guard.
|
|
21
|
+
*
|
|
22
|
+
* Two call sites, two identical omissions. A third was about to appear in the
|
|
23
|
+
* builder-refresh skill. The generalisation is that **when a guard depends on a
|
|
24
|
+
* flag, every place that tells a human or an agent how to invoke the command is
|
|
25
|
+
* part of that guard** — so the emission belongs in one function rather than
|
|
26
|
+
* being retyped wherever it is needed.
|
|
27
|
+
*
|
|
28
|
+
* ## What this does NOT solve, and how that is handled
|
|
29
|
+
*
|
|
30
|
+
* The skill is Markdown and cannot import anything. Rather than adding a third
|
|
31
|
+
* hand-written copy, the skill **defers**: it tells the builder to run the exact
|
|
32
|
+
* commands porch's refresh task supplied, instead of restating them.
|
|
33
|
+
* `spec-1470-reentry-frame.test.ts` asserts the skill contains NO hand-written
|
|
34
|
+
* invocation at all — stricter than checking each one carries the flag, and it
|
|
35
|
+
* fails on the first line someone adds rather than on the first mistake.
|
|
36
|
+
* Deferring beats duplicating-and-checking: a copy that is merely checked still
|
|
37
|
+
* has to be kept correct in two places.
|
|
38
|
+
*
|
|
39
|
+
* Lives in `src/lib/` because both callers already depend on it and neither
|
|
40
|
+
* depends on the other in this direction: the established import direction is
|
|
41
|
+
* agent-farm → porch, so putting a shared helper in agent-farm and importing it
|
|
42
|
+
* from porch would reverse it.
|
|
43
|
+
*/
|
|
44
|
+
export interface SelfRefreshInvocation {
|
|
45
|
+
/** Step 1: mint the challenge and print what to save. */
|
|
46
|
+
begin: string;
|
|
47
|
+
/** Step 2: verify the save, then clear and re-orient. */
|
|
48
|
+
execute: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Build both halves of the handshake, carrying the boundary through.
|
|
52
|
+
*
|
|
53
|
+
* A missing `boundary` is a legitimate case — a builder refreshing outside a
|
|
54
|
+
* porch task has no boundary to bind — and produces the flagless form. What must
|
|
55
|
+
* never happen is a boundary being KNOWN and dropped from the instruction, which
|
|
56
|
+
* is exactly what a hand-typed command in a second file does the moment someone
|
|
57
|
+
* edits one and not the other.
|
|
58
|
+
*/
|
|
59
|
+
export declare function selfRefreshInvocation(boundary?: string): SelfRefreshInvocation;
|
|
60
|
+
//# sourceMappingURL=self-refresh-invocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-refresh-invocation.d.ts","sourceRoot":"","sources":["../../src/lib/self-refresh-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAOH,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAM9E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE place that spells out how to invoke `afx self-refresh` (Spec 1470).
|
|
3
|
+
*
|
|
4
|
+
* ## Why this module exists
|
|
5
|
+
*
|
|
6
|
+
* `--boundary` is not cosmetic: it binds the challenge to the boundary it was
|
|
7
|
+
* issued at, so a challenge left behind by an aborted refresh cannot be used to
|
|
8
|
+
* clear a builder at a LATER boundary, against a save describing work that has
|
|
9
|
+
* since moved on. Any instruction that omits the flag silently disables that
|
|
10
|
+
* guard for whoever follows it.
|
|
11
|
+
*
|
|
12
|
+
* That has already happened twice on this feature, in two different places, and
|
|
13
|
+
* the second was fixed one commit after the first:
|
|
14
|
+
*
|
|
15
|
+
* 1. porch's refresh task text printed `afx self-refresh --begin` with no
|
|
16
|
+
* boundary — so the guard was inert in production from the moment it
|
|
17
|
+
* shipped.
|
|
18
|
+
* 2. the CLI's own `--begin` output printed a bare `afx self-refresh` as the
|
|
19
|
+
* follow-up — so anyone following the command's own instruction dropped the
|
|
20
|
+
* guard.
|
|
21
|
+
*
|
|
22
|
+
* Two call sites, two identical omissions. A third was about to appear in the
|
|
23
|
+
* builder-refresh skill. The generalisation is that **when a guard depends on a
|
|
24
|
+
* flag, every place that tells a human or an agent how to invoke the command is
|
|
25
|
+
* part of that guard** — so the emission belongs in one function rather than
|
|
26
|
+
* being retyped wherever it is needed.
|
|
27
|
+
*
|
|
28
|
+
* ## What this does NOT solve, and how that is handled
|
|
29
|
+
*
|
|
30
|
+
* The skill is Markdown and cannot import anything. Rather than adding a third
|
|
31
|
+
* hand-written copy, the skill **defers**: it tells the builder to run the exact
|
|
32
|
+
* commands porch's refresh task supplied, instead of restating them.
|
|
33
|
+
* `spec-1470-reentry-frame.test.ts` asserts the skill contains NO hand-written
|
|
34
|
+
* invocation at all — stricter than checking each one carries the flag, and it
|
|
35
|
+
* fails on the first line someone adds rather than on the first mistake.
|
|
36
|
+
* Deferring beats duplicating-and-checking: a copy that is merely checked still
|
|
37
|
+
* has to be kept correct in two places.
|
|
38
|
+
*
|
|
39
|
+
* Lives in `src/lib/` because both callers already depend on it and neither
|
|
40
|
+
* depends on the other in this direction: the established import direction is
|
|
41
|
+
* agent-farm → porch, so putting a shared helper in agent-farm and importing it
|
|
42
|
+
* from porch would reverse it.
|
|
43
|
+
*/
|
|
44
|
+
/** Shell-quote a boundary id for safe inclusion in a printed command. */
|
|
45
|
+
function quote(value) {
|
|
46
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Build both halves of the handshake, carrying the boundary through.
|
|
50
|
+
*
|
|
51
|
+
* A missing `boundary` is a legitimate case — a builder refreshing outside a
|
|
52
|
+
* porch task has no boundary to bind — and produces the flagless form. What must
|
|
53
|
+
* never happen is a boundary being KNOWN and dropped from the instruction, which
|
|
54
|
+
* is exactly what a hand-typed command in a second file does the moment someone
|
|
55
|
+
* edits one and not the other.
|
|
56
|
+
*/
|
|
57
|
+
export function selfRefreshInvocation(boundary) {
|
|
58
|
+
const suffix = boundary ? ` --boundary ${quote(boundary)}` : '';
|
|
59
|
+
return {
|
|
60
|
+
begin: `afx self-refresh --begin${suffix}`,
|
|
61
|
+
execute: `afx self-refresh${suffix}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=self-refresh-invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-refresh-invocation.js","sourceRoot":"","sources":["../../src/lib/self-refresh-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,yEAAyE;AACzE,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,OAAO;QACL,KAAK,EAAE,2BAA2B,MAAM,EAAE;QAC1C,OAAO,EAAE,mBAAmB,MAAM,EAAE;KACrC,CAAC;AACJ,CAAC"}
|
package/dist/lib/test-env.d.ts
CHANGED
|
@@ -71,4 +71,54 @@ export declare function realAgyOptIn(): boolean;
|
|
|
71
71
|
* `agy-integration.e2e.test.ts` short-circuits on the opt-in before resolving.
|
|
72
72
|
*/
|
|
73
73
|
export declare function assertAgyLaneAllowedUnderTest(): void;
|
|
74
|
+
/**
|
|
75
|
+
* True when cloud-mutating side effects must be refused because we are running
|
|
76
|
+
* under a test (#1515).
|
|
77
|
+
*
|
|
78
|
+
* "Cloud-mutating" means the two irreversible halves of tunnel disconnect:
|
|
79
|
+
* the server-side deregister of the tower ID, and the deletion of the local
|
|
80
|
+
* cloud credentials. Both act on whatever `~/.agent-farm/cloud-config.json`
|
|
81
|
+
* happens to be visible — which, before the agent-farm dir became isolatable,
|
|
82
|
+
* was the developer's real one.
|
|
83
|
+
*
|
|
84
|
+
* `NODE_ENV` is checked alongside `VITEST` because the tower-test helpers set
|
|
85
|
+
* `NODE_ENV=test` explicitly on the Towers they spawn, and `VITEST` is checked
|
|
86
|
+
* alongside `NODE_ENV` because children inherit it through `{ ...process.env }`
|
|
87
|
+
* even when a suite forgets to set `NODE_ENV`. Either marker is enough.
|
|
88
|
+
*
|
|
89
|
+
* `isUnderTestRunner()` above deliberately refuses generic markers, because a
|
|
90
|
+
* false positive there makes a real consultation *throw*. The trade here runs
|
|
91
|
+
* the other way, so `NODE_ENV` earns its place: a false positive costs a user
|
|
92
|
+
* running Tower with `NODE_ENV=test` a 403 that names the override, while a
|
|
93
|
+
* false negative deregisters their Tower and drops the tunnel until they
|
|
94
|
+
* notice. Loud and recoverable beats silent and destructive.
|
|
95
|
+
*/
|
|
96
|
+
export declare function isUnderTest(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Explicit opt-in for a test that genuinely means to exercise the cloud
|
|
99
|
+
* disconnect path — necessarily one that owns a fake cloud config in an
|
|
100
|
+
* isolated `CODEV_AGENT_FARM_DIR`. Unset by default, so no suite can deregister
|
|
101
|
+
* a real Tower by omission.
|
|
102
|
+
*/
|
|
103
|
+
export declare function cloudMutationOptIn(): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* True when a cloud-mutating operation should be refused right now.
|
|
106
|
+
*/
|
|
107
|
+
export declare function cloudMutationBlocked(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Guard the *client* half of #1515: refuse to drive tunnel connect/disconnect
|
|
110
|
+
* against the **default** Tower port from under a test runner.
|
|
111
|
+
*
|
|
112
|
+
* The server-side guard cannot cover this case. A developer's real Tower on
|
|
113
|
+
* :4100 runs with neither `VITEST` nor `NODE_ENV=test`, so it will happily
|
|
114
|
+
* serve a disconnect — and `vitest-e2e-setup.ts` hands every loopback `fetch`
|
|
115
|
+
* the real `~/.agent-farm/local-key`, so such a request arrives fully
|
|
116
|
+
* authenticated. That is how a suite run deregistered a live Tower and left its
|
|
117
|
+
* tunnel down for hours.
|
|
118
|
+
*
|
|
119
|
+
* Scoped as narrowly as it can be: only the two mutating subpaths, only on the
|
|
120
|
+
* default port. A test that spawns its own Tower talks to an ephemeral port and
|
|
121
|
+
* is unaffected; `/api/tunnel/status` is a read and stays allowed.
|
|
122
|
+
*/
|
|
123
|
+
export declare function assertTunnelMutationAllowedUnderTest(path: string, targetsDefaultTowerPort: boolean): void;
|
|
74
124
|
//# sourceMappingURL=test-env.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-env.d.ts","sourceRoot":"","sources":["../../src/lib/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAYpD"}
|
|
1
|
+
{"version":3,"file":"test-env.d.ts","sourceRoot":"","sources":["../../src/lib/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAYpD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,uBAAuB,EAAE,OAAO,GAC/B,IAAI,CAgBN"}
|
package/dist/lib/test-env.js
CHANGED
|
@@ -89,4 +89,80 @@ export function assertAgyLaneAllowedUnderTest() {
|
|
|
89
89
|
'(the vitest harness in vitest-setup.ts does this for every suite), or set ' +
|
|
90
90
|
'CODEV_ALLOW_REAL_AGY=1 if this test genuinely means to run the real CLI.');
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* True when cloud-mutating side effects must be refused because we are running
|
|
94
|
+
* under a test (#1515).
|
|
95
|
+
*
|
|
96
|
+
* "Cloud-mutating" means the two irreversible halves of tunnel disconnect:
|
|
97
|
+
* the server-side deregister of the tower ID, and the deletion of the local
|
|
98
|
+
* cloud credentials. Both act on whatever `~/.agent-farm/cloud-config.json`
|
|
99
|
+
* happens to be visible — which, before the agent-farm dir became isolatable,
|
|
100
|
+
* was the developer's real one.
|
|
101
|
+
*
|
|
102
|
+
* `NODE_ENV` is checked alongside `VITEST` because the tower-test helpers set
|
|
103
|
+
* `NODE_ENV=test` explicitly on the Towers they spawn, and `VITEST` is checked
|
|
104
|
+
* alongside `NODE_ENV` because children inherit it through `{ ...process.env }`
|
|
105
|
+
* even when a suite forgets to set `NODE_ENV`. Either marker is enough.
|
|
106
|
+
*
|
|
107
|
+
* `isUnderTestRunner()` above deliberately refuses generic markers, because a
|
|
108
|
+
* false positive there makes a real consultation *throw*. The trade here runs
|
|
109
|
+
* the other way, so `NODE_ENV` earns its place: a false positive costs a user
|
|
110
|
+
* running Tower with `NODE_ENV=test` a 403 that names the override, while a
|
|
111
|
+
* false negative deregisters their Tower and drops the tunnel until they
|
|
112
|
+
* notice. Loud and recoverable beats silent and destructive.
|
|
113
|
+
*/
|
|
114
|
+
export function isUnderTest() {
|
|
115
|
+
return isUnderTestRunner() || process.env.NODE_ENV === 'test';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Explicit opt-in for a test that genuinely means to exercise the cloud
|
|
119
|
+
* disconnect path — necessarily one that owns a fake cloud config in an
|
|
120
|
+
* isolated `CODEV_AGENT_FARM_DIR`. Unset by default, so no suite can deregister
|
|
121
|
+
* a real Tower by omission.
|
|
122
|
+
*/
|
|
123
|
+
export function cloudMutationOptIn() {
|
|
124
|
+
const raw = process.env.CODEV_ALLOW_TEST_CLOUD_MUTATION;
|
|
125
|
+
return raw === '1' || raw === 'true';
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* True when a cloud-mutating operation should be refused right now.
|
|
129
|
+
*/
|
|
130
|
+
export function cloudMutationBlocked() {
|
|
131
|
+
return isUnderTest() && !cloudMutationOptIn();
|
|
132
|
+
}
|
|
133
|
+
/** The `/api/tunnel/` subpaths that mutate cloud state. */
|
|
134
|
+
const TUNNEL_MUTATION_PATH = /^\/api\/tunnel\/(connect|disconnect)(?:[/?#]|$)/;
|
|
135
|
+
/**
|
|
136
|
+
* Guard the *client* half of #1515: refuse to drive tunnel connect/disconnect
|
|
137
|
+
* against the **default** Tower port from under a test runner.
|
|
138
|
+
*
|
|
139
|
+
* The server-side guard cannot cover this case. A developer's real Tower on
|
|
140
|
+
* :4100 runs with neither `VITEST` nor `NODE_ENV=test`, so it will happily
|
|
141
|
+
* serve a disconnect — and `vitest-e2e-setup.ts` hands every loopback `fetch`
|
|
142
|
+
* the real `~/.agent-farm/local-key`, so such a request arrives fully
|
|
143
|
+
* authenticated. That is how a suite run deregistered a live Tower and left its
|
|
144
|
+
* tunnel down for hours.
|
|
145
|
+
*
|
|
146
|
+
* Scoped as narrowly as it can be: only the two mutating subpaths, only on the
|
|
147
|
+
* default port. A test that spawns its own Tower talks to an ephemeral port and
|
|
148
|
+
* is unaffected; `/api/tunnel/status` is a read and stays allowed.
|
|
149
|
+
*/
|
|
150
|
+
export function assertTunnelMutationAllowedUnderTest(path, targetsDefaultTowerPort) {
|
|
151
|
+
if (!targetsDefaultTowerPort)
|
|
152
|
+
return;
|
|
153
|
+
if (!TUNNEL_MUTATION_PATH.test(path))
|
|
154
|
+
return;
|
|
155
|
+
if (!cloudMutationBlocked())
|
|
156
|
+
return;
|
|
157
|
+
const message = `Refusing to POST ${path} to the default Tower port from under a test ` +
|
|
158
|
+
'runner (#1515). That port is the developer\'s real Tower, and the request ' +
|
|
159
|
+
'would carry their real local key: a disconnect there deregisters their ' +
|
|
160
|
+
'Tower server-side and deletes their cloud credentials. Point the client at ' +
|
|
161
|
+
'a test Tower\'s port, or set CODEV_ALLOW_TEST_CLOUD_MUTATION=1 if this test ' +
|
|
162
|
+
'genuinely means to mutate real cloud state.';
|
|
163
|
+
// signalTunnel() swallows its errors, so make sure the reason is visible even
|
|
164
|
+
// when the throw is caught and discarded.
|
|
165
|
+
console.error(new Error(message).stack);
|
|
166
|
+
throw new Error(message);
|
|
167
|
+
}
|
|
92
168
|
//# sourceMappingURL=test-env.js.map
|
package/dist/lib/test-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-env.js","sourceRoot":"","sources":["../../src/lib/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC7C,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,6BAA6B;IAC3C,IAAI,CAAC,iBAAiB,EAAE;QAAE,OAAO;IACjC,IAAI,YAAY,EAAE;QAAE,OAAO;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO;IACtC,MAAM,IAAI,KAAK,CACb,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E,CAC3E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"test-env.js","sourceRoot":"","sources":["../../src/lib/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC7C,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,6BAA6B;IAC3C,IAAI,CAAC,iBAAiB,EAAE;QAAE,OAAO;IACjC,IAAI,YAAY,EAAE;QAAE,OAAO;IAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa;QAAE,OAAO;IACtC,MAAM,IAAI,KAAK,CACb,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,iBAAiB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;IACxD,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChD,CAAC;AAED,2DAA2D;AAC3D,MAAM,oBAAoB,GAAG,iDAAiD,CAAC;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oCAAoC,CAClD,IAAY,EACZ,uBAAgC;IAEhC,IAAI,CAAC,uBAAuB;QAAE,OAAO;IACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7C,IAAI,CAAC,oBAAoB,EAAE;QAAE,OAAO;IAEpC,MAAM,OAAO,GACX,oBAAoB,IAAI,+CAA+C;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,8EAA8E;QAC9E,6CAA6C,CAAC;IAChD,8EAA8E;IAC9E,0CAA0C;IAC1C,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cluesmith/codev",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"description": "Codev CLI - AI-assisted software development framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"open": "^10.1.0",
|
|
36
36
|
"tree-kill": "^1.2.2",
|
|
37
37
|
"ws": "^8.18.0",
|
|
38
|
-
"@cluesmith/codev-core": "3.3.
|
|
39
|
-
"@cluesmith/codev-sdk": "3.3.
|
|
40
|
-
"@cluesmith/codev-types": "3.3.
|
|
38
|
+
"@cluesmith/codev-core": "3.3.2",
|
|
39
|
+
"@cluesmith/codev-sdk": "3.3.2",
|
|
40
|
+
"@cluesmith/codev-types": "3.3.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@playwright/test": "^1.58.0",
|
|
@@ -107,8 +107,14 @@ guarantee about the clear's completion. If the timing is wrong the re-init arriv
|
|
|
107
107
|
wrong moment, which costs one manual message (see below) and nothing else. That is the
|
|
108
108
|
whole reason this cycle can be built on a delay rather than on machinery.
|
|
109
109
|
|
|
110
|
-
Delayed sends are
|
|
111
|
-
|
|
110
|
+
Delayed sends **are persisted**. The body is written to the durable mailbox at request time
|
|
111
|
+
with a `not_before` timestamp, so Tower keeps no timer for it and a restart inside the window
|
|
112
|
+
does not lose it — the re-init is delivered once the delay passes. The one thing a restart does
|
|
113
|
+
drop is the Ctrl+C nudge of a delayed `--interrupt`, which this cycle does not use.
|
|
114
|
+
|
|
115
|
+
That removes a failure mode this section used to warn about, but not the need for the recovery
|
|
116
|
+
path below: delivery still waits on an empty prompt, so a re-init can arrive late rather than
|
|
117
|
+
never.
|
|
112
118
|
|
|
113
119
|
**If this send fails, do not end your turn.** Step 4 queued the `/clear`, but it does not
|
|
114
120
|
take effect until your turn ends — so at this moment you still have your full context and
|