@rasensio/aidlc 1.15.0 → 1.15.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/dist/commands/add-action.d.ts +0 -3
- package/dist/commands/add-action.d.ts.map +1 -1
- package/dist/commands/add-action.js +31 -14
- package/dist/commands/add-action.js.map +1 -1
- package/dist/commands/add-skill.js +7 -3
- package/dist/commands/add-skill.js.map +1 -1
- package/dist/commands/cost.d.ts.map +1 -1
- package/dist/commands/cost.js +37 -1
- package/dist/commands/cost.js.map +1 -1
- package/dist/commands/init.d.ts +16 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +40 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge.js +8 -3
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +10 -8
- package/dist/commands/start.js.map +1 -1
- package/dist/compile/loaders.d.ts.map +1 -1
- package/dist/compile/loaders.js +12 -2
- package/dist/compile/loaders.js.map +1 -1
- package/dist/core/prompt.d.ts +140 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +115 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/cost/agent.d.ts.map +1 -1
- package/dist/cost/agent.js +2 -11
- package/dist/cost/agent.js.map +1 -1
- package/dist/cost/hooks/claude-code.d.ts +17 -1
- package/dist/cost/hooks/claude-code.d.ts.map +1 -1
- package/dist/cost/hooks/claude-code.js +30 -5
- package/dist/cost/hooks/claude-code.js.map +1 -1
- package/dist/cost/hooks/kiro.d.ts.map +1 -1
- package/dist/cost/hooks/kiro.js +42 -26
- package/dist/cost/hooks/kiro.js.map +1 -1
- package/dist/cost/sessions.d.ts +85 -2
- package/dist/cost/sessions.d.ts.map +1 -1
- package/dist/cost/sessions.js +132 -9
- package/dist/cost/sessions.js.map +1 -1
- package/dist/cost/types.d.ts +10 -0
- package/dist/cost/types.d.ts.map +1 -1
- package/dist/cost/types.js.map +1 -1
- package/dist/doctor/migrations/index.d.ts.map +1 -1
- package/dist/doctor/migrations/index.js +8 -0
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/doctor/migrations/outdated-cost-hooks.d.ts +35 -0
- package/dist/doctor/migrations/outdated-cost-hooks.d.ts.map +1 -0
- package/dist/doctor/migrations/outdated-cost-hooks.js +81 -0
- package/dist/doctor/migrations/outdated-cost-hooks.js.map +1 -0
- package/dist/doctor/migrations/trust-run-actions.d.ts +14 -0
- package/dist/doctor/migrations/trust-run-actions.d.ts.map +1 -0
- package/dist/doctor/migrations/trust-run-actions.js +68 -0
- package/dist/doctor/migrations/trust-run-actions.js.map +1 -0
- package/dist/doctor/runner.d.ts.map +1 -1
- package/dist/doctor/runner.js +5 -3
- package/dist/doctor/runner.js.map +1 -1
- package/dist/events/event-bus.d.ts +3 -1
- package/dist/events/event-bus.d.ts.map +1 -1
- package/dist/events/event-bus.js +40 -10
- package/dist/events/event-bus.js.map +1 -1
- package/dist/menu/index.d.ts +5 -2
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +13 -7
- package/dist/menu/index.js.map +1 -1
- package/dist/security/action-trust.d.ts +34 -0
- package/dist/security/action-trust.d.ts.map +1 -0
- package/dist/security/action-trust.js +82 -0
- package/dist/security/action-trust.js.map +1 -0
- package/dist/traceability/gate-criterion.d.ts.map +1 -1
- package/dist/traceability/gate-criterion.js +7 -0
- package/dist/traceability/gate-criterion.js.map +1 -1
- package/package.json +2 -2
- package/dist/menu/prompt.d.ts +0 -74
- package/dist/menu/prompt.d.ts.map +0 -1
- package/dist/menu/prompt.js +0 -69
- package/dist/menu/prompt.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trust-run-actions migration: approve custom `run:` commands from
|
|
3
|
+
* `.aidlc/actions.yaml` that have no machine-local trust record.
|
|
4
|
+
*
|
|
5
|
+
* The event bus declines untrusted `run:` commands (see
|
|
6
|
+
* security/action-trust.ts for the threat model: `actions.yaml` is tracked, so
|
|
7
|
+
* a cloned repo's commands are the repo author's code). This migration is the
|
|
8
|
+
* approval path for commands that arrived by clone, pull, or hand edit —
|
|
9
|
+
* confirm tier, because the whole point is that a human reads the exact
|
|
10
|
+
* command before it ever runs.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { loadActionsConfig } from '../../events/event-bus.js';
|
|
15
|
+
import { isRunCommandTrusted, trustRunCommands } from '../../security/action-trust.js';
|
|
16
|
+
/** Enabled `run:` commands in actions.yaml with no trust record. */
|
|
17
|
+
function untrustedRunCommands(projectRoot) {
|
|
18
|
+
const path = join(projectRoot, '.aidlc', 'actions.yaml');
|
|
19
|
+
if (!existsSync(path))
|
|
20
|
+
return [];
|
|
21
|
+
let config;
|
|
22
|
+
try {
|
|
23
|
+
config = loadActionsConfig(path);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// A malformed actions.yaml is its own error, surfaced where it is read;
|
|
27
|
+
// there is nothing to trust here.
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
if (!config)
|
|
31
|
+
return [];
|
|
32
|
+
const commands = [];
|
|
33
|
+
for (const action of config.actions) {
|
|
34
|
+
if (!action.enabled)
|
|
35
|
+
continue;
|
|
36
|
+
if ('run' in action && typeof action.run === 'string' && action.run) {
|
|
37
|
+
if (!isRunCommandTrusted(projectRoot, action.run)) {
|
|
38
|
+
commands.push(action.run);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return commands;
|
|
43
|
+
}
|
|
44
|
+
export const trustRunActions = {
|
|
45
|
+
id: 'trust-run-actions',
|
|
46
|
+
tier: 'confirm',
|
|
47
|
+
check(ctx) {
|
|
48
|
+
const commands = untrustedRunCommands(ctx.projectRoot);
|
|
49
|
+
if (commands.length === 0)
|
|
50
|
+
return { applicable: true, pending: false };
|
|
51
|
+
return {
|
|
52
|
+
applicable: true,
|
|
53
|
+
pending: true,
|
|
54
|
+
description: `would trust ${commands.length} custom run action(s) from .aidlc/actions.yaml ` +
|
|
55
|
+
'so lifecycle events can execute them on this machine',
|
|
56
|
+
commands,
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
apply(ctx) {
|
|
60
|
+
const commands = untrustedRunCommands(ctx.projectRoot);
|
|
61
|
+
const added = trustRunCommands(ctx.projectRoot, commands);
|
|
62
|
+
return {
|
|
63
|
+
changed: added > 0,
|
|
64
|
+
summary: `trusted ${added} custom run action(s) from .aidlc/actions.yaml`,
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=trust-run-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-run-actions.js","sourceRoot":"","sources":["../../../src/doctor/migrations/trust-run-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvF,oEAAoE;AACpE,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,kCAAkC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,SAAS;QAC9B,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACpE,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAc;IACxC,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,SAAS;IACf,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvE,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,eAAe,QAAQ,CAAC,MAAM,iDAAiD;gBAC/E,sDAAsD;YACxD,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,KAAK,GAAG,CAAC;YAClB,OAAO,EAAE,WAAW,KAAK,gDAAgD;SAC1E,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,SAAS,EAEV,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,SAAS,EAEV,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAcvB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,SAAS,EAAE,EACvB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CAY1B"}
|
package/dist/doctor/runner.js
CHANGED
|
@@ -8,15 +8,17 @@
|
|
|
8
8
|
* blocked → --yes → non-interactive skip → prompt — with an injectable
|
|
9
9
|
* ConfirmFn so tests never touch a TTY.
|
|
10
10
|
*/
|
|
11
|
-
import
|
|
11
|
+
import { defaultPrompter } from '../core/prompt.js';
|
|
12
12
|
const defaultConfirm = async ({ id, description, commands }) => {
|
|
13
13
|
process.stdout.write(`\n${id}: ${description}\n`);
|
|
14
14
|
process.stdout.write('This will run:\n');
|
|
15
15
|
for (const cmd of commands) {
|
|
16
16
|
process.stdout.write(` ${cmd}\n`);
|
|
17
17
|
}
|
|
18
|
-
const confirmed = await
|
|
19
|
-
|
|
18
|
+
const confirmed = await defaultPrompter.confirm({ message: 'Run these commands now?' });
|
|
19
|
+
// `confirmed === true` before: a cancel was a no, and so is `no-tty`. The
|
|
20
|
+
// runner's own decision table still reaches this only in the interactive arm.
|
|
21
|
+
return confirmed.ok && confirmed.value;
|
|
20
22
|
};
|
|
21
23
|
export async function runDoctor(ctx, migrations, opts) {
|
|
22
24
|
const confirm = opts.confirm ?? defaultConfirm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/doctor/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,10 +51,12 @@ export declare function registerBuiltIn(name: string, handler: BuiltInHandler):
|
|
|
51
51
|
*
|
|
52
52
|
* @param event - The lifecycle event payload.
|
|
53
53
|
* @param actions - Parsed actions config (or null if no actions.yaml).
|
|
54
|
-
* @param opts - Options: `dryRun` to skip execution
|
|
54
|
+
* @param opts - Options: `dryRun` to skip execution; `projectRoot` anchors the
|
|
55
|
+
* run-action trust store (defaults to resolving from cwd).
|
|
55
56
|
* @returns A DispatchReport listing what fired and outcomes.
|
|
56
57
|
*/
|
|
57
58
|
export declare function emit(event: EventPayload, actions: ActionsConfig | null, opts?: {
|
|
58
59
|
dryRun?: boolean;
|
|
60
|
+
projectRoot?: string;
|
|
59
61
|
}): DispatchReport;
|
|
60
62
|
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAM1B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM9E;AAkDD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyB3E;AAMD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACxC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA2I1C;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE3E;AAwFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,cAAc,CA6ChB"}
|
package/dist/events/event-bus.js
CHANGED
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
* Requirements: 20.1, 20.9
|
|
11
11
|
*/
|
|
12
12
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
13
|
-
import { join, dirname } from 'node:path';
|
|
14
|
-
import {
|
|
13
|
+
import { join, dirname, resolve, sep } from 'node:path';
|
|
14
|
+
import { execFileSync } from 'node:child_process';
|
|
15
15
|
import { parse } from 'yaml';
|
|
16
16
|
import { coordinationRoot } from '../concurrency/common-dir.js';
|
|
17
|
+
import { isRunCommandTrusted } from '../security/action-trust.js';
|
|
17
18
|
import { findByPromotedTo, isoDate, moveItem } from '../roadmap/paths.js';
|
|
18
19
|
import { runCommand } from './run-command.js';
|
|
19
20
|
import { resolveProjectRoot } from '../core/project-root.js';
|
|
@@ -119,8 +120,15 @@ const builtInHandlers = {
|
|
|
119
120
|
'git-branch': (event, config) => {
|
|
120
121
|
const pattern = config?.pattern ?? 'feature/{instance-name}';
|
|
121
122
|
const branchName = pattern.replace('{instance-name}', event.instance);
|
|
123
|
+
// `pattern` comes from a tracked file (`actions.yaml`), so the resulting
|
|
124
|
+
// name is untrusted: constrain it to a safe git-ref charset and never let
|
|
125
|
+
// it start with `-` (git would read it as an option). Same rule as
|
|
126
|
+
// knowledge/staleness.ts applies to refs.
|
|
127
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(branchName)) {
|
|
128
|
+
return { success: false, error: `git-branch: invalid branch name ${JSON.stringify(branchName)}` };
|
|
129
|
+
}
|
|
122
130
|
try {
|
|
123
|
-
|
|
131
|
+
execFileSync('git', ['checkout', '-b', branchName], { stdio: 'pipe' });
|
|
124
132
|
return { success: true };
|
|
125
133
|
}
|
|
126
134
|
catch (err) {
|
|
@@ -133,9 +141,10 @@ const builtInHandlers = {
|
|
|
133
141
|
'github-issue': (event, config) => {
|
|
134
142
|
const title = config?.title ?? `[${event.template}] ${event.instance}`;
|
|
135
143
|
try {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
144
|
+
// Argument-array form: `title` and `instance` flow from tracked files
|
|
145
|
+
// (`actions.yaml`, templates), so they must reach `gh` as literal
|
|
146
|
+
// arguments, never through a shell string.
|
|
147
|
+
execFileSync('gh', ['issue', 'create', '--title', title, '--body', `Lifecycle instance: ${event.instance}`], { stdio: 'pipe' });
|
|
139
148
|
return { success: true };
|
|
140
149
|
}
|
|
141
150
|
catch (err) {
|
|
@@ -216,8 +225,16 @@ const builtInHandlers = {
|
|
|
216
225
|
}
|
|
217
226
|
const entry = `- [${event.instance}] Phase: ${event.phase ?? 'n/a'} (${event.event})\n`;
|
|
218
227
|
try {
|
|
228
|
+
// `file` comes from a tracked file (`actions.yaml`): contain the write to
|
|
229
|
+
// the project. Without this, a cloned repo could append to shell
|
|
230
|
+
// profiles, cron files, or anything else the user can write.
|
|
231
|
+
const projectRoot = resolveProjectRoot();
|
|
232
|
+
const target = resolve(projectRoot, file);
|
|
233
|
+
if (target !== projectRoot && !target.startsWith(projectRoot + sep)) {
|
|
234
|
+
return { success: false, error: `doc-update: file escapes the project root: ${JSON.stringify(file)}` };
|
|
235
|
+
}
|
|
219
236
|
const { appendFileSync } = require('node:fs');
|
|
220
|
-
appendFileSync(
|
|
237
|
+
appendFileSync(target, entry, 'utf8');
|
|
221
238
|
return { success: true };
|
|
222
239
|
}
|
|
223
240
|
catch (err) {
|
|
@@ -269,7 +286,7 @@ function buildEnvVars(event) {
|
|
|
269
286
|
* Execute a single action (built-in or custom).
|
|
270
287
|
* Returns `{ success, error? }`.
|
|
271
288
|
*/
|
|
272
|
-
function executeAction(action, event) {
|
|
289
|
+
function executeAction(action, event, projectRoot) {
|
|
273
290
|
if ('use' in action && action.use) {
|
|
274
291
|
// Built-in action
|
|
275
292
|
const handler = builtInHandlers[action.use];
|
|
@@ -279,6 +296,18 @@ function executeAction(action, event) {
|
|
|
279
296
|
return handler(event, action.with);
|
|
280
297
|
}
|
|
281
298
|
if ('run' in action && action.run) {
|
|
299
|
+
// Trust gate: `actions.yaml` is a tracked file, so a `run:` command in a
|
|
300
|
+
// cloned repo is the repo author's code, not the user's. It only executes
|
|
301
|
+
// after a machine-local approval — recorded by `aidlc add action` at
|
|
302
|
+
// authoring time or by the `trust-run-actions` doctor migration.
|
|
303
|
+
const root = projectRoot ?? resolveProjectRoot();
|
|
304
|
+
if (!isRunCommandTrusted(root, action.run)) {
|
|
305
|
+
return {
|
|
306
|
+
success: false,
|
|
307
|
+
error: `command ${JSON.stringify(action.run)} is not trusted on this machine — ` +
|
|
308
|
+
'review .aidlc/actions.yaml, then run `aidlc doctor` to approve it',
|
|
309
|
+
};
|
|
310
|
+
}
|
|
282
311
|
// Custom shell command. The verdict is the child's exit status, not whether
|
|
283
312
|
// the parent managed to write the stdin payload — see events/run-command.ts.
|
|
284
313
|
const result = runCommand(action.run, {
|
|
@@ -307,7 +336,8 @@ function executeAction(action, event) {
|
|
|
307
336
|
*
|
|
308
337
|
* @param event - The lifecycle event payload.
|
|
309
338
|
* @param actions - Parsed actions config (or null if no actions.yaml).
|
|
310
|
-
* @param opts - Options: `dryRun` to skip execution
|
|
339
|
+
* @param opts - Options: `dryRun` to skip execution; `projectRoot` anchors the
|
|
340
|
+
* run-action trust store (defaults to resolving from cwd).
|
|
311
341
|
* @returns A DispatchReport listing what fired and outcomes.
|
|
312
342
|
*/
|
|
313
343
|
export function emit(event, actions, opts) {
|
|
@@ -327,7 +357,7 @@ export function emit(event, actions, opts) {
|
|
|
327
357
|
}
|
|
328
358
|
// Execute matched actions
|
|
329
359
|
for (const action of matched) {
|
|
330
|
-
const result = executeAction(action, event);
|
|
360
|
+
const result = executeAction(action, event, opts?.projectRoot);
|
|
331
361
|
report.fired.push({
|
|
332
362
|
id: action.id,
|
|
333
363
|
success: result.success,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"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"}
|
package/dist/menu/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
17
|
import type { Command } from 'commander';
|
|
18
|
-
import { type
|
|
18
|
+
import { type Prompter } from '../core/prompt.js';
|
|
19
19
|
import { type MenuEntry } from './roster.js';
|
|
20
20
|
/** Which entry point asked for the menu; selects the non-interactive fallback. */
|
|
21
21
|
export type MenuMode = 'bare' | 'menu';
|
|
@@ -46,6 +46,9 @@ export declare function writeNonInteractiveFallback(program: Command, mode: Menu
|
|
|
46
46
|
* @param makeProgram Factory for a fully-registered program. A factory rather
|
|
47
47
|
* than an instance because `runEntry` dispatches on a throwaway copy, leaving
|
|
48
48
|
* the caller's program free of an `exitOverride` it could not undo.
|
|
49
|
+
* @param deps The prompt seam. Was a menu-local `MenuDeps`; it is now
|
|
50
|
+
* `core/prompt.ts`'s `Prompter`, shared with every other prompt-bearing
|
|
51
|
+
* command (single-clack-prompt-seam/AC-4).
|
|
49
52
|
*/
|
|
50
|
-
export declare function openMenu(makeProgram: () => Command, mode?: MenuMode, deps?:
|
|
53
|
+
export declare function openMenu(makeProgram: () => Command, mode?: MenuMode, deps?: Prompter): Promise<void>;
|
|
51
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/menu/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,kFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAEpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CASlF;AAgBD;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,OAAO,EAC1B,IAAI,GAAE,QAAiB,EACvB,IAAI,GAAE,QAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
package/dist/menu/index.js
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
|
+
import { defaultPrompter, requireNonEmpty, } from '../core/prompt.js';
|
|
17
18
|
import { buildArgv, runEntry } from './dispatch.js';
|
|
18
|
-
import { CANCEL, defaultDeps, requireNonEmpty, } from './prompt.js';
|
|
19
19
|
import { hintFor, requiredArgs, resolveEntry } from './resolve.js';
|
|
20
20
|
import { ROSTER } from './roster.js';
|
|
21
21
|
/**
|
|
@@ -68,8 +68,11 @@ function optionsFor(program) {
|
|
|
68
68
|
* @param makeProgram Factory for a fully-registered program. A factory rather
|
|
69
69
|
* than an instance because `runEntry` dispatches on a throwaway copy, leaving
|
|
70
70
|
* the caller's program free of an `exitOverride` it could not undo.
|
|
71
|
+
* @param deps The prompt seam. Was a menu-local `MenuDeps`; it is now
|
|
72
|
+
* `core/prompt.ts`'s `Prompter`, shared with every other prompt-bearing
|
|
73
|
+
* command (single-clack-prompt-seam/AC-4).
|
|
71
74
|
*/
|
|
72
|
-
export async function openMenu(makeProgram, mode = 'bare', deps =
|
|
75
|
+
export async function openMenu(makeProgram, mode = 'bare', deps = defaultPrompter) {
|
|
73
76
|
const program = makeProgram();
|
|
74
77
|
if (!deps.interactive()) {
|
|
75
78
|
writeNonInteractiveFallback(program, mode);
|
|
@@ -80,11 +83,11 @@ export async function openMenu(makeProgram, mode = 'bare', deps = defaultDeps) {
|
|
|
80
83
|
message: 'What do you want to do?',
|
|
81
84
|
options: optionsFor(program),
|
|
82
85
|
});
|
|
83
|
-
if (choice
|
|
86
|
+
if (!choice.ok) {
|
|
84
87
|
deps.outro('cancelled');
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
87
|
-
const entry = ROSTER[Number(choice)];
|
|
90
|
+
const entry = ROSTER[Number(choice.value)];
|
|
88
91
|
if (!entry) {
|
|
89
92
|
deps.outro('cancelled');
|
|
90
93
|
return;
|
|
@@ -100,12 +103,15 @@ export async function openMenu(makeProgram, mode = 'bare', deps = defaultDeps) {
|
|
|
100
103
|
validate: requireNonEmpty(arg.name()),
|
|
101
104
|
});
|
|
102
105
|
// Cancel at any depth returns before dispatch, so there is no partial
|
|
103
|
-
// side effect to unwind: nothing has run yet (AC-26).
|
|
104
|
-
|
|
106
|
+
// side effect to unwind: nothing has run yet (AC-26). `no-tty` cannot
|
|
107
|
+
// reach here — `deps.interactive()` already returned above — but it is
|
|
108
|
+
// handled by the same branch, so a future reordering degrades to a clean
|
|
109
|
+
// exit rather than a hang.
|
|
110
|
+
if (!value.ok) {
|
|
105
111
|
deps.outro('cancelled');
|
|
106
112
|
return;
|
|
107
113
|
}
|
|
108
|
-
values.push(value);
|
|
114
|
+
values.push(value.value);
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
// Close this clack session BEFORE dispatching: `aidlc init` opens its own
|
package/dist/menu/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust store for custom `run:` actions in `.aidlc/actions.yaml`.
|
|
3
|
+
*
|
|
4
|
+
* `actions.yaml` is a tracked file, so in a cloned repository its contents are
|
|
5
|
+
* whatever the repo author committed — including `run:` shell commands that the
|
|
6
|
+
* event bus executes on ordinary lifecycle commands (`aidlc start`,
|
|
7
|
+
* `aidlc transition`). Executing them without a machine-local trust decision
|
|
8
|
+
* turns "clone and run aidlc" into arbitrary code execution.
|
|
9
|
+
*
|
|
10
|
+
* The store records SHA-256 hashes of the exact command strings the user has
|
|
11
|
+
* approved, keyed per machine, never inside the tracked tree:
|
|
12
|
+
*
|
|
13
|
+
* - In a git repo it lives under the coordination root (`<git-common-dir>/
|
|
14
|
+
* aidlc/`), which a repository author cannot pre-populate via commit.
|
|
15
|
+
* - Outside a git repo it falls back to `.aidlc/trusted-run-actions.local.json`.
|
|
16
|
+
* There is no clone vector without git, so the weaker location is acceptable;
|
|
17
|
+
* the file is suffixed `.local` to signal it must not be committed.
|
|
18
|
+
*
|
|
19
|
+
* Approval flows: `aidlc add action` records the hash at authoring time (the
|
|
20
|
+
* user just confirmed the exact command), and the `trust-run-actions` doctor
|
|
21
|
+
* migration (confirm tier) shows and approves commands that arrived by other
|
|
22
|
+
* means — a clone, a pull, a hand edit.
|
|
23
|
+
*/
|
|
24
|
+
/** SHA-256 hex digest of a `run:` command string. */
|
|
25
|
+
export declare function runActionHash(command: string): string;
|
|
26
|
+
/** Machine-local path of the trust store for a project. */
|
|
27
|
+
export declare function trustStorePath(projectRoot: string): string;
|
|
28
|
+
/** Has this exact command string been approved on this machine? */
|
|
29
|
+
export declare function isRunCommandTrusted(projectRoot: string, command: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Record approval for command strings. Returns how many were newly added.
|
|
32
|
+
*/
|
|
33
|
+
export declare function trustRunCommands(projectRoot: string, commands: string[]): number;
|
|
34
|
+
//# sourceMappingURL=action-trust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-trust.d.ts","sourceRoot":"","sources":["../../src/security/action-trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAaH,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM1D;AAmBD,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGjF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBhF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trust store for custom `run:` actions in `.aidlc/actions.yaml`.
|
|
3
|
+
*
|
|
4
|
+
* `actions.yaml` is a tracked file, so in a cloned repository its contents are
|
|
5
|
+
* whatever the repo author committed — including `run:` shell commands that the
|
|
6
|
+
* event bus executes on ordinary lifecycle commands (`aidlc start`,
|
|
7
|
+
* `aidlc transition`). Executing them without a machine-local trust decision
|
|
8
|
+
* turns "clone and run aidlc" into arbitrary code execution.
|
|
9
|
+
*
|
|
10
|
+
* The store records SHA-256 hashes of the exact command strings the user has
|
|
11
|
+
* approved, keyed per machine, never inside the tracked tree:
|
|
12
|
+
*
|
|
13
|
+
* - In a git repo it lives under the coordination root (`<git-common-dir>/
|
|
14
|
+
* aidlc/`), which a repository author cannot pre-populate via commit.
|
|
15
|
+
* - Outside a git repo it falls back to `.aidlc/trusted-run-actions.local.json`.
|
|
16
|
+
* There is no clone vector without git, so the weaker location is acceptable;
|
|
17
|
+
* the file is suffixed `.local` to signal it must not be committed.
|
|
18
|
+
*
|
|
19
|
+
* Approval flows: `aidlc add action` records the hash at authoring time (the
|
|
20
|
+
* user just confirmed the exact command), and the `trust-run-actions` doctor
|
|
21
|
+
* migration (confirm tier) shows and approves commands that arrived by other
|
|
22
|
+
* means — a clone, a pull, a hand edit.
|
|
23
|
+
*/
|
|
24
|
+
import { createHash } from 'node:crypto';
|
|
25
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
26
|
+
import { dirname, join } from 'node:path';
|
|
27
|
+
import { coordinationRoot } from '../concurrency/common-dir.js';
|
|
28
|
+
/** SHA-256 hex digest of a `run:` command string. */
|
|
29
|
+
export function runActionHash(command) {
|
|
30
|
+
return createHash('sha256').update(command, 'utf8').digest('hex');
|
|
31
|
+
}
|
|
32
|
+
/** Machine-local path of the trust store for a project. */
|
|
33
|
+
export function trustStorePath(projectRoot) {
|
|
34
|
+
const root = coordinationRoot(projectRoot);
|
|
35
|
+
if (root !== null) {
|
|
36
|
+
return join(root, 'trusted-run-actions.json');
|
|
37
|
+
}
|
|
38
|
+
return join(projectRoot, '.aidlc', 'trusted-run-actions.local.json');
|
|
39
|
+
}
|
|
40
|
+
function readStore(projectRoot) {
|
|
41
|
+
const path = trustStorePath(projectRoot);
|
|
42
|
+
if (!existsSync(path)) {
|
|
43
|
+
return { version: 1, hashes: {} };
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const data = JSON.parse(readFileSync(path, 'utf8'));
|
|
47
|
+
if (data == null || typeof data !== 'object' || data.hashes == null) {
|
|
48
|
+
return { version: 1, hashes: {} };
|
|
49
|
+
}
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// An unreadable store is an empty store: fail toward "not trusted".
|
|
54
|
+
return { version: 1, hashes: {} };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Has this exact command string been approved on this machine? */
|
|
58
|
+
export function isRunCommandTrusted(projectRoot, command) {
|
|
59
|
+
const store = readStore(projectRoot);
|
|
60
|
+
return Object.prototype.hasOwnProperty.call(store.hashes, runActionHash(command));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Record approval for command strings. Returns how many were newly added.
|
|
64
|
+
*/
|
|
65
|
+
export function trustRunCommands(projectRoot, commands) {
|
|
66
|
+
const store = readStore(projectRoot);
|
|
67
|
+
let added = 0;
|
|
68
|
+
for (const command of commands) {
|
|
69
|
+
const hash = runActionHash(command);
|
|
70
|
+
if (!Object.prototype.hasOwnProperty.call(store.hashes, hash)) {
|
|
71
|
+
store.hashes[hash] = { trustedAt: new Date().toISOString() };
|
|
72
|
+
added += 1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (added > 0) {
|
|
76
|
+
const path = trustStorePath(projectRoot);
|
|
77
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
78
|
+
writeFileSync(path, `${JSON.stringify(store, null, 2)}\n`, 'utf8');
|
|
79
|
+
}
|
|
80
|
+
return added;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=action-trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-trust.js","sourceRoot":"","sources":["../../src/security/action-trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-criterion.d.ts","sourceRoot":"","sources":["../../src/traceability/gate-criterion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAW7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"gate-criterion.d.ts","sourceRoot":"","sources":["../../src/traceability/gate-criterion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAW7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAiCnF;AAqBD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAarF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAkBjF;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CA2E3B"}
|
|
@@ -53,6 +53,13 @@ export function coverageSources(projectRoot, instanceName) {
|
|
|
53
53
|
const resolved = resolveTemplate(raw, all);
|
|
54
54
|
const testingPhase = resolved.phases.find((p) => p.name === 'testing');
|
|
55
55
|
for (const artifact of testingPhase?.required_artifacts ?? []) {
|
|
56
|
+
// Artifact names come from templates, including project-local ones
|
|
57
|
+
// under `.aidlc/templates/` — a tracked, therefore untrusted,
|
|
58
|
+
// directory. They are joined onto the instance dir and read, so a
|
|
59
|
+
// name with a separator or `..` would be a traversal read primitive.
|
|
60
|
+
if (artifact.name.includes('/') || artifact.name.includes('\\') || artifact.name.includes('..')) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
56
63
|
if (!sources.includes(artifact.name))
|
|
57
64
|
sources.push(artifact.name);
|
|
58
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-criterion.js","sourceRoot":"","sources":["../../src/traceability/gate-criterion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gate-criterion.js","sourceRoot":"","sources":["../../src/traceability/gate-criterion.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rasensio/aidlc",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.2",
|
|
4
4
|
"description": "AI Development Lifecycle Framework — structured lifecycle guidance for AI coding agents across platforms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"commander": "15.0.0",
|
|
25
25
|
"picomatch": "4.0.5",
|
|
26
26
|
"yaml": "2.9.0",
|
|
27
|
-
"@rasensio/aidlc-content": "1.15.
|
|
27
|
+
"@rasensio/aidlc-content": "1.15.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "22.15.32",
|