instar 1.3.269 → 1.3.271
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/index.html +73 -11
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +24 -3
- package/dist/commands/server.js.map +1 -1
- package/dist/coordination/MandateAudit.d.ts +48 -0
- package/dist/coordination/MandateAudit.d.ts.map +1 -0
- package/dist/coordination/MandateAudit.js +95 -0
- package/dist/coordination/MandateAudit.js.map +1 -0
- package/dist/coordination/MandateGate.d.ts +48 -0
- package/dist/coordination/MandateGate.d.ts.map +1 -0
- package/dist/coordination/MandateGate.js +104 -0
- package/dist/coordination/MandateGate.js.map +1 -0
- package/dist/coordination/MandateStore.d.ts +60 -0
- package/dist/coordination/MandateStore.d.ts.map +1 -0
- package/dist/coordination/MandateStore.js +106 -0
- package/dist/coordination/MandateStore.js.map +1 -0
- package/dist/coordination/ReviewExchange.d.ts +135 -0
- package/dist/coordination/ReviewExchange.d.ts.map +1 -0
- package/dist/coordination/ReviewExchange.js +192 -0
- package/dist/coordination/ReviewExchange.js.map +1 -0
- package/dist/coordination/conditions.d.ts +32 -0
- package/dist/coordination/conditions.d.ts.map +1 -0
- package/dist/coordination/conditions.js +54 -0
- package/dist/coordination/conditions.js.map +1 -0
- package/dist/coordination/types.d.ts +74 -0
- package/dist/coordination/types.d.ts.map +1 -0
- package/dist/coordination/types.js +17 -0
- package/dist/coordination/types.js.map +1 -0
- package/dist/core/ApprovalLedger.d.ts +132 -0
- package/dist/core/ApprovalLedger.d.ts.map +1 -0
- package/dist/core/ApprovalLedger.js +191 -0
- package/dist/core/ApprovalLedger.js.map +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +33 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SecretStore.d.ts.map +1 -1
- package/dist/core/SecretStore.js +10 -1
- package/dist/core/SecretStore.js.map +1 -1
- package/dist/core/SessionBuildContextStore.d.ts +33 -0
- package/dist/core/SessionBuildContextStore.d.ts.map +1 -0
- package/dist/core/SessionBuildContextStore.js +107 -0
- package/dist/core/SessionBuildContextStore.js.map +1 -0
- package/dist/core/SessionManager.d.ts +4 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +44 -3
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/TransferByNickname.d.ts +6 -0
- package/dist/core/TransferByNickname.d.ts.map +1 -1
- package/dist/core/TransferByNickname.js +18 -6
- package/dist/core/TransferByNickname.js.map +1 -1
- package/dist/core/seamlessnessConfig.d.ts.map +1 -1
- package/dist/core/seamlessnessConfig.js +12 -1
- package/dist/core/seamlessnessConfig.js.map +1 -1
- package/dist/core/types.d.ts +34 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/feedback-factory/migration/immutableGuard.d.ts +87 -0
- package/dist/feedback-factory/migration/immutableGuard.d.ts.map +1 -0
- package/dist/feedback-factory/migration/immutableGuard.js +163 -0
- package/dist/feedback-factory/migration/immutableGuard.js.map +1 -0
- package/dist/feedback-factory/migration/importIntegrity.d.ts +112 -0
- package/dist/feedback-factory/migration/importIntegrity.d.ts.map +1 -0
- package/dist/feedback-factory/migration/importIntegrity.js +202 -0
- package/dist/feedback-factory/migration/importIntegrity.js.map +1 -0
- package/dist/feedback-factory/monitor/parityMonitor.d.ts +75 -0
- package/dist/feedback-factory/monitor/parityMonitor.d.ts.map +1 -0
- package/dist/feedback-factory/monitor/parityMonitor.js +98 -0
- package/dist/feedback-factory/monitor/parityMonitor.js.map +1 -0
- package/dist/feedback-factory/monitor/parityMonitorStore.d.ts +44 -0
- package/dist/feedback-factory/monitor/parityMonitorStore.d.ts.map +1 -0
- package/dist/feedback-factory/monitor/parityMonitorStore.js +80 -0
- package/dist/feedback-factory/monitor/parityMonitorStore.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +19 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/scheduler/MentorAutonomousGuardian.d.ts.map +1 -1
- package/dist/scheduler/MentorAutonomousGuardian.js +1 -0
- package/dist/scheduler/MentorAutonomousGuardian.js.map +1 -1
- package/dist/server/AgentServer.d.ts +11 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +102 -1
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +45 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +19 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +482 -4
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +19 -1
- package/upgrades/1.3.270.md +106 -0
- package/upgrades/1.3.271.md +154 -0
- package/upgrades/approval-ledger-phase2.eli16.md +56 -0
- package/upgrades/autoloop-gate-compliance.eli16.md +11 -0
- package/upgrades/feedback-phase3-monitor.eli16.md +51 -0
- package/upgrades/feedback-phase4-integrity.eli16.md +54 -0
- package/upgrades/respawn-build-context-reestablishment.eli16.md +5 -0
- package/upgrades/side-effects/approval-ledger-phase2.md +82 -0
- package/upgrades/side-effects/autoloop-gate-compliance.md +43 -0
- package/upgrades/side-effects/coordination-mandate-enforcement.md +86 -0
- package/upgrades/side-effects/dashboard-pool-sessions.md +103 -0
- package/upgrades/side-effects/feedback-phase3-monitor.md +37 -0
- package/upgrades/side-effects/feedback-phase4-integrity.md +35 -0
- package/upgrades/side-effects/respawn-build-context-reestablishment.md +81 -0
- package/upgrades/side-effects/review-exchange-protocol.md +60 -0
- package/upgrades/side-effects/secret-drop-store-first.md +117 -0
- package/upgrades/side-effects/transfer-idempotency-exactly-once.md +105 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ApprovalLedger — the durable, signed, append-only record of every operator
|
|
3
|
+
* approval decision, and the per-class agreement ratios computed from it.
|
|
4
|
+
*
|
|
5
|
+
* This is Phase 2 of the approved "Approval-as-Data" spec
|
|
6
|
+
* (`docs/specs/AUTONOMOUS-OPERATION-JUDGMENT-AND-APPROVAL-AS-DATA-SPEC.md`, Part B):
|
|
7
|
+
* an approval stops being a one-shot "approved" with no memory and becomes data —
|
|
8
|
+
* recorded as `approved-as-is` vs `approved-with-change` vs `rejected`, with the
|
|
9
|
+
* WHY of each divergence, so we can (a) see per decision-class where the operator
|
|
10
|
+
* agrees with the agent's recommendation as-is vs revises it, (b) trend toward
|
|
11
|
+
* approved-as-is by folding recurring divergences back into design guidance, and
|
|
12
|
+
* (c) — once a class's ratio holds — pilot auto-approval for that class (Phase 3).
|
|
13
|
+
*
|
|
14
|
+
* SCOPE (operator extension, 2026-06-05): the original spec tracked only official
|
|
15
|
+
* SPEC sign-offs. Justin extended it to track ALL approvals wherever they occur —
|
|
16
|
+
* a spec sign-off, a decision presented and approved in chat, or any other surface.
|
|
17
|
+
* Hence `subject`/`decisionClass`/`surface` (general) rather than `specSlug`/
|
|
18
|
+
* `specClass`, and the spec-only fields (`reviewIterations`/`commitSha`/`evidenceRef`)
|
|
19
|
+
* are optional — a chat approval simply omits them.
|
|
20
|
+
*
|
|
21
|
+
* Mirrors `SessionPoolE2EResultStore` exactly (signed, append-only, tamper-evident,
|
|
22
|
+
* torn-line-tolerant). The store is signer-agnostic — `sign`/`verifySig` are injected
|
|
23
|
+
* — so tests use an Ed25519 keypair and production uses an HMAC over the state secret.
|
|
24
|
+
*
|
|
25
|
+
* AUTHORITY INVARIANT (spec B1, load-bearing for correctness — NOT just integrity):
|
|
26
|
+
* for a MANUAL decision the OPERATOR is the authoritative source of `mode` and
|
|
27
|
+
* `divergences`. The agent must NEVER self-classify the operator's intent. The
|
|
28
|
+
* writer passes the operator-sourced classification (from the approve control / an
|
|
29
|
+
* explicit "as-is" vs "with changes: …"); this store records it faithfully. HMAC/
|
|
30
|
+
* signature guarantees integrity, not correctness — the authoritative-source rule
|
|
31
|
+
* is what prevents an agent inflating its own agreement ratio. An operator can
|
|
32
|
+
* dispute and CORRECT any row: a correction is itself an appended, signed row
|
|
33
|
+
* (`corrects` set), never an in-place edit — history preserved.
|
|
34
|
+
*/
|
|
35
|
+
import fs from 'node:fs';
|
|
36
|
+
import path from 'node:path';
|
|
37
|
+
export const APPROVAL_SURFACES = ['spec', 'chat', 'other'];
|
|
38
|
+
export const DIVERGENCE_CATEGORIES = [
|
|
39
|
+
'missing-principle', 'risk-reduction', 'scope-correction',
|
|
40
|
+
'efficiency', 'new-information', 'style',
|
|
41
|
+
];
|
|
42
|
+
export const DEFAULT_ELIGIBILITY = { minRatio: 0.9, minStreak: 5, minTotal: 5 };
|
|
43
|
+
/** Canonical bytes a row's signature covers — field-ordered, signature EXCLUDED.
|
|
44
|
+
* Optional fields are normalized so a present-vs-absent field is unambiguous, and
|
|
45
|
+
* divergences are flattened deterministically so reordering is detectable. */
|
|
46
|
+
export function canonicalApprovalRow(r) {
|
|
47
|
+
return JSON.stringify([
|
|
48
|
+
r.subject,
|
|
49
|
+
r.decisionClass,
|
|
50
|
+
r.surface,
|
|
51
|
+
r.decidedAt,
|
|
52
|
+
r.approver,
|
|
53
|
+
r.mode,
|
|
54
|
+
r.divergences.map((d) => [d.category, d.summary, d.why]),
|
|
55
|
+
r.reviewIterations ?? null,
|
|
56
|
+
r.commitSha ?? '',
|
|
57
|
+
r.evidenceRef ?? '',
|
|
58
|
+
r.corrects ?? '',
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
function emptyDivergenceCounts() {
|
|
62
|
+
return {
|
|
63
|
+
'missing-principle': 0, 'risk-reduction': 0, 'scope-correction': 0,
|
|
64
|
+
'efficiency': 0, 'new-information': 0, 'style': 0,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export class ApprovalLedger {
|
|
68
|
+
d;
|
|
69
|
+
constructor(deps) {
|
|
70
|
+
this.d = deps;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Append a signed approval row. The `mode` + `divergences` MUST be operator-sourced
|
|
74
|
+
* (the authority invariant above) — this method does not infer them.
|
|
75
|
+
* Throws on an internally-inconsistent row so a malformed record can't pollute ratios.
|
|
76
|
+
*/
|
|
77
|
+
recordApproval(input) {
|
|
78
|
+
const divergences = input.divergences ?? [];
|
|
79
|
+
// Consistency guards (correctness, not just integrity).
|
|
80
|
+
if (input.mode === 'approved-as-is' && divergences.length > 0) {
|
|
81
|
+
throw new Error('ApprovalLedger: approved-as-is rows must have no divergences (spec B1).');
|
|
82
|
+
}
|
|
83
|
+
if (input.mode !== 'approved-as-is' && divergences.length === 0) {
|
|
84
|
+
// A change/reject with no stated divergence loses the WHY we exist to capture.
|
|
85
|
+
throw new Error(`ApprovalLedger: mode "${input.mode}" requires at least one divergence with a why.`);
|
|
86
|
+
}
|
|
87
|
+
if (!APPROVAL_SURFACES.includes(input.surface)) {
|
|
88
|
+
throw new Error(`ApprovalLedger: unknown surface "${input.surface}".`);
|
|
89
|
+
}
|
|
90
|
+
for (const dv of divergences) {
|
|
91
|
+
if (!DIVERGENCE_CATEGORIES.includes(dv.category)) {
|
|
92
|
+
throw new Error(`ApprovalLedger: unknown divergence category "${dv.category}".`);
|
|
93
|
+
}
|
|
94
|
+
if (!dv.summary?.trim() || !dv.why?.trim()) {
|
|
95
|
+
throw new Error('ApprovalLedger: each divergence needs a non-empty summary AND why.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const decidedAt = input.decidedAt
|
|
99
|
+
?? new Date(this.d.now ? this.d.now() : Date.now()).toISOString();
|
|
100
|
+
const unsigned = {
|
|
101
|
+
subject: input.subject,
|
|
102
|
+
decisionClass: input.decisionClass,
|
|
103
|
+
surface: input.surface,
|
|
104
|
+
decidedAt,
|
|
105
|
+
approver: input.approver,
|
|
106
|
+
mode: input.mode,
|
|
107
|
+
divergences,
|
|
108
|
+
...(input.reviewIterations != null ? { reviewIterations: input.reviewIterations } : {}),
|
|
109
|
+
...(input.commitSha ? { commitSha: input.commitSha } : {}),
|
|
110
|
+
...(input.evidenceRef ? { evidenceRef: input.evidenceRef } : {}),
|
|
111
|
+
...(input.corrects ? { corrects: input.corrects } : {}),
|
|
112
|
+
};
|
|
113
|
+
const row = { ...unsigned, signature: this.d.sign(canonicalApprovalRow(unsigned)) };
|
|
114
|
+
fs.mkdirSync(path.dirname(this.d.filePath), { recursive: true });
|
|
115
|
+
fs.appendFileSync(this.d.filePath, JSON.stringify(row) + '\n');
|
|
116
|
+
return row;
|
|
117
|
+
}
|
|
118
|
+
/** All rows (oldest→newest). Tolerant of a missing file / a torn trailing line. */
|
|
119
|
+
all() {
|
|
120
|
+
let content;
|
|
121
|
+
try {
|
|
122
|
+
content = fs.readFileSync(this.d.filePath, 'utf8');
|
|
123
|
+
}
|
|
124
|
+
catch { /* @silent-fallback-ok — ledger file may not exist yet; empty history is the natural default */
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
const out = [];
|
|
128
|
+
for (const line of content.split('\n')) {
|
|
129
|
+
if (!line.trim())
|
|
130
|
+
continue;
|
|
131
|
+
try {
|
|
132
|
+
out.push(JSON.parse(line));
|
|
133
|
+
}
|
|
134
|
+
catch { /* @silent-fallback-ok — torn-trailing-line tolerance; a crash mid-append must not poison reads */ }
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
/** Verify a row's signature (tamper check). */
|
|
139
|
+
verify(row) {
|
|
140
|
+
const { signature, ...unsigned } = row;
|
|
141
|
+
return this.d.verifySig(canonicalApprovalRow(unsigned), signature);
|
|
142
|
+
}
|
|
143
|
+
/** Per-class agreement summary. Read-only; never gates by itself (spec B3). */
|
|
144
|
+
summarize(policy = DEFAULT_ELIGIBILITY) {
|
|
145
|
+
const byClass = new Map();
|
|
146
|
+
for (const r of this.all()) {
|
|
147
|
+
const arr = byClass.get(r.decisionClass) ?? [];
|
|
148
|
+
arr.push(r);
|
|
149
|
+
byClass.set(r.decisionClass, arr);
|
|
150
|
+
}
|
|
151
|
+
const summaries = [];
|
|
152
|
+
for (const [decisionClass, rows] of byClass) {
|
|
153
|
+
summaries.push(this.summarizeRows(decisionClass, rows, policy));
|
|
154
|
+
}
|
|
155
|
+
// Stable order: highest-total class first, then alphabetical.
|
|
156
|
+
summaries.sort((a, b) => b.total - a.total || a.decisionClass.localeCompare(b.decisionClass));
|
|
157
|
+
return summaries;
|
|
158
|
+
}
|
|
159
|
+
/** Summary for one class (returns a zeroed summary if the class has no rows). */
|
|
160
|
+
summaryForClass(decisionClass, policy = DEFAULT_ELIGIBILITY) {
|
|
161
|
+
const rows = this.all().filter((r) => r.decisionClass === decisionClass);
|
|
162
|
+
return this.summarizeRows(decisionClass, rows, policy);
|
|
163
|
+
}
|
|
164
|
+
summarizeRows(decisionClass, rows, policy) {
|
|
165
|
+
let approvedAsIs = 0, approvedWithChange = 0, rejected = 0;
|
|
166
|
+
const divergenceCounts = emptyDivergenceCounts();
|
|
167
|
+
for (const r of rows) {
|
|
168
|
+
if (r.mode === 'approved-as-is')
|
|
169
|
+
approvedAsIs++;
|
|
170
|
+
else if (r.mode === 'approved-with-change')
|
|
171
|
+
approvedWithChange++;
|
|
172
|
+
else
|
|
173
|
+
rejected++;
|
|
174
|
+
for (const dv of r.divergences)
|
|
175
|
+
divergenceCounts[dv.category]++;
|
|
176
|
+
}
|
|
177
|
+
const total = rows.length;
|
|
178
|
+
const ratio = total === 0 ? 0 : approvedAsIs / total;
|
|
179
|
+
// CURRENT streak: trailing consecutive approved-as-is from the most-recent row.
|
|
180
|
+
let streak = 0;
|
|
181
|
+
for (let i = rows.length - 1; i >= 0; i--) {
|
|
182
|
+
if (rows[i].mode === 'approved-as-is')
|
|
183
|
+
streak++;
|
|
184
|
+
else
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
const autoApprovalEligible = total >= policy.minTotal && ratio >= policy.minRatio && streak >= policy.minStreak;
|
|
188
|
+
return { decisionClass, total, approvedAsIs, approvedWithChange, rejected, ratio, streak, autoApprovalEligible, divergenceCounts };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=ApprovalLedger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalLedger.js","sourceRoot":"","sources":["../../src/core/ApprovalLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAsCH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAIjC,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAiC;gBAEvC,MAAM,EAAE,cAAc;IAIlC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAItC;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAIjC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;OAGG;IACH,OAAO,IAAI,eAAe;IAiD1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,0BAA0B;IAmFlC,OAAO,CAAC,0BAA0B;IAmDlC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kCAAkC;IAwH1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,kCAAkC;IA8C1C,OAAO,CAAC,uBAAuB;IAwE/B,OAAO,CAAC,4CAA4C;IA+CpD;;;;;;;OAOG;IACH,OAAO,CAAC,iCAAiC;IA0BzC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,oCAAoC;IAmB5C,OAAO,CAAC,yBAAyB;IA6FjC;;;;;;;;;;OAUG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;YA4BhC,uBAAuB;IAkGrC,OAAO,CAAC,0BAA0B;IAkGlC,OAAO,CAAC,0BAA0B;IAoElC,OAAO,CAAC,oBAAoB;IA4G5B,OAAO,CAAC,8BAA8B;IA2EtC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,0BAA0B;IA8BlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,4BAA4B;IAwBpC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;;;;;;;;OASG;IACH,OAAO,CAAC,wCAAwC;IAuBhD;;;;;;;;OAQG;IACH,OAAO,CAAC,2CAA2C;IAuBnD;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mCAAmC;IAuE3C;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,yBAAyB;IA4HjC;6EACyE;IACzE,OAAO,CAAC,wBAAwB;IAShC;sDACkD;IAClD,OAAO,CAAC,wBAAwB;IAQhC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkPpB;;;;;;;;OAQG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IA6CvE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAkEzB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;IAoEhC;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA8BnC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAyIhC;;;;;;OAMG;IACH,OAAO,CAAC,8BAA8B;IAwDtC,OAAO,CAAC,0BAA0B;IA8DlC;;;OAGG;IACH,OAAO,CAAC,eAAe;IA+9CvB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,kCAAkC;IAoG1C;;;OAGG;IACH,OAAO,CAAC,cAAc;IA6JtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,yCAAyC;IAyDjD;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0SvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAqFrB;;;OAGG;IACH;;;OAGG;IACH;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,wBAAwB;IAmEhC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,6BAA6B;IAwDrC;;;;;;;;;OASG;IACH,OAAO,CAAC,yBAAyB;IAsDjC,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,gBAAgB;IAiBxB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,OAAO,CAAC,qBAAqB;IAkE7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,0BAA0B;IAgDlC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,oBAAoB;IAgC5B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqC9B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,wBAAwB,GAAG,qBAAqB,GAAG,yBAAyB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,wBAAwB,GAAG,8BAA8B,GAAG,2BAA2B,GAAG,4BAA4B,GAAG,iBAAiB,GAAG,0BAA0B,GAAG,wBAAwB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,0BAA0B,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,MAAM;IAwBnf,oFAAoF;IACpF,iCAAiC,IAAI,MAAM;IAI3C,6EAA6E;IAC7E,yBAAyB,IAAI,MAAM;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,2BAA2B;IAmFnC,OAAO,CAAC,mBAAmB;IAob3B,OAAO,CAAC,wBAAwB;IAuJhC,OAAO,CAAC,2BAA2B;IAoEnC,OAAO,CAAC,yBAAyB;IA8IjC,OAAO,CAAC,2BAA2B;IA0JnC,OAAO,CAAC,qBAAqB;IA4P7B,OAAO,CAAC,uBAAuB;IAqJ/B,OAAO,CAAC,oBAAoB;IAgG5B,OAAO,CAAC,qBAAqB;IA8H7B,OAAO,CAAC,2BAA2B;IAoHnC,OAAO,CAAC,iCAAiC;IA6DzC,OAAO,CAAC,4BAA4B;IA0MpC;;;;;;;;;;OAUG;IACH;;;;;;;;;;;OAWG;IAEH,gBAAuB,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAAC,CAgC1E;IAEH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,8BAA8B;IAiHtC,OAAO,CAAC,uBAAuB;IAwC/B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,sBAAsB;IAwC9B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,8BAA8B;IA6HtC,OAAO,CAAC,+BAA+B;IAuKvC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,qBAAqB;IAqO7B,OAAO,CAAC,qBAAqB;IAwI7B,OAAO,CAAC,qBAAqB;IAyN7B,OAAO,CAAC,6BAA6B;IAkLrC,OAAO,CAAC,0BAA0B;IAgClC,OAAO,CAAC,gBAAgB;IAmJxB,OAAO,CAAC,6BAA6B;CAoCtC"}
|
|
@@ -2994,6 +2994,7 @@ The attention queue spawns ONE Telegram forum topic per item — right for a gen
|
|
|
2994
2994
|
Beyond the one-awake-machine model: with the pool enabled I run conversations across ALL my machines at once and can MOVE a conversation between them. Ships DARK behind \`multiMachine.sessionPool.stage\` (default 'dark'); a single-machine agent is a no-op.
|
|
2995
2995
|
|
|
2996
2996
|
- **See the pool:** the **Machines tab** in the dashboard, or \`GET /pool\` (Bearer-auth) → which machine is the router ("dispatcher") + every machine's nickname, hardware, online status, load, and clock-skew status.
|
|
2997
|
+
- **Every session, every machine:** the dashboard sessions list shows ALL sessions across the pool, each tagged with the machine it runs on. API: \`GET /sessions?scope=pool\` → \`{ sessions: [...each with machineId/machineNickname...], pool: { peersOk, failed } }\`. An unreachable peer degrades to a \`failed\` entry — local sessions always answer.
|
|
2997
2998
|
- **Machine nicknames** are the user-facing handle (auto-assigned, editable). Rename via \`PATCH /pool/machines/:machineId\` with \`{"nickname":"the mini"}\`, or inline on the Machines tab.
|
|
2998
2999
|
- **Which machine + WHY (never guess):** \`GET /pool/placement?topic=N\` → the owning machine + nickname, the **reason** (\`pinned\` = a deliberate move vs \`placed\` = load-balanced vs \`unowned\`), and the lease-holder. Answerable from ANY machine (a standby proxies to the holder). Running ON a machine does NOT mean a topic was deliberately moved there — read this instead of inferring.
|
|
2999
3000
|
- **Reliable transfer (phrasing-independent):** \`POST /pool/transfer\` with \`{"topic":N,"to":"<nickname|machineId>"}\` runs the same validated planner as "move this to <nickname>" but deterministically. 404 unknown · 409 rate-limited · 409 \`needsConfirmation\` for an offline target (re-send with \`"confirm":true\`). The lever to call directly when a natural-language move didn't catch.
|
|
@@ -3018,6 +3019,18 @@ Beyond the one-awake-machine model: with the pool enabled I run conversations ac
|
|
|
3018
3019
|
patched = true;
|
|
3019
3020
|
result.upgraded.push('CLAUDE.md: added pool placement/transfer robustness lines');
|
|
3020
3021
|
}
|
|
3022
|
+
// Pool-wide session visibility (2026-06-05): agents that ALREADY have the pool
|
|
3023
|
+
// section predate GET /sessions?scope=pool (every session, every machine, each
|
|
3024
|
+
// tagged with its machine — the dashboard cross-machine sessions list). Append
|
|
3025
|
+
// the line so deployed agents can answer "what's running across my machines?"
|
|
3026
|
+
// from the API. Idempotent via the unique `scope=pool` marker.
|
|
3027
|
+
if (content.includes('Multi-Machine Session Pool (active-active') && !content.includes('scope=pool')) {
|
|
3028
|
+
const poolSessions = `
|
|
3029
|
+
- **Every session, every machine:** the dashboard sessions list shows ALL sessions across the pool, each tagged with the machine it runs on. API: \`GET /sessions?scope=pool\` → \`{ sessions: [...each with machineId/machineNickname...], pool: { peersOk, failed } }\`. An unreachable peer degrades to a \`failed\` entry — local sessions always answer.`;
|
|
3030
|
+
content += '\n' + poolSessions + '\n';
|
|
3031
|
+
patched = true;
|
|
3032
|
+
result.upgraded.push('CLAUDE.md: added pool-wide session visibility line');
|
|
3033
|
+
}
|
|
3021
3034
|
// Cross-Machine Secret Sync (spec Phase 4, 2026-06-04): deployed agents don't know
|
|
3022
3035
|
// a secret can now follow them across machines, nor the two routes. Append the section
|
|
3023
3036
|
// so an agent surfaces "drop once, usable everywhere" instead of asking the user to
|
|
@@ -3418,7 +3431,7 @@ Strip the \`[telegram:N]\` prefix before interpreting the message. Respond natur
|
|
|
3418
3431
|
- **Retrieve the secret (HARDENED — required)**: \`node .instar/scripts/secret-drop-retrieve.mjs TOKEN field-name\` — streams the field VALUE to stdout, prints field NAMES + lengths to stderr, NEVER prints the response body. Discover available fields with \`... TOKEN --names\`.
|
|
3419
3432
|
- **NEVER use \`curl /secrets/retrieve\` directly** — the raw curl pattern dumps the full JSON response (including the secret value) into the Bash tool transcript.
|
|
3420
3433
|
- List pending: \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/secrets/pending\`
|
|
3421
|
-
- **Security**: One-time
|
|
3434
|
+
- **Security**: One-time link, expires after 15 minutes, CSRF-protected. The moment a secret is SUBMITTED it is also persisted store-first to the durable AES-256-GCM encrypted SecretStore — so it survives session restarts, compaction, and cross-machine handoff instead of evaporating with the in-memory copy. Retrieval transparently falls back to the durable copy, and a successful consume deletes both. (Opt out with \`secrets.persistDrops: false\` in \`.instar/config.json\`.)
|
|
3422
3435
|
- **When to use** (PROACTIVE — this is the trigger): the moment a user offers to give you a credential (API key, password, token) or you realize you need one, use Secret Drop. It is the ONLY correct way to collect a secret. NEVER accept it pasted into Telegram or chat, and NEVER create a local file (e.g. \`.instar/secrets/foo.env\`) and ask the user to edit/paste into it — that defeats the one-time, in-memory, never-on-disk guarantee and asks the user to edit files (which you must never do). Always issue a Secret Drop one-time link instead.
|
|
3423
3436
|
`;
|
|
3424
3437
|
const tunnelIdx = content.indexOf('**Cloudflare Tunnel**');
|
|
@@ -3927,6 +3940,25 @@ The user has been talking to you (possibly for days). A generic greeting like "H
|
|
|
3927
3940
|
result.upgraded.push('CLAUDE.md: added Secret Drop --run atomic use-and-consume guidance');
|
|
3928
3941
|
}
|
|
3929
3942
|
}
|
|
3943
|
+
// Secret Drop store-first durability (2026-06-04). Existing agents'
|
|
3944
|
+
// Security bullet still claims submissions are "in-memory only (never
|
|
3945
|
+
// written to disk)" — no longer true: submissions are persisted store-first
|
|
3946
|
+
// to the encrypted SecretStore so they survive session churn. Rewrite the
|
|
3947
|
+
// stale bullet so agents stop treating an un-consumed drop as a
|
|
3948
|
+
// race-against-the-TTL. Idempotent: anchors on the old wording; skips when
|
|
3949
|
+
// the durable wording is already present.
|
|
3950
|
+
{
|
|
3951
|
+
const oldSecurityLine = '- **Security**: One-time use, expires after 15 minutes, in-memory only (never written to disk), CSRF-protected.';
|
|
3952
|
+
const newSecurityLine = '- **Security**: One-time link, expires after 15 minutes, CSRF-protected. The moment a secret is SUBMITTED it is also persisted store-first to the durable AES-256-GCM encrypted SecretStore — so it survives session restarts, compaction, and cross-machine handoff instead of evaporating with the in-memory copy. Retrieval transparently falls back to the durable copy, and a successful consume deletes both. (Opt out with `secrets.persistDrops: false` in `.instar/config.json`.)';
|
|
3953
|
+
if (content.includes(oldSecurityLine)) {
|
|
3954
|
+
content = content.replace(oldSecurityLine, newSecurityLine);
|
|
3955
|
+
patched = true;
|
|
3956
|
+
result.upgraded.push('CLAUDE.md: Secret Drop Security bullet updated for store-first durable persistence');
|
|
3957
|
+
}
|
|
3958
|
+
else if (content.includes('persisted store-first to the durable')) {
|
|
3959
|
+
result.skipped.push('CLAUDE.md: Secret Drop store-first durability already documented');
|
|
3960
|
+
}
|
|
3961
|
+
}
|
|
3930
3962
|
// Worktree Convention section (Migration Parity Standard backfill for
|
|
3931
3963
|
// Layer 2 of the agent worktree convention — fresh inits get this via
|
|
3932
3964
|
// generateClaudeMd; existing agents get it here on update).
|