@unbrained/pm-web 2026.8.10 → 2026.8.17
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/CHANGELOG.md +22 -0
- package/dist/app.d.ts +16 -0
- package/dist/app.js +16 -0
- package/dist/app.js.map +1 -1
- package/dist/auth.d.ts +5 -0
- package/dist/auth.js.map +1 -1
- package/dist/board.d.ts +53 -0
- package/dist/board.js +48 -0
- package/dist/board.js.map +1 -1
- package/dist/crypto.d.ts +23 -0
- package/dist/crypto.js +32 -0
- package/dist/crypto.js.map +1 -1
- package/dist/db.d.ts +19 -0
- package/dist/db.js +19 -0
- package/dist/db.js.map +1 -1
- package/dist/ical.d.ts +72 -0
- package/dist/ical.js +73 -0
- package/dist/ical.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +52 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +8 -0
- package/dist/middleware/auth.js.map +1 -1
- package/dist/oidc.d.ts +87 -0
- package/dist/oidc.js +113 -0
- package/dist/oidc.js.map +1 -1
- package/dist/routes/admin.js +15 -0
- package/dist/routes/admin.js.map +1 -1
- package/dist/routes/extensions.js +10 -0
- package/dist/routes/extensions.js.map +1 -1
- package/dist/routes/github.js +13 -0
- package/dist/routes/github.js.map +1 -1
- package/dist/routes/oidc.d.ts +10 -0
- package/dist/routes/oidc.js +51 -0
- package/dist/routes/oidc.js.map +1 -1
- package/dist/routes/pm.js +132 -1
- package/dist/routes/pm.js.map +1 -1
- package/dist/routes/sharing.js +8 -0
- package/dist/routes/sharing.js.map +1 -1
- package/dist/services/mutation-event-watcher.js +13 -0
- package/dist/services/mutation-event-watcher.js.map +1 -1
- package/dist/services/package-catalog.d.ts +24 -0
- package/dist/services/package-catalog.js +22 -2
- package/dist/services/package-catalog.js.map +1 -1
- package/dist/services/pm-runner.d.ts +82 -0
- package/dist/services/pm-runner.js +121 -0
- package/dist/services/pm-runner.js.map +1 -1
- package/dist/services/project-watcher.d.ts +22 -0
- package/dist/services/project-watcher.js +51 -0
- package/dist/services/project-watcher.js.map +1 -1
- package/dist/services/realtime-bus.d.ts +46 -0
- package/dist/services/realtime-bus.js +59 -0
- package/dist/services/realtime-bus.js.map +1 -1
- package/dist/services/sse.d.ts +134 -0
- package/dist/services/sse.js +145 -0
- package/dist/services/sse.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +5 -3
- package/public/src/app.js +44 -1
- package/public/src/app.js.map +1 -1
- package/public/src/app.ts +44 -1
- package/public/src/components/modals.js +11 -0
- package/public/src/components/modals.js.map +1 -1
- package/public/src/components/modals.ts +11 -0
- package/public/src/components/toast.js +2 -0
- package/public/src/components/toast.js.map +1 -1
- package/public/src/components/toast.ts +2 -0
- package/public/src/constants.js +21 -4
- package/public/src/constants.js.map +1 -1
- package/public/src/constants.ts +21 -4
- package/public/src/filters.js +10 -7
- package/public/src/filters.js.map +1 -1
- package/public/src/filters.ts +10 -7
- package/public/src/i18n/de.json +3 -1
- package/public/src/i18n/en.json +3 -1
- package/public/src/i18n/es.json +3 -1
- package/public/src/i18n/zh.json +3 -1
- package/public/src/i18n.js +11 -1
- package/public/src/i18n.js.map +1 -1
- package/public/src/i18n.ts +13 -1
- package/public/src/state.js +3 -0
- package/public/src/state.js.map +1 -1
- package/public/src/state.ts +3 -0
- package/public/src/sw.ts +71 -7
- package/public/src/theme.js +13 -1
- package/public/src/theme.js.map +1 -1
- package/public/src/theme.ts +15 -1
- package/public/src/types.ts +2 -0
- package/public/src/utils.js +26 -1
- package/public/src/utils.js.map +1 -1
- package/public/src/utils.ts +26 -1
- package/public/src/views/activity.js +1 -0
- package/public/src/views/activity.js.map +1 -1
- package/public/src/views/activity.ts +1 -0
- package/public/src/views/admin.js +134 -0
- package/public/src/views/admin.js.map +1 -1
- package/public/src/views/admin.ts +134 -0
- package/public/src/views/auth.js +31 -0
- package/public/src/views/auth.js.map +1 -1
- package/public/src/views/auth.ts +31 -0
- package/public/src/views/calendar.js +3 -0
- package/public/src/views/calendar.js.map +1 -1
- package/public/src/views/calendar.ts +3 -0
- package/public/src/views/comments-audit.js +1 -0
- package/public/src/views/comments-audit.js.map +1 -1
- package/public/src/views/comments-audit.ts +1 -0
- package/public/src/views/config.js +67 -0
- package/public/src/views/config.js.map +1 -1
- package/public/src/views/config.ts +67 -0
- package/public/src/views/context.js +2 -0
- package/public/src/views/context.js.map +1 -1
- package/public/src/views/context.ts +2 -0
- package/public/src/views/create.js +3 -0
- package/public/src/views/create.js.map +1 -1
- package/public/src/views/create.ts +3 -0
- package/public/src/views/dedupe.js +1 -0
- package/public/src/views/dedupe.js.map +1 -1
- package/public/src/views/dedupe.ts +1 -0
- package/public/src/views/export.js +6 -0
- package/public/src/views/export.js.map +1 -1
- package/public/src/views/export.ts +6 -0
- package/public/src/views/github.js +58 -0
- package/public/src/views/github.js.map +1 -1
- package/public/src/views/github.ts +58 -0
- package/public/src/views/graph-canvas.js +18 -0
- package/public/src/views/graph-canvas.js.map +1 -1
- package/public/src/views/graph-canvas.ts +20 -0
- package/public/src/views/graph.js +41 -0
- package/public/src/views/graph.js.map +1 -1
- package/public/src/views/graph.ts +42 -1
- package/public/src/views/groups.js +45 -0
- package/public/src/views/groups.js.map +1 -1
- package/public/src/views/groups.ts +45 -0
- package/public/src/views/guide.js +3 -0
- package/public/src/views/guide.js.map +1 -1
- package/public/src/views/guide.ts +3 -0
- package/public/src/views/health.js +3 -0
- package/public/src/views/health.js.map +1 -1
- package/public/src/views/health.ts +3 -0
- package/public/src/views/items.js +196 -6
- package/public/src/views/items.js.map +1 -1
- package/public/src/views/items.ts +196 -6
- package/public/src/views/normalize.js +2 -0
- package/public/src/views/normalize.js.map +1 -1
- package/public/src/views/normalize.ts +2 -0
- package/public/src/views/packages.js +67 -5
- package/public/src/views/packages.js.map +1 -1
- package/public/src/views/packages.ts +74 -5
- package/public/src/views/plan-execution.js +6 -0
- package/public/src/views/plan-execution.js.map +1 -1
- package/public/src/views/plan-execution.ts +8 -0
- package/public/src/views/plan.js +145 -0
- package/public/src/views/plan.js.map +1 -1
- package/public/src/views/plan.ts +146 -1
- package/public/src/views/projects.js +60 -0
- package/public/src/views/projects.js.map +1 -1
- package/public/src/views/projects.ts +60 -0
- package/public/src/views/router.js +43 -0
- package/public/src/views/router.js.map +1 -1
- package/public/src/views/router.ts +43 -0
- package/public/src/views/search.js +5 -0
- package/public/src/views/search.js.map +1 -1
- package/public/src/views/search.ts +5 -0
- package/public/src/views/settings.js +36 -0
- package/public/src/views/settings.js.map +1 -1
- package/public/src/views/settings.ts +36 -0
- package/public/src/views/shared.js +1 -0
- package/public/src/views/shared.js.map +1 -1
- package/public/src/views/shared.ts +1 -0
- package/public/src/views/sharing.js +32 -0
- package/public/src/views/sharing.js.map +1 -1
- package/public/src/views/sharing.ts +32 -0
- package/public/src/views/stats.js +1 -0
- package/public/src/views/stats.js.map +1 -1
- package/public/src/views/stats.ts +1 -0
- package/public/src/views/templates.js +4 -0
- package/public/src/views/templates.js.map +1 -1
- package/public/src/views/templates.ts +4 -0
- package/public/src/views/validate.js +1 -0
- package/public/src/views/validate.js.map +1 -1
- package/public/src/views/validate.ts +1 -0
- package/public/sw.js +60 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packages.js","sourceRoot":"","sources":["packages.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iDAAiD;AACjD,kEAAkE;AAClE,EAAE;AACF,sDAAsD;AACtD,iDAAiD;AACjD,uEAAuE;AACvE,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,6DAA6D;AAC7D,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,13 @@ interface PackageRow {
|
|
|
35
35
|
capabilities: string[];
|
|
36
36
|
/** "extension" (product) or "template" (authoring reference scaffold). */
|
|
37
37
|
category: 'extension' | 'template';
|
|
38
|
+
/**
|
|
39
|
+
* Whether the package can be installed today. Absent means published, which
|
|
40
|
+
* is the state of every package that has a release on npm. "unreleased"
|
|
41
|
+
* means the package is real and developed in the open but has no published
|
|
42
|
+
* version, so no install can succeed and the card must not offer one.
|
|
43
|
+
*/
|
|
44
|
+
availability?: 'published' | 'unreleased';
|
|
38
45
|
requiresService?: { name: string; optional?: boolean };
|
|
39
46
|
requiresCredentials?: Array<{ label: string; envVars: string[]; optional?: boolean }>;
|
|
40
47
|
installed: boolean;
|
|
@@ -60,6 +67,12 @@ let currentPackages: PackageRow[] = [];
|
|
|
60
67
|
*/
|
|
61
68
|
let packagesFetchToken = 0;
|
|
62
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Mounts the packages view into the #content-packages element. Wires the
|
|
72
|
+
* action handler, shows an empty state when no project is selected, otherwise
|
|
73
|
+
* renders the header and a loading placeholder, then fetches and renders the
|
|
74
|
+
* package cards.
|
|
75
|
+
*/
|
|
63
76
|
export async function renderPackagesView(): Promise<void> {
|
|
64
77
|
ensureActionsWired();
|
|
65
78
|
const el = document.getElementById('content-packages');
|
|
@@ -82,6 +95,12 @@ export async function renderPackagesView(): Promise<void> {
|
|
|
82
95
|
await fetchAndRenderPackages();
|
|
83
96
|
}
|
|
84
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Fetches the project's package catalog from the extensions endpoint and
|
|
100
|
+
* renders the package cards into the content container, or an empty/error
|
|
101
|
+
* state. Uses a fetch token to discard stale responses that resolve after a
|
|
102
|
+
* project switch or a newer refresh.
|
|
103
|
+
*/
|
|
85
104
|
async function fetchAndRenderPackages(): Promise<void> {
|
|
86
105
|
const pid = state.currentProject?.id;
|
|
87
106
|
if (!pid) return;
|
|
@@ -111,6 +130,14 @@ async function fetchAndRenderPackages(): Promise<void> {
|
|
|
111
130
|
}
|
|
112
131
|
}
|
|
113
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Renders one package as a card showing its title, install status and
|
|
135
|
+
* version, a template badge for authoring scaffolds, honest gating notes for
|
|
136
|
+
* required services or credentials, its capabilities, and action buttons
|
|
137
|
+
* appropriate to its installed/active state.
|
|
138
|
+
* @param row - The package catalog row to render.
|
|
139
|
+
* @returns The card markup string.
|
|
140
|
+
*/
|
|
114
141
|
function renderPackageCard(row: PackageRow): string {
|
|
115
142
|
const statusChip = row.installed
|
|
116
143
|
? `<span style="font-size:11px;color:var(--text-muted);background:var(--bg-input);padding:2px 8px;border-radius:4px">${escHtml(t('packages.installed'))}${row.version ? ' · ' + escHtml(t('packages.version', { version: row.version })) : ''}</span>`
|
|
@@ -123,6 +150,20 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
123
150
|
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.templateBadge">${escHtml(t('packages.templateBadge'))}</span>`
|
|
124
151
|
: '';
|
|
125
152
|
|
|
153
|
+
// A package with no published release is shown, because hiding it would make
|
|
154
|
+
// the catalog look complete while the fleet plainly contains it — but it is
|
|
155
|
+
// shown as unavailable, never with an install action that cannot succeed.
|
|
156
|
+
const unreleased = row.availability === 'unreleased';
|
|
157
|
+
const unreleasedBadge = unreleased
|
|
158
|
+
? `<span style="font-size:11px;color:var(--text-secondary);background:var(--bg-accent);padding:2px 8px;border-radius:4px" data-i18n="packages.unreleasedBadge">${escHtml(t('packages.unreleasedBadge'))}</span>`
|
|
159
|
+
: '';
|
|
160
|
+
// The explanation is about not being installable, so it only applies while
|
|
161
|
+
// the package is not installed. Showing it beside an installed package would
|
|
162
|
+
// contradict the card's own status chip.
|
|
163
|
+
const unreleasedNote = unreleased && !row.installed
|
|
164
|
+
? `<div class="pkg-req" style="font-size:12px;color:var(--text-secondary);margin-top:6px">🚧 ${escHtml(t('packages.unreleased'))}</div>`
|
|
165
|
+
: '';
|
|
166
|
+
|
|
126
167
|
// Honest gating explanations — the UI must not promise a one-click install
|
|
127
168
|
// for a package that needs a Neo4j instance or an API token.
|
|
128
169
|
const serviceNote = row.requiresService
|
|
@@ -144,7 +185,14 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
144
185
|
// a raw DOM string — and the server validates it against the catalog again
|
|
145
186
|
// before any pm command is spawned.
|
|
146
187
|
let actions = '';
|
|
147
|
-
if (!row.installed) {
|
|
188
|
+
if (unreleased && !row.installed) {
|
|
189
|
+
// Nothing to install: there is no published version to install from. An
|
|
190
|
+
// unreleased package that IS installed — from a local path or a
|
|
191
|
+
// preexisting install — keeps its full management controls below, because
|
|
192
|
+
// the server supports deactivating and removing it and hiding those would
|
|
193
|
+
// strand the user with a package they cannot get rid of.
|
|
194
|
+
actions = '';
|
|
195
|
+
} else if (!row.installed) {
|
|
148
196
|
actions = `<button class="btn btn-primary btn-sm" style="width:100%" data-pkg-action="install" data-pkg-name="${escHtml(row.name)}">${escHtml(t('packages.install'))}</button>`;
|
|
149
197
|
} else if (row.active && row.enabled) {
|
|
150
198
|
actions = `
|
|
@@ -165,14 +213,14 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
165
213
|
<div class="card-header" style="display:flex;align-items:center;justify-content:space-between;gap:8px">
|
|
166
214
|
<div style="display:flex;align-items:center;gap:6px">
|
|
167
215
|
<div class="card-title">${escHtml(row.title)}</div>
|
|
168
|
-
${templateBadge}
|
|
216
|
+
${templateBadge}${unreleasedBadge}
|
|
169
217
|
</div>
|
|
170
|
-
${statusChip}
|
|
218
|
+
${unreleased && !row.installed ? '' : statusChip}
|
|
171
219
|
</div>
|
|
172
220
|
<div class="card-body" style="padding-top:0">
|
|
173
221
|
<div style="font-size:12px;color:var(--text-muted);margin-bottom:8px;line-height:1.4">${escHtml(row.description)}</div>
|
|
174
|
-
${serviceNote}${credNotes}${caps}
|
|
175
|
-
|
|
222
|
+
${unreleasedNote}${serviceNote}${credNotes}${caps}
|
|
223
|
+
${actions ? `<div style="margin-top:12px">${actions}</div>` : ''}
|
|
176
224
|
</div>
|
|
177
225
|
</div>`;
|
|
178
226
|
}
|
|
@@ -180,6 +228,13 @@ function renderPackageCard(row: PackageRow): string {
|
|
|
180
228
|
// Delegate clicks on package action buttons so each card stays simple and the
|
|
181
229
|
// handler resolves the action + name from data attributes, then calls the
|
|
182
230
|
// server-validated extensions route.
|
|
231
|
+
/**
|
|
232
|
+
* Installs a delegated click handler on the given container that routes
|
|
233
|
+
* package action button clicks (install/activate/deactivate/uninstall) to the
|
|
234
|
+
* package action handler, reading the action and package name from data
|
|
235
|
+
* attributes.
|
|
236
|
+
* @param root - The container element capturing the clicks.
|
|
237
|
+
*/
|
|
183
238
|
function wirePackageActions(root: HTMLElement): void {
|
|
184
239
|
root.addEventListener('click', (ev: MouseEvent) => {
|
|
185
240
|
const btn = (ev.target as HTMLElement).closest<HTMLButtonElement>('[data-pkg-action]');
|
|
@@ -191,6 +246,16 @@ function wirePackageActions(root: HTMLElement): void {
|
|
|
191
246
|
});
|
|
192
247
|
}
|
|
193
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Performs a package action against the extensions route for the current
|
|
251
|
+
* project. Disables and marks the clicked button while in flight, confirms
|
|
252
|
+
* before uninstalling, picks the HTTP method and URL suffix from the action,
|
|
253
|
+
* toasts the result, and re-renders the package list. Restores the button on
|
|
254
|
+
* failure.
|
|
255
|
+
* @param name - The catalog name of the target package.
|
|
256
|
+
* @param action - One of install, activate, deactivate, or uninstall.
|
|
257
|
+
* @param btn - The button element that triggered the action.
|
|
258
|
+
*/
|
|
194
259
|
async function handlePackageAction(name: string, action: string, btn: HTMLButtonElement): Promise<void> {
|
|
195
260
|
const pid = state.currentProject?.id;
|
|
196
261
|
if (!pid) return;
|
|
@@ -226,6 +291,10 @@ async function handlePackageAction(name: string, action: string, btn: HTMLButton
|
|
|
226
291
|
|
|
227
292
|
// Wire the delegated action handler once the view container exists.
|
|
228
293
|
let actionsWired = false;
|
|
294
|
+
/**
|
|
295
|
+
* Wires the delegated package action handler onto the #content-packages
|
|
296
|
+
* container exactly once, guarded by the actionsWired flag.
|
|
297
|
+
*/
|
|
229
298
|
function ensureActionsWired(): void {
|
|
230
299
|
if (actionsWired) return;
|
|
231
300
|
const root = document.getElementById('content-packages');
|
|
@@ -8,6 +8,7 @@ function normalizeStepRef(step, index) {
|
|
|
8
8
|
const candidate = (step.ref || step.id || '').trim();
|
|
9
9
|
return candidate || `step-${index + 1}`;
|
|
10
10
|
}
|
|
11
|
+
/** Returns the de-duplicated, trimmed dependency refs declared on a step, accepting either the camelCase or snake_case dependency field. */
|
|
11
12
|
function normalizeDependsOn(step) {
|
|
12
13
|
const raw = Array.isArray(step.dependsOn)
|
|
13
14
|
? step.dependsOn
|
|
@@ -23,6 +24,7 @@ function normalizeDependsOn(step) {
|
|
|
23
24
|
function formatStepLine(step) {
|
|
24
25
|
return `- [${step.ref}] ${step.title}`;
|
|
25
26
|
}
|
|
27
|
+
/** Returns a human-readable reason a step is waiting — joining its incomplete dependencies and unresolved (missing) ones — or the literal "waiting" when there are none. */
|
|
26
28
|
function formatWaitReason(step) {
|
|
27
29
|
const blockers = [
|
|
28
30
|
...step.incompleteDependencies,
|
|
@@ -32,12 +34,14 @@ function formatWaitReason(step) {
|
|
|
32
34
|
return 'waiting';
|
|
33
35
|
return `waiting on ${blockers.join(', ')}`;
|
|
34
36
|
}
|
|
37
|
+
/** Returns the combined list of a step's incomplete dependencies and its unresolved (missing) dependencies, with each missing ref suffixed by " (missing)". */
|
|
35
38
|
function stepDependencyBlockers(step) {
|
|
36
39
|
return [
|
|
37
40
|
...step.incompleteDependencies,
|
|
38
41
|
...step.unresolvedDependencies.map(dep => `${dep} (missing)`),
|
|
39
42
|
];
|
|
40
43
|
}
|
|
44
|
+
/** Builds an execution snapshot from raw plan steps: normalizes each step, resolves dependencies against completed steps, and partitions the not-done steps into ready, waiting, and blocked buckets along with completion percentage and the next ready step. */
|
|
41
45
|
export function buildPlanExecutionSnapshot(steps) {
|
|
42
46
|
const normalized = steps.map((step, index) => {
|
|
43
47
|
const status = normalizeStatus(step.status);
|
|
@@ -107,6 +111,7 @@ export function buildPlanExecutionSnapshot(steps) {
|
|
|
107
111
|
nextReadyStep: readySteps[0] || null,
|
|
108
112
|
};
|
|
109
113
|
}
|
|
114
|
+
/** Builds a markdown agent brief for a plan, summarizing plan metadata and the ready, waiting, and blocked steps from the execution snapshot, closing with a single execution instruction. */
|
|
110
115
|
export function buildPlanAgentBrief(plan, snapshot) {
|
|
111
116
|
const title = (plan.title || plan.id || '(untitled)').trim();
|
|
112
117
|
const lines = [
|
|
@@ -146,6 +151,7 @@ export function buildPlanAgentBrief(plan, snapshot) {
|
|
|
146
151
|
lines.push('', 'Instruction:', 'Pick the top ready step, execute it end-to-end, and report tests/evidence before moving to the next.');
|
|
147
152
|
return lines.join('\n');
|
|
148
153
|
}
|
|
154
|
+
/** Builds a markdown prompt for executing the next ready step (or the step matching stepRef), including its readiness, satisfied or pending dependencies, and execution requirements; returns a no-ready-step message when none applies. */
|
|
149
155
|
export function buildNextStepPrompt(plan, snapshot, stepRef) {
|
|
150
156
|
const step = stepRef ? snapshot.stepByRef[stepRef] : snapshot.nextReadyStep;
|
|
151
157
|
if (!step) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-execution.js","sourceRoot":"","sources":["plan-execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-execution.js","sourceRoot":"","sources":["plan-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ type PlanInput = {
|
|
|
18
18
|
status?: string;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
/** A normalized plan step carrying its status and dependency refs plus derived readiness, including the done/blocked flags and the lists of dependencies that are missing or still incomplete. */
|
|
21
22
|
export type AnalyzedPlanStep = {
|
|
22
23
|
ref: string;
|
|
23
24
|
title: string;
|
|
@@ -32,6 +33,7 @@ export type AnalyzedPlanStep = {
|
|
|
32
33
|
original: PlanStepInput;
|
|
33
34
|
};
|
|
34
35
|
|
|
36
|
+
/** Aggregated execution state for a plan: step counts, the waiting/ready/blocked/all step lists, a ref-to-step lookup map, completion percentage, and the next ready step (if any). */
|
|
35
37
|
export type PlanExecutionSnapshot = {
|
|
36
38
|
totalSteps: number;
|
|
37
39
|
completedSteps: number;
|
|
@@ -58,6 +60,7 @@ function normalizeStepRef(step: PlanStepInput, index: number): string {
|
|
|
58
60
|
return candidate || `step-${index + 1}`;
|
|
59
61
|
}
|
|
60
62
|
|
|
63
|
+
/** Returns the de-duplicated, trimmed dependency refs declared on a step, accepting either the camelCase or snake_case dependency field. */
|
|
61
64
|
function normalizeDependsOn(step: PlanStepInput): string[] {
|
|
62
65
|
const raw = Array.isArray(step.dependsOn)
|
|
63
66
|
? step.dependsOn
|
|
@@ -74,6 +77,7 @@ function formatStepLine(step: AnalyzedPlanStep): string {
|
|
|
74
77
|
return `- [${step.ref}] ${step.title}`;
|
|
75
78
|
}
|
|
76
79
|
|
|
80
|
+
/** Returns a human-readable reason a step is waiting — joining its incomplete dependencies and unresolved (missing) ones — or the literal "waiting" when there are none. */
|
|
77
81
|
function formatWaitReason(step: AnalyzedPlanStep): string {
|
|
78
82
|
const blockers = [
|
|
79
83
|
...step.incompleteDependencies,
|
|
@@ -83,6 +87,7 @@ function formatWaitReason(step: AnalyzedPlanStep): string {
|
|
|
83
87
|
return `waiting on ${blockers.join(', ')}`;
|
|
84
88
|
}
|
|
85
89
|
|
|
90
|
+
/** Returns the combined list of a step's incomplete dependencies and its unresolved (missing) dependencies, with each missing ref suffixed by " (missing)". */
|
|
86
91
|
function stepDependencyBlockers(step: AnalyzedPlanStep): string[] {
|
|
87
92
|
return [
|
|
88
93
|
...step.incompleteDependencies,
|
|
@@ -90,6 +95,7 @@ function stepDependencyBlockers(step: AnalyzedPlanStep): string[] {
|
|
|
90
95
|
];
|
|
91
96
|
}
|
|
92
97
|
|
|
98
|
+
/** Builds an execution snapshot from raw plan steps: normalizes each step, resolves dependencies against completed steps, and partitions the not-done steps into ready, waiting, and blocked buckets along with completion percentage and the next ready step. */
|
|
93
99
|
export function buildPlanExecutionSnapshot(steps: PlanStepInput[]): PlanExecutionSnapshot {
|
|
94
100
|
const normalized: AnalyzedPlanStep[] = steps.map((step, index) => {
|
|
95
101
|
const status = normalizeStatus(step.status);
|
|
@@ -162,6 +168,7 @@ export function buildPlanExecutionSnapshot(steps: PlanStepInput[]): PlanExecutio
|
|
|
162
168
|
};
|
|
163
169
|
}
|
|
164
170
|
|
|
171
|
+
/** Builds a markdown agent brief for a plan, summarizing plan metadata and the ready, waiting, and blocked steps from the execution snapshot, closing with a single execution instruction. */
|
|
165
172
|
export function buildPlanAgentBrief(plan: PlanInput, snapshot: PlanExecutionSnapshot): string {
|
|
166
173
|
const title = (plan.title || plan.id || '(untitled)').trim();
|
|
167
174
|
const lines: string[] = [
|
|
@@ -213,6 +220,7 @@ export function buildPlanAgentBrief(plan: PlanInput, snapshot: PlanExecutionSnap
|
|
|
213
220
|
return lines.join('\n');
|
|
214
221
|
}
|
|
215
222
|
|
|
223
|
+
/** Builds a markdown prompt for executing the next ready step (or the step matching stepRef), including its readiness, satisfied or pending dependencies, and execution requirements; returns a no-ready-step message when none applies. */
|
|
216
224
|
export function buildNextStepPrompt(
|
|
217
225
|
plan: PlanInput,
|
|
218
226
|
snapshot: PlanExecutionSnapshot,
|