agent-nuvira 3.3.11 → 3.3.13
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/README.md +32 -1
- package/dist/agents/agents/reasoner.d.ts.map +1 -1
- package/dist/agents/agents/reasoner.js +13 -0
- package/dist/agents/agents/reasoner.js.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +56 -20
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/chat.d.ts +36 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +456 -43
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +8 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +35 -4
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +14 -0
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/knowledge.d.ts +23 -0
- package/dist/cli/knowledge.d.ts.map +1 -0
- package/dist/cli/knowledge.js +132 -0
- package/dist/cli/knowledge.js.map +1 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +57 -13
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/omniroute-control.d.ts +88 -0
- package/dist/cli/omniroute-control.d.ts.map +1 -0
- package/dist/cli/omniroute-control.js +179 -0
- package/dist/cli/omniroute-control.js.map +1 -0
- package/dist/cli/omniroute.d.ts +21 -0
- package/dist/cli/omniroute.d.ts.map +1 -0
- package/dist/cli/omniroute.js +67 -0
- package/dist/cli/omniroute.js.map +1 -0
- package/dist/cli/tool-install-prompt.d.ts +58 -0
- package/dist/cli/tool-install-prompt.d.ts.map +1 -1
- package/dist/cli/tool-install-prompt.js +137 -0
- package/dist/cli/tool-install-prompt.js.map +1 -1
- package/dist/cli/weak-model-prompt.d.ts +16 -7
- package/dist/cli/weak-model-prompt.d.ts.map +1 -1
- package/dist/cli/weak-model-prompt.js +24 -8
- package/dist/cli/weak-model-prompt.js.map +1 -1
- package/dist/config/types.d.ts +44 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/cache.d.ts +35 -1
- package/dist/context/cache.d.ts.map +1 -1
- package/dist/context/cache.js +31 -2
- package/dist/context/cache.js.map +1 -1
- package/dist/context/history.d.ts +21 -0
- package/dist/context/history.d.ts.map +1 -1
- package/dist/context/history.js +50 -0
- package/dist/context/history.js.map +1 -1
- package/dist/gateway/hook-contract.d.ts +173 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -0
- package/dist/gateway/hook-contract.js +352 -0
- package/dist/gateway/hook-contract.js.map +1 -0
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +14 -0
- package/dist/gateway/hooks.js.map +1 -1
- package/dist/inference/interface.d.ts +17 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/model-catalog.d.ts +17 -0
- package/dist/inference/model-catalog.d.ts.map +1 -1
- package/dist/inference/model-catalog.js +42 -7
- package/dist/inference/model-catalog.js.map +1 -1
- package/dist/inference/model-id-validation.d.ts +57 -0
- package/dist/inference/model-id-validation.d.ts.map +1 -0
- package/dist/inference/model-id-validation.js +127 -0
- package/dist/inference/model-id-validation.js.map +1 -0
- package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
- package/dist/inference/openai-compat-adapter.js +12 -1
- package/dist/inference/openai-compat-adapter.js.map +1 -1
- package/dist/inference/provider-catalog.d.ts +11 -0
- package/dist/inference/provider-catalog.d.ts.map +1 -1
- package/dist/inference/provider-catalog.js +80 -0
- package/dist/inference/provider-catalog.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +2 -8
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +17 -0
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tool-call-utils.d.ts +4 -3
- package/dist/inference/tool-call-utils.d.ts.map +1 -1
- package/dist/inference/tool-call-utils.js +26 -12
- package/dist/inference/tool-call-utils.js.map +1 -1
- package/dist/inference/tools.d.ts +1 -0
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +20 -3
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/agentic-route-gate.d.ts +104 -0
- package/dist/learning/agentic-route-gate.d.ts.map +1 -0
- package/dist/learning/agentic-route-gate.js +125 -0
- package/dist/learning/agentic-route-gate.js.map +1 -0
- package/dist/learning/auto-router.d.ts +89 -0
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +188 -8
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/build-prerequisites.d.ts +68 -0
- package/dist/learning/build-prerequisites.d.ts.map +1 -0
- package/dist/learning/build-prerequisites.js +267 -0
- package/dist/learning/build-prerequisites.js.map +1 -0
- package/dist/learning/continuation-intent.d.ts +43 -0
- package/dist/learning/continuation-intent.d.ts.map +1 -0
- package/dist/learning/continuation-intent.js +82 -0
- package/dist/learning/continuation-intent.js.map +1 -0
- package/dist/learning/error-repair.d.ts +23 -1
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +58 -0
- package/dist/learning/error-repair.js.map +1 -1
- package/dist/learning/knowledge-base.d.ts +124 -0
- package/dist/learning/knowledge-base.d.ts.map +1 -0
- package/dist/learning/knowledge-base.js +337 -0
- package/dist/learning/knowledge-base.js.map +1 -0
- package/dist/learning/model-harness.d.ts +19 -0
- package/dist/learning/model-harness.d.ts.map +1 -1
- package/dist/learning/model-harness.js +27 -0
- package/dist/learning/model-harness.js.map +1 -1
- package/dist/learning/model-selection.d.ts +2 -1
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +35 -2
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/project-docs.d.ts +83 -0
- package/dist/learning/project-docs.d.ts.map +1 -0
- package/dist/learning/project-docs.js +132 -0
- package/dist/learning/project-docs.js.map +1 -0
- package/dist/learning/prompt-budget.d.ts +91 -0
- package/dist/learning/prompt-budget.d.ts.map +1 -0
- package/dist/learning/prompt-budget.js +99 -0
- package/dist/learning/prompt-budget.js.map +1 -0
- package/dist/learning/quota-ledger.d.ts +13 -0
- package/dist/learning/quota-ledger.d.ts.map +1 -1
- package/dist/learning/quota-ledger.js +28 -0
- package/dist/learning/quota-ledger.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +55 -2
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +48 -0
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +16 -3
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/routing-history.d.ts +13 -0
- package/dist/learning/routing-history.d.ts.map +1 -1
- package/dist/learning/routing-history.js.map +1 -1
- package/dist/learning/seeded-benchmark.d.ts +14 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -1
- package/dist/learning/seeded-benchmark.js +43 -4
- package/dist/learning/seeded-benchmark.js.map +1 -1
- package/dist/learning/turn-report.d.ts +78 -0
- package/dist/learning/turn-report.d.ts.map +1 -0
- package/dist/learning/turn-report.js +140 -0
- package/dist/learning/turn-report.js.map +1 -0
- package/dist/security/secret-scan.d.ts +156 -0
- package/dist/security/secret-scan.d.ts.map +1 -0
- package/dist/security/secret-scan.js +525 -0
- package/dist/security/secret-scan.js.map +1 -0
- package/dist/tools/edit-verification.d.ts +2 -11
- package/dist/tools/edit-verification.d.ts.map +1 -1
- package/dist/tools/edit-verification.js +33 -1
- package/dist/tools/edit-verification.js.map +1 -1
- package/dist/tools/loop-skill-hint.d.ts +51 -0
- package/dist/tools/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +87 -2
- package/dist/tools/loop-skill-hint.js.map +1 -1
- package/dist/tools/plan-store.d.ts +126 -3
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +290 -6
- package/dist/tools/plan-store.js.map +1 -1
- package/dist/tools/registry.d.ts +20 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +165 -4
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts +91 -0
- package/dist/tools/remediation-ladder.d.ts.map +1 -0
- package/dist/tools/remediation-ladder.js +308 -0
- package/dist/tools/remediation-ladder.js.map +1 -0
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +60 -2
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/skills-hub.d.ts +7 -0
- package/dist/tools/skills-hub.d.ts.map +1 -1
- package/dist/tools/skills-hub.js +11 -2
- package/dist/tools/skills-hub.js.map +1 -1
- package/dist/tools/step-artifact.d.ts +35 -0
- package/dist/tools/step-artifact.d.ts.map +1 -0
- package/dist/tools/step-artifact.js +154 -0
- package/dist/tools/step-artifact.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +35 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +284 -9
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/toolsets.js +4 -4
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/worktree.d.ts +11 -2
- package/dist/tools/worktree.d.ts.map +1 -1
- package/dist/tools/worktree.js +11 -2
- package/dist/tools/worktree.js.map +1 -1
- package/dist/utils/effect-verification.js +1 -1
- package/dist/utils/effect-verification.js.map +1 -1
- package/dist/web-dashboard/chat-console.d.ts +21 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +33 -5
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +29 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +410 -5
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +137 -0
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +7 -0
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +70 -0
- package/dist/web-dashboard/workspace-guard.js.map +1 -1
- package/package.json +4 -1
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js +210 -0
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +1 -0
- package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/src/web-dashboard/public/assets/index-BdKf5Xw2.js +0 -207
- package/src/web-dashboard/public/assets/index-BdKf5Xw2.js.map +0 -1
- package/src/web-dashboard/public/assets/index-C9eBskc9.css +0 -1
package/dist/tools/plan-store.js
CHANGED
|
@@ -10,15 +10,102 @@
|
|
|
10
10
|
* internal planner stays untouched — this is the CHAT-loop surface (the
|
|
11
11
|
* dashboard chat renders it as a live checklist card).
|
|
12
12
|
*
|
|
13
|
+
* THE PROGRESS HAS TO BE VISIBLE, NOT JUST STORED. A plan that is created and
|
|
14
|
+
* then never advanced is worse than no plan: it reads as tracking while saying
|
|
15
|
+
* nothing. So the store carries a TABULAR renderer (`toTable`) that every
|
|
16
|
+
* surface shows — a goal, a done/total progress count, one row per step, and a
|
|
17
|
+
* plain-English note per row once the step reports one. `toText()` returns that
|
|
18
|
+
* table while work is happening, and swaps to an ACHIEVED summary
|
|
19
|
+
* (`summary()`) once every step has reached a terminal state, so a plan that
|
|
20
|
+
* spans several turns can be closed out with "what actually got done".
|
|
21
|
+
*
|
|
22
|
+
* PERSISTENCE — the plan is the thing a multi-session project needs to keep.
|
|
23
|
+
* The store itself stays in-memory and dependency-free, but it accepts an
|
|
24
|
+
* `onChange` sink (called on every mutation AND on hydrate) plus a `hydrate`
|
|
25
|
+
* entry point, and this module ships the file helpers (`planFilePath` /
|
|
26
|
+
* `readPlanFile` / `writePlanFile`) the callers wire it to. One file per SCOPE
|
|
27
|
+
* (a dashboard session id, or a CLI project path) so a plan follows the scope
|
|
28
|
+
* it was created in and never leaks into an unrelated conversation.
|
|
29
|
+
*
|
|
13
30
|
* Lifecycle: the ToolContext carries an OPTIONAL `planStore`; chat.ts owns
|
|
14
31
|
* one per ChatCommand instance (default) and the dashboard console injects a
|
|
15
32
|
* per-session store so plans never leak across conversations. A tool run
|
|
16
33
|
* without a store falls back to a shared module-level store (best-effort —
|
|
17
34
|
* the tool must never throw on a missing store).
|
|
18
35
|
*/
|
|
36
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
37
|
+
import { createHash } from 'node:crypto';
|
|
38
|
+
import { dirname, join } from 'node:path';
|
|
39
|
+
import { envBuff, resolveNuviraHome } from '../config/paths.js';
|
|
19
40
|
const VALID_STATUSES = ['pending', 'running', 'done', 'blocked'];
|
|
41
|
+
/** A step that no longer needs work. */
|
|
42
|
+
function isTerminal(status) {
|
|
43
|
+
return status === 'done' || status === 'blocked';
|
|
44
|
+
}
|
|
45
|
+
/** The one status glyph, shared by every renderer so they cannot drift. */
|
|
46
|
+
function statusIcon(status) {
|
|
47
|
+
if (status === 'done')
|
|
48
|
+
return '✅';
|
|
49
|
+
if (status === 'running')
|
|
50
|
+
return '🔄';
|
|
51
|
+
if (status === 'blocked')
|
|
52
|
+
return '⛔';
|
|
53
|
+
return '⬜';
|
|
54
|
+
}
|
|
55
|
+
/** A short human word for a status (the table's Status cell). */
|
|
56
|
+
function statusWord(status) {
|
|
57
|
+
if (status === 'done')
|
|
58
|
+
return 'done';
|
|
59
|
+
if (status === 'running')
|
|
60
|
+
return 'in progress';
|
|
61
|
+
if (status === 'blocked')
|
|
62
|
+
return 'blocked';
|
|
63
|
+
return 'pending';
|
|
64
|
+
}
|
|
65
|
+
/** The stored shape is read back from disk, so validate before trusting it. */
|
|
66
|
+
function normalizeStep(raw, index) {
|
|
67
|
+
if (typeof raw !== 'object' || raw === null)
|
|
68
|
+
return null;
|
|
69
|
+
const record = raw;
|
|
70
|
+
const description = String(record.description ?? '').trim();
|
|
71
|
+
if (!description)
|
|
72
|
+
return null;
|
|
73
|
+
const status = VALID_STATUSES.includes(record.status)
|
|
74
|
+
? record.status
|
|
75
|
+
: 'pending';
|
|
76
|
+
const note = typeof record.note === 'string' && record.note.trim() ? record.note.trim() : undefined;
|
|
77
|
+
return {
|
|
78
|
+
id: String(record.id ?? `step-${index + 1}`),
|
|
79
|
+
description,
|
|
80
|
+
status,
|
|
81
|
+
...(note ? { note } : {}),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/** Validate a persisted plan (or reject it wholesale). */
|
|
85
|
+
export function normalizePlan(raw) {
|
|
86
|
+
if (typeof raw !== 'object' || raw === null)
|
|
87
|
+
return null;
|
|
88
|
+
const record = raw;
|
|
89
|
+
if (!Array.isArray(record.steps))
|
|
90
|
+
return null;
|
|
91
|
+
const steps = record.steps
|
|
92
|
+
.map((s, i) => normalizeStep(s, i))
|
|
93
|
+
.filter((s) => s !== null);
|
|
94
|
+
if (steps.length === 0)
|
|
95
|
+
return null;
|
|
96
|
+
return {
|
|
97
|
+
goal: String(record.goal ?? '').trim() || '(untitled plan)',
|
|
98
|
+
steps,
|
|
99
|
+
revision: Number(record.revision) || 0,
|
|
100
|
+
updatedAt: Number(record.updatedAt) || Date.now(),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
20
103
|
export class PlanStore {
|
|
21
104
|
plan = null;
|
|
105
|
+
onChange;
|
|
106
|
+
constructor(options = {}) {
|
|
107
|
+
this.onChange = options.onChange;
|
|
108
|
+
}
|
|
22
109
|
/** The current plan (null when none was created yet). */
|
|
23
110
|
snapshot() {
|
|
24
111
|
return this.plan ? { ...this.plan, steps: this.plan.steps.map((s) => ({ ...s })) } : null;
|
|
@@ -28,6 +115,16 @@ export class PlanStore {
|
|
|
28
115
|
const p = this.snapshot();
|
|
29
116
|
return p ? { goal: p.goal, steps: p.steps, revision: p.revision } : null;
|
|
30
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Restore a persisted plan. Used once, when a scope is first opened, so a
|
|
120
|
+
* plan created in an earlier session appears again (and is announced through
|
|
121
|
+
* `onChange`, so the GUI redraws its checklist).
|
|
122
|
+
*/
|
|
123
|
+
hydrate(plan) {
|
|
124
|
+
const normalized = plan ? normalizePlan(plan) : null;
|
|
125
|
+
this.plan = normalized;
|
|
126
|
+
this.onChange?.(this.snapshot());
|
|
127
|
+
}
|
|
31
128
|
/**
|
|
32
129
|
* Create (or REPLACE) the plan. Idempotent: re-declaring steps is the
|
|
33
130
|
* model's way to correct course — a fresh declaration supersedes the old.
|
|
@@ -44,37 +141,165 @@ export class PlanStore {
|
|
|
44
141
|
revision: (this.plan?.revision ?? 0) + 1,
|
|
45
142
|
updatedAt: Date.now(),
|
|
46
143
|
};
|
|
144
|
+
this.onChange?.(this.snapshot());
|
|
47
145
|
return this.snapshot();
|
|
48
146
|
}
|
|
49
|
-
/**
|
|
50
|
-
|
|
147
|
+
/**
|
|
148
|
+
* Resolve a step reference the model sent to a real step id.
|
|
149
|
+
*
|
|
150
|
+
* Models are inconsistent about how they name a step: the schema examples
|
|
151
|
+
* are `step-1`/`reproduce`, but a live run's model addressed steps by bare
|
|
152
|
+
* ordinal (`2`, `3`) while it had created them as `step-2` (observed on the
|
|
153
|
+
* `cal` Android run, 2026-10-05 — the one-update that matched advanced the
|
|
154
|
+
* plan, every later update was a silent no-op and the checklist froze at
|
|
155
|
+
* `1/7`). Accept, in order: the exact id, the id with an optional
|
|
156
|
+
* `step`/`step-`/`#` prefix stripped (either side), and a 1-based ordinal
|
|
157
|
+
* when the reference is a plain integer inside range. Case-insensitive.
|
|
158
|
+
*/
|
|
159
|
+
resolveStepId(id) {
|
|
160
|
+
if (!this.plan)
|
|
161
|
+
return null;
|
|
162
|
+
const raw = String(id ?? '').trim();
|
|
163
|
+
if (!raw)
|
|
164
|
+
return null;
|
|
165
|
+
const steps = this.plan.steps;
|
|
166
|
+
const exact = steps.find((s) => s.id === raw);
|
|
167
|
+
if (exact)
|
|
168
|
+
return exact.id;
|
|
169
|
+
const bare = (value) => value.toLowerCase().replace(/^[#]+/, '').replace(/^step[\s_-]*/, '').replace(/[\s_-]*$/, '');
|
|
170
|
+
const wanted = bare(raw);
|
|
171
|
+
if (wanted) {
|
|
172
|
+
const byBare = steps.find((s) => bare(s.id) === wanted);
|
|
173
|
+
if (byBare)
|
|
174
|
+
return byBare.id;
|
|
175
|
+
}
|
|
176
|
+
if (/^\d+$/.test(raw)) {
|
|
177
|
+
const n = Number(raw);
|
|
178
|
+
if (n >= 1 && n <= steps.length)
|
|
179
|
+
return steps[n - 1].id;
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Mark one step's status (and optionally record a plain-English note about
|
|
185
|
+
* it). The reference is resolved through {@link resolveStepId} first, so a
|
|
186
|
+
* model that addressed `3` when the step is `step-3` still advances the
|
|
187
|
+
* plan. Unknown reference → no-op (returns the unchanged plan); callers that
|
|
188
|
+
* need to tell the two apart resolve first.
|
|
189
|
+
*/
|
|
190
|
+
update(reference, status, note) {
|
|
51
191
|
if (!this.plan)
|
|
52
192
|
return null;
|
|
53
193
|
if (!VALID_STATUSES.includes(status))
|
|
54
194
|
return this.snapshot();
|
|
195
|
+
const id = this.resolveStepId(reference) ?? reference;
|
|
196
|
+
const cleanNote = typeof note === 'string' && note.trim() ? note.trim() : undefined;
|
|
55
197
|
let changed = false;
|
|
56
198
|
for (const step of this.plan.steps) {
|
|
57
199
|
if (step.id === id) {
|
|
58
200
|
if (step.status !== status)
|
|
59
201
|
changed = true;
|
|
60
202
|
step.status = status;
|
|
203
|
+
if (cleanNote !== undefined && step.note !== cleanNote) {
|
|
204
|
+
step.note = cleanNote;
|
|
205
|
+
changed = true;
|
|
206
|
+
}
|
|
61
207
|
}
|
|
62
208
|
}
|
|
63
209
|
if (changed) {
|
|
64
210
|
this.plan.revision += 1;
|
|
65
211
|
this.plan.updatedAt = Date.now();
|
|
212
|
+
this.onChange?.(this.snapshot());
|
|
66
213
|
}
|
|
67
214
|
return this.snapshot();
|
|
68
215
|
}
|
|
216
|
+
/** A single, shared progress computation for every renderer. */
|
|
217
|
+
progress() {
|
|
218
|
+
const steps = this.plan?.steps ?? [];
|
|
219
|
+
const done = steps.filter((s) => s.status === 'done').length;
|
|
220
|
+
const blocked = steps.filter((s) => s.status === 'blocked').length;
|
|
221
|
+
const total = steps.length;
|
|
222
|
+
const percent = total === 0 ? 0 : Math.round((done / total) * 100);
|
|
223
|
+
return {
|
|
224
|
+
done,
|
|
225
|
+
blocked,
|
|
226
|
+
total,
|
|
227
|
+
percent,
|
|
228
|
+
complete: total > 0 && done === total,
|
|
229
|
+
settled: total > 0 && steps.every((s) => isTerminal(s.status)),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/** The step being worked right now (the first `running` one), or null. */
|
|
233
|
+
currentStep() {
|
|
234
|
+
return this.plan?.steps.find((s) => s.status === 'running') ?? null;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* The tabular progress view — the ONE rendering every surface shows.
|
|
238
|
+
*
|
|
239
|
+
* A markdown table, deliberately, because it reads in a terminal, in a
|
|
240
|
+
* transcript, and in the dashboard card without three formatters drifting.
|
|
241
|
+
* Columns: #, Step, Status, and Notes (only when a step has reported one, so
|
|
242
|
+
* an early plan is not padded with empty cells).
|
|
243
|
+
*/
|
|
244
|
+
toTable() {
|
|
245
|
+
const p = this.plan;
|
|
246
|
+
if (!p)
|
|
247
|
+
return 'No plan yet — call plan_todo with action "create" and the steps to start one.';
|
|
248
|
+
const prog = this.progress();
|
|
249
|
+
const hasNotes = p.steps.some((s) => s.note);
|
|
250
|
+
const head = hasNotes
|
|
251
|
+
? '| # | Step | Status | Notes |\n|---|------|--------|-------|'
|
|
252
|
+
: '| # | Step | Status |\n|---|------|--------|';
|
|
253
|
+
const rows = p.steps.map((s, i) => {
|
|
254
|
+
const n = `${i + 1}`;
|
|
255
|
+
const desc = s.description.replace(/\|/g, '\\|');
|
|
256
|
+
const cell = `${statusIcon(s.status)} ${statusWord(s.status)}`;
|
|
257
|
+
if (!hasNotes)
|
|
258
|
+
return `| ${n} | ${desc} | ${cell} |`;
|
|
259
|
+
const note = (s.note ?? '').replace(/\|/g, '\\|');
|
|
260
|
+
return `| ${n} | ${desc} | ${cell} | ${note} |`;
|
|
261
|
+
});
|
|
262
|
+
return [`🗂️ Plan: ${p.goal} — ${prog.done}/${prog.total} done (${prog.percent}%)`, head, ...rows].join('\n');
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* The achieved summary — what the plan actually got done. Shown once the plan
|
|
266
|
+
* settles (every step done or blocked), so a multi-session project ends with
|
|
267
|
+
* a list of outcomes instead of a dangling checklist.
|
|
268
|
+
*/
|
|
269
|
+
summary() {
|
|
270
|
+
const p = this.plan;
|
|
271
|
+
if (!p)
|
|
272
|
+
return 'No plan to summarise.';
|
|
273
|
+
const prog = this.progress();
|
|
274
|
+
if (prog.complete) {
|
|
275
|
+
return [
|
|
276
|
+
`✅ Plan complete — ${prog.done}/${prog.total} steps achieved (100%)`,
|
|
277
|
+
this.toTable(),
|
|
278
|
+
].join('\n');
|
|
279
|
+
}
|
|
280
|
+
const outstanding = p.steps.filter((s) => !isTerminal(s.status)).length;
|
|
281
|
+
return [
|
|
282
|
+
`📋 Plan settled — ${prog.done}/${prog.total} achieved, ${outstanding} outstanding, ${prog.blocked} blocked`,
|
|
283
|
+
this.toTable(),
|
|
284
|
+
].join('\n');
|
|
285
|
+
}
|
|
69
286
|
/** Human-readable text the model sees as the tool result. */
|
|
70
287
|
toText() {
|
|
71
288
|
const p = this.plan;
|
|
72
289
|
if (!p)
|
|
73
290
|
return 'No plan yet — call plan_todo with action "create" and the steps to start one.';
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
291
|
+
const table = this.toTable();
|
|
292
|
+
const prog = this.progress();
|
|
293
|
+
// While work is happening, name the step in flight in plain English so a
|
|
294
|
+
// reader who only sees the tool result knows where the plan stands.
|
|
295
|
+
if (!prog.settled) {
|
|
296
|
+
const current = this.currentStep();
|
|
297
|
+
const line = current
|
|
298
|
+
? ` 🔄 Working on step ${p.steps.indexOf(current) + 1}/${prog.total}: ${current.description}`
|
|
299
|
+
: ` ⬜ No step in progress — mark the next one "running" when you start it.`;
|
|
300
|
+
return `${table}\n${line}`;
|
|
301
|
+
}
|
|
302
|
+
return this.summary();
|
|
78
303
|
}
|
|
79
304
|
}
|
|
80
305
|
/**
|
|
@@ -86,4 +311,63 @@ const sharedStore = new PlanStore();
|
|
|
86
311
|
export function defaultPlanStore() {
|
|
87
312
|
return sharedStore;
|
|
88
313
|
}
|
|
314
|
+
// ─── Persistence (file-per-scope) ────────────────────────────────────────────
|
|
315
|
+
/**
|
|
316
|
+
* Sanitize a scope id (a session id or a project path) into a filename. A hash
|
|
317
|
+
* is appended so two scopes that sanitize to the same readable prefix (two
|
|
318
|
+
* paths differing only in a separator) can never share a plan file.
|
|
319
|
+
*/
|
|
320
|
+
function scopeSlug(scopeId) {
|
|
321
|
+
const readable = scopeId.replace(/[^a-zA-Z0-9._-]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 60);
|
|
322
|
+
const hash = createHash('sha1').update(scopeId).digest('hex').slice(0, 10);
|
|
323
|
+
return `${readable || 'scope'}-${hash}`;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* The plan file for one scope, under the standard memory dir.
|
|
327
|
+
*
|
|
328
|
+
* Resolved LAZILY through the same `NUVIRA_MEMORY_DIR` override every other
|
|
329
|
+
* persisted store honours (`cost-tracker.ts`'s `memoryDir()`), so a hermetic
|
|
330
|
+
* run (test, sandbox, isolated profile) never writes a plan into the real
|
|
331
|
+
* profile — the hazard the test harness documents for the registry mirror.
|
|
332
|
+
*/
|
|
333
|
+
export function planFilePath(scopeId) {
|
|
334
|
+
const memoryDir = envBuff('MEMORY_DIR') || join(resolveNuviraHome(), 'memory');
|
|
335
|
+
return join(memoryDir, 'plans', `${scopeSlug(scopeId)}.json`);
|
|
336
|
+
}
|
|
337
|
+
/** Read + validate a persisted plan (best-effort: any failure = no plan). */
|
|
338
|
+
export function readPlanFile(path) {
|
|
339
|
+
try {
|
|
340
|
+
if (!existsSync(path))
|
|
341
|
+
return null;
|
|
342
|
+
return normalizePlan(JSON.parse(readFileSync(path, 'utf-8')));
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/** Write a plan to disk (best-effort: a failed write must never break a turn). */
|
|
349
|
+
export function writePlanFile(path, plan) {
|
|
350
|
+
try {
|
|
351
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
352
|
+
writeFileSync(path, JSON.stringify(plan, null, 2));
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
/* persistence is a convenience, never a requirement */
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* A file-backed store for one scope: hydrates from `path` on construction, and
|
|
360
|
+
* writes back on every change. The convenience wrapper the CLI and dashboard
|
|
361
|
+
* both use instead of re-implementing the wiring.
|
|
362
|
+
*/
|
|
363
|
+
export function createPersistentPlanStore(scopeId) {
|
|
364
|
+
const path = planFilePath(scopeId);
|
|
365
|
+
const store = new PlanStore({
|
|
366
|
+
onChange: (plan) => writePlanFile(path, plan),
|
|
367
|
+
});
|
|
368
|
+
const restored = readPlanFile(path);
|
|
369
|
+
if (restored)
|
|
370
|
+
store.hydrate(restored);
|
|
371
|
+
return store;
|
|
372
|
+
}
|
|
89
373
|
//# sourceMappingURL=plan-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-store.js","sourceRoot":"","sources":["../../src/tools/plan-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plan-store.js","sourceRoot":"","sources":["../../src/tools/plan-store.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -205,6 +205,24 @@ export interface ToolContext {
|
|
|
205
205
|
* throws).
|
|
206
206
|
*/
|
|
207
207
|
planStore?: import('./plan-store.js').PlanStoreLike;
|
|
208
|
+
/**
|
|
209
|
+
* A state-changing command that a tool just refused PENDING THE USER'S
|
|
210
|
+
* CONFIRMATION (set by `run_terminal`), with the command text.
|
|
211
|
+
*
|
|
212
|
+
* WHY THIS EXISTS (2026-10-04). `run_terminal` refuses a `confirm`-class
|
|
213
|
+
* command with "call ask_user (yes/no, one-line reason), then re-call
|
|
214
|
+
* run_terminal with confirm:true only if the user agreed." But the G13 gate
|
|
215
|
+
* in `ask_user` then SUPPRESSED that very question ("your request already
|
|
216
|
+
* authorized this work — decide it yourself"), so a model could neither run
|
|
217
|
+
* the command nor ask about it. A live trace (`trace-1791118650644-d73hyr`)
|
|
218
|
+
* hit exactly this deadlock on `cargo --version` and stalled. Setting this
|
|
219
|
+
* when a confirmation refusal is issued lets that ONE ask reach the user
|
|
220
|
+
* instead of being swallowed. Cleared once it is consumed.
|
|
221
|
+
*/
|
|
222
|
+
pendingConfirmation?: {
|
|
223
|
+
tool: string;
|
|
224
|
+
command: string;
|
|
225
|
+
};
|
|
208
226
|
/**
|
|
209
227
|
* Tiered tool exposure (AGENTIC_CAPABILITY_ASSESSMENT Addendum v3/v4):
|
|
210
228
|
* when the loop runs in 'tiered' mode, tools outside the CORE set are
|
|
@@ -319,8 +337,8 @@ export declare const skillToolSchema: z.ZodObject<{
|
|
|
319
337
|
manage: z.ZodOptional<z.ZodObject<{
|
|
320
338
|
action: z.ZodEnum<{
|
|
321
339
|
delete: "delete";
|
|
322
|
-
create: "create";
|
|
323
340
|
write_file: "write_file";
|
|
341
|
+
create: "create";
|
|
324
342
|
patch: "patch";
|
|
325
343
|
}>;
|
|
326
344
|
name: z.ZodString;
|
|
@@ -349,6 +367,7 @@ export declare const planTodoSchema: z.ZodObject<{
|
|
|
349
367
|
pending: "pending";
|
|
350
368
|
blocked: "blocked";
|
|
351
369
|
}>>;
|
|
370
|
+
note: z.ZodOptional<z.ZodString>;
|
|
352
371
|
}, z.core.$strip>;
|
|
353
372
|
/**
|
|
354
373
|
* The shared suggest_followups output schema (exported for cross-command
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,CAAC,EAAgB,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|