@aiwg/cli 2026.10.5 → 2026.10.6
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/agentic/code/addons/composition-engine/lib/runtime.mjs +1401 -0
- package/agentic/code/addons/composition-engine/lib/validator.mjs +513 -0
- package/agentic/code/addons/composition-engine/schemas/flow-graph.schema.json +372 -0
- package/agentic/code/providers/model-capabilities.v1.json +74 -50
- package/bin/aiwg.mjs +3 -1
- package/dist/src/artifacts/browser-export.js +1 -0
- package/dist/src/artifacts/citation-parser.js +8 -1
- package/dist/src/artifacts/cli.js +57 -6
- package/dist/src/artifacts/fortemi-core-query-adapter.js +2 -0
- package/dist/src/artifacts/fortemi-core-sync.js +26 -8
- package/dist/src/artifacts/graph-query.js +18 -8
- package/dist/src/artifacts/index-adapters.js +339 -0
- package/dist/src/artifacts/index-builder.js +143 -14
- package/dist/src/artifacts/index-files.js +15 -4
- package/dist/src/artifacts/index-reader.js +44 -0
- package/dist/src/artifacts/index-refresh.js +114 -55
- package/dist/src/artifacts/index-status.js +20 -5
- package/dist/src/artifacts/memory-maintenance.js +503 -0
- package/dist/src/artifacts/prebuilt-relations.js +3 -1
- package/dist/src/artifacts/query-engine.js +263 -108
- package/dist/src/artifacts/relations-builder.js +2 -2
- package/dist/src/artifacts/source-graph.js +2 -2
- package/dist/src/artifacts/types.js +9 -1
- package/dist/src/cli/handlers/decision.js +19 -1
- package/dist/src/cli/handlers/guided-setup.js +470 -0
- package/dist/src/cli/handlers/help.js +2 -2
- package/dist/src/cli/handlers/housekeeper.js +1110 -0
- package/dist/src/cli/handlers/index.js +4 -2
- package/dist/src/cli/handlers/init.js +41 -6
- package/dist/src/cli/handlers/local-executor.js +5 -3
- package/dist/src/cli/handlers/mc.js +509 -53
- package/dist/src/cli/handlers/models.js +32 -2
- package/dist/src/cli/handlers/ralph-launcher.js +76 -4
- package/dist/src/cli/handlers/rules.js +1 -1
- package/dist/src/cli/handlers/script-runner.js +73 -2
- package/dist/src/cli/handlers/serve.js +5 -3
- package/dist/src/cli/handlers/sessions.js +1 -0
- package/dist/src/cli/handlers/setup.js +428 -1
- package/dist/src/cli/handlers/skill-lint.js +1 -1
- package/dist/src/cli/handlers/subcommands.js +118 -8
- package/dist/src/cli/handlers/use.js +279 -93
- package/dist/src/cli/handlers/workspace.js +3 -1
- package/dist/src/cli/prompt-utils.js +8 -0
- package/dist/src/cli/router.js +16 -1
- package/dist/src/config/aiwg-config.js +42 -0
- package/dist/src/config/cli.js +7 -3
- package/dist/src/config/decision-config.js +14 -1
- package/dist/src/config/native-sandbox-warnings.js +25 -0
- package/dist/src/contributors/validation.js +6 -5
- package/dist/src/decision/admission.js +7 -3
- package/dist/src/decision/benchmark.js +469 -0
- package/dist/src/decision/ledger.js +22 -3
- package/dist/src/decision/pricing.js +147 -0
- package/dist/src/decision/qualification/gate-evidence.js +18 -15
- package/dist/src/decision/qualification/load-staged.js +539 -0
- package/dist/src/decision/qualification/load.js +109 -33
- package/dist/src/decision/qualification/runner.js +5 -2
- package/dist/src/decision/review/service.js +6 -4
- package/dist/src/decision/review/validate.js +23 -2
- package/dist/src/decision/savings.js +8 -3
- package/dist/src/discovery/index.js +492 -0
- package/dist/src/discovery/interview.js +233 -0
- package/dist/src/discovery/plan-apply.js +571 -0
- package/dist/src/discovery/plan-store.js +171 -0
- package/dist/src/discovery/plan-types.js +2 -0
- package/dist/src/discovery/plan-validation.js +139 -0
- package/dist/src/discovery/types.js +2 -0
- package/dist/src/extensions/commands/definitions.js +49 -9
- package/dist/src/extensions/manifest.js +71 -44
- package/dist/src/extensions/project-local-discovery.js +1 -1
- package/dist/src/extensions/project-quickref.js +18 -17
- package/dist/src/extensions/validation.js +32 -29
- package/dist/src/housekeeper/daemon-config.js +148 -0
- package/dist/src/housekeeper/ipc.js +84 -0
- package/dist/src/housekeeper/lifecycle.js +148 -0
- package/dist/src/housekeeper/platform.js +35 -0
- package/dist/src/housekeeper/status.js +70 -0
- package/dist/src/housekeeper/units.js +114 -0
- package/dist/src/jobs/flow.js +22 -21
- package/dist/src/lint/rule-activation.js +20 -5
- package/dist/src/lint/runner.js +1 -1
- package/dist/src/mcp/cli.mjs +5 -6
- package/dist/src/mcp/config-file.mjs +6 -2
- package/dist/src/mcp/config-layers.mjs +23 -7
- package/dist/src/mcp/profiles.js +18 -31
- package/dist/src/mcp/profiles.mjs +18 -32
- package/dist/src/mcp/registry.js +7 -27
- package/dist/src/mcp/registry.mjs +7 -28
- package/dist/src/mcp/server.mjs +34 -1
- package/dist/src/mcp/tools/agentic-sandbox.mjs +8 -7
- package/dist/src/mcp/tools/command-run.mjs +3 -2
- package/dist/src/mcp/tools/decision.mjs +49 -48
- package/dist/src/mcp/tools/discovery.mjs +46 -21
- package/dist/src/mcp/tools/orchestration.mjs +22 -22
- package/dist/src/mcp/tools/subsystems.mjs +9 -8
- package/dist/src/mcp/tools/worker-invoke.mjs +17 -4
- package/dist/src/mcp/tools/writer-profiles.mjs +1 -1
- package/dist/src/memory/audit.js +719 -0
- package/dist/src/memory/canonical-context.js +392 -13
- package/dist/src/memory/canonical-maintenance.js +95 -0
- package/dist/src/memory/cli-result.js +22 -0
- package/dist/src/memory/cli.js +176 -0
- package/dist/src/memory/context-pack.js +57 -6
- package/dist/src/memory/cost.js +512 -0
- package/dist/src/memory/firewall-classification.d.mts +7 -0
- package/dist/src/memory/firewall-classification.mjs +32 -0
- package/dist/src/memory/index.js +8 -0
- package/dist/src/memory/line-maintenance.js +68 -0
- package/dist/src/memory/maintenance-cli.js +286 -0
- package/dist/src/memory/maintenance-contract.js +136 -0
- package/dist/src/memory/maintenance-index.js +18 -0
- package/dist/src/memory/maintenance-owner.js +2 -0
- package/dist/src/memory/maintenance-record.js +138 -0
- package/dist/src/memory/maintenance.js +254 -0
- package/dist/src/memory/provider-memory-adapter.js +154 -0
- package/dist/src/memory/recommend-cli.js +83 -0
- package/dist/src/memory/recommend.js +269 -0
- package/dist/src/memory/scheduled.js +81 -0
- package/dist/src/memory/taxonomy.js +44 -0
- package/dist/src/mission-protocol/codecs.js +19 -9
- package/dist/src/models/config-loader.js +11 -1
- package/dist/src/models/model-capabilities.v1.json +74 -50
- package/dist/src/models/provider-policy.js +125 -62
- package/dist/src/models/resolver.js +45 -8
- package/dist/src/models/worker-installation.d.mts +7 -0
- package/dist/src/models/worker-installation.mjs +169 -37
- package/dist/src/models/wrapper-route.js +1 -1
- package/dist/src/output-modes/registry.js +8 -7
- package/dist/src/plugin/metadata-validator.js +1 -1
- package/dist/src/providers/deploy-version.d.mts +1 -0
- package/dist/src/providers/deploy-version.mjs +17 -0
- package/dist/src/providers/provider-definitions.js +19 -16
- package/dist/src/providers/skill-ownership.d.mts +11 -2
- package/dist/src/providers/skill-ownership.mjs +35 -17
- package/dist/src/rules/activation.d.mts +11 -2
- package/dist/src/rules/activation.mjs +82 -6
- package/dist/src/rules/inventory.js +1 -1
- package/dist/src/rules/rule-frontmatter.schema.json +2 -0
- package/dist/src/schema/zod-validation.d.mts +6 -0
- package/dist/src/schema/zod-validation.mjs +50 -0
- package/dist/src/serve/executor-registry.js +297 -20
- package/dist/src/serve/executor-token.d.mts +1 -0
- package/dist/src/serve/executor-token.mjs +8 -0
- package/dist/src/serve/shared-host-scheduler.js +1102 -31
- package/dist/src/serve/worker-invocation.js +114 -15
- package/dist/src/sessions/adapters/claude.js +19 -18
- package/dist/src/sessions/adapters/codex.js +10 -9
- package/dist/src/sessions/adapters/copilot.js +14 -13
- package/dist/src/sessions/adapters/cursor.js +19 -18
- package/dist/src/sessions/adapters/deepseek-harness.js +9 -8
- package/dist/src/sessions/adapters/factory.js +11 -10
- package/dist/src/sessions/adapters/generic.js +32 -23
- package/dist/src/sessions/adapters/grokbot.js +35 -35
- package/dist/src/sessions/adapters/hermes.js +20 -19
- package/dist/src/sessions/adapters/muse.js +50 -49
- package/dist/src/sessions/adapters/omp.js +5 -4
- package/dist/src/sessions/adapters/openclaw.js +30 -29
- package/dist/src/sessions/adapters/opencode.js +26 -26
- package/dist/src/sessions/adapters/openhuman.js +24 -23
- package/dist/src/sessions/adapters/pi.js +5 -4
- package/dist/src/sessions/adapters/windsurf.js +8 -8
- package/dist/src/sessions/analytics.js +10 -9
- package/dist/src/sessions/candidates.js +7 -6
- package/dist/src/sessions/contracts.js +63 -53
- package/dist/src/sessions/output-registration.js +11 -10
- package/dist/src/sessions/workspace-discovery.js +3 -4
- package/dist/src/smiths/context-pipeline/aiwg-md.js +18 -1
- package/dist/src/smiths/context-pipeline/claude-hook.js +42 -6
- package/dist/src/smiths/context-pipeline/parallelism-section.js +72 -5
- package/dist/src/smiths/context-pipeline/workspace-context.js +106 -10
- package/dist/src/update/checker.d.mts +4 -0
- package/dist/src/update/checker.mjs +14 -0
- package/dist/src/writing/exemplar-selection.js +6 -6
- package/dist/src/writing/voice-evaluation.js +24 -23
- package/dist/src/writing/writer-migration.js +14 -13
- package/dist/src/writing/writer-profile.js +19 -18
- package/dist/src/writing/writing-brief.js +18 -17
- package/dist/src/writing/writing-receipt.js +47 -46
- package/package.json +5 -2
- package/schemas/decision/DecisionReview.schema.json +78 -1
- package/schemas/mission-v1.schema.json +3 -0
- package/tools/agents/deploy-agents.mjs +67 -39
- package/tools/agents/providers/antigravity.mjs +6 -1
- package/tools/agents/providers/base.mjs +19 -13
- package/tools/agents/providers/claude.mjs +1 -1
- package/tools/agents/providers/codex.mjs +50 -56
- package/tools/agents/providers/copilot.mjs +8 -2
- package/tools/agents/providers/cursor.mjs +1 -1
- package/tools/agents/providers/deepseek-harness.mjs +1 -1
- package/tools/agents/providers/factory.mjs +7 -1
- package/tools/agents/providers/grok-build.mjs +18 -2
- package/tools/agents/providers/grokbot.mjs +1 -1
- package/tools/agents/providers/hermes.mjs +7 -13
- package/tools/agents/providers/muse-hooks.mjs +21 -14
- package/tools/agents/providers/muse.mjs +7 -2
- package/tools/agents/providers/omp.mjs +28 -4
- package/tools/agents/providers/opencode.mjs +14 -5
- package/tools/agents/providers/openhuman.mjs +1 -1
- package/tools/agents/providers/pi.mjs +1 -1
- package/tools/agents/providers/provider-prepare-coordinator.mjs +29 -9
- package/tools/agents/providers/rule-delivery.mjs +263 -71
- package/tools/agents/providers/windsurf.mjs +7 -0
- package/tools/cli/workspace-status.mjs +5 -0
- package/tools/commands/deploy-prompts-codex.mjs +11 -8
- package/tools/ralph-external/lib/codex-adapter.mjs +6 -2
- package/tools/ralph-external/lib/muse-adapter.mjs +12 -2
- package/tools/ralph-external/lib/worker-health.mjs +1 -1
- package/tools/ralph-external/lib/worker-isolation.mjs +65 -9
- package/tools/ralph-external/process-monitor.mjs +7 -4
- package/tools/ralph-external/session-launcher.mjs +280 -32
- package/tools/skills/deploy-skills-codex.mjs +11 -7
- package/vscode-extension/schemas/aiwg.config.v1.json +11 -1
|
@@ -20,6 +20,7 @@ import { prefillCardsHandler, contributeStartHandler, validateMetadataHandler, d
|
|
|
20
20
|
import { skillLintHandler } from './skill-lint.js';
|
|
21
21
|
import { addAgentHandler, addCommandHandler, addSkillHandler, addBehaviorHandler, addTemplateHandler, scaffoldAddonHandler, scaffoldExtensionHandler, scaffoldFrameworkHandler, scaffoldingHandlers, } from './scaffolding.js';
|
|
22
22
|
import { behaviorHandler, daemonInitHandler, daemonHandlers, } from './daemon.js';
|
|
23
|
+
import { housekeeperHandler, housekeeperHandlers, } from './housekeeper.js';
|
|
23
24
|
import { ralphHandler, ralphStatusHandler, ralphAbortHandler, ralphResumeHandler, ralphAttachHandler, ralphExternalHandler, ralphMemoryHandler, ralphConfigHandler, ralphHandlers, } from './ralph.js';
|
|
24
25
|
import { mcpHandler, catalogHandler, listHandler, removeHandler, promoteHandler, newBundleHandler, quickrefHandler, newProjectHandler, installPluginHandler, uninstallPluginHandler, pluginStatusHandler, packagePluginHandler, packageAllPluginsHandler, indexHandler, corpusHandler, discoverHandler, showHandler, featuresHandler, skillsHandler, configHandler, opsHandler, storageHandler, activityLogHandler, kbHandler, memoryHandler, reflectionsHandler, provenanceHandler, researchStoreHandler, researchQueryHandler, chunkHandler, fanoutHandler, rlmPrepHandler, rlmSearchHandler, rlmStatusCliHandler, rlmCacheHandler, subcommandHandlers, } from './subcommands.js';
|
|
25
26
|
import { runtimeInfoHandler } from './runtime-info.js';
|
|
@@ -97,7 +98,7 @@ installPluginHandler, uninstallPluginHandler, pluginStatusHandler, packagePlugin
|
|
|
97
98
|
// Scaffolding
|
|
98
99
|
addAgentHandler, addCommandHandler, addSkillHandler, addBehaviorHandler, addTemplateHandler, scaffoldAddonHandler, scaffoldExtensionHandler, scaffoldFrameworkHandler,
|
|
99
100
|
// Daemon
|
|
100
|
-
behaviorHandler, daemonInitHandler,
|
|
101
|
+
behaviorHandler, daemonInitHandler, housekeeperHandler,
|
|
101
102
|
// Ralph
|
|
102
103
|
ralphHandler, ralphStatusHandler, ralphAbortHandler, ralphResumeHandler, ralphAttachHandler, ralphExternalHandler, ralphMemoryHandler, ralphConfigHandler,
|
|
103
104
|
// Mission Control
|
|
@@ -123,7 +124,7 @@ repoAccessHandler,
|
|
|
123
124
|
// Lint
|
|
124
125
|
lintHandler, };
|
|
125
126
|
// Re-export handler arrays
|
|
126
|
-
export { workspaceHandlers, utilityHandlers, scaffoldingHandlers, ralphHandlers, subcommandHandlers, mcHandlers, missionHandlers, teamHandlers, stewardHandlers, regenerateHandlers, workspaceContextHandlers, artifactsHandlers, effectHandlers, daemonHandlers, sandboxHandlers, repoAccessHandlers, };
|
|
127
|
+
export { workspaceHandlers, utilityHandlers, scaffoldingHandlers, housekeeperHandlers, ralphHandlers, subcommandHandlers, mcHandlers, missionHandlers, teamHandlers, stewardHandlers, regenerateHandlers, workspaceContextHandlers, artifactsHandlers, effectHandlers, daemonHandlers, sandboxHandlers, repoAccessHandlers, };
|
|
127
128
|
/**
|
|
128
129
|
* All registered command handlers
|
|
129
130
|
*
|
|
@@ -222,6 +223,7 @@ export const allHandlers = [
|
|
|
222
223
|
bestPracticesAuditHandler,
|
|
223
224
|
// Daemon
|
|
224
225
|
...daemonHandlers,
|
|
226
|
+
...housekeeperHandlers,
|
|
225
227
|
// Config
|
|
226
228
|
configHandler,
|
|
227
229
|
executionModeHandler,
|
|
@@ -35,7 +35,10 @@ import { ensureWorkspaceContext } from '../../smiths/context-pipeline/workspace-
|
|
|
35
35
|
import { detectInstalledWorkerClis, evaluateWorkerDispatchOffer, workerDispatchOfferQuestion, workerDispatchOfferHintWithArg, parseWorkerDispatchArg, } from '../../models/worker-dispatch-offer.js';
|
|
36
36
|
import { EXIT_CODES } from '../errors.js';
|
|
37
37
|
import { isInteractive } from '../env.js';
|
|
38
|
+
import { parseGuidedSetupFlags, runGuidedSetup } from './guided-setup.js';
|
|
38
39
|
import { requireFlagValue, collectFlagValues, parseBooleanFlagValue, parseListFlagValue, parseKeyValueEntry, MissingFlagValueError, } from '../flag-parsing.js';
|
|
40
|
+
/** Default project scripts installed by init and merged by guided setup apply. */
|
|
41
|
+
export const DEFAULT_SCRIPTS = { deploy: 'aiwg use all', doctor: 'aiwg doctor', sync: 'aiwg sync' };
|
|
39
42
|
const PROVIDER_LABELS = {
|
|
40
43
|
antigravity: 'Google Antigravity .agents/',
|
|
41
44
|
claude: 'Claude Code .claude/',
|
|
@@ -104,7 +107,7 @@ function renderWorkerDispatchHintIfApplicable(parallelism, setup) {
|
|
|
104
107
|
if (offer.shouldOffer)
|
|
105
108
|
ui.dim(` ${workerDispatchOfferHintWithArg(offer.detected)}`);
|
|
106
109
|
}
|
|
107
|
-
function parseInitArgInputs(args) {
|
|
110
|
+
export function parseInitArgInputs(args) {
|
|
108
111
|
// #3062 second review, finding 4: `precedence: 'first'` matches this
|
|
109
112
|
// command's pre-existing (and, for `--providers`/`--default-scripts`/
|
|
110
113
|
// `--script`/`--custom-scripts`, only) convention — see
|
|
@@ -181,6 +184,27 @@ export const initHandler = {
|
|
|
181
184
|
description: 'Initialise the baseline .aiwg/aiwg.config for an agent-led project setup',
|
|
182
185
|
category: 'project',
|
|
183
186
|
aliases: [],
|
|
187
|
+
async help() {
|
|
188
|
+
return { exitCode: 0, rawOutput: true, message: `Usage: aiwg init [options]
|
|
189
|
+
|
|
190
|
+
--scope project|user Record a guided setup plan (no config writes)
|
|
191
|
+
--intent code|docs|ops|mixed Workspace usage intent
|
|
192
|
+
--jev enable|decline|defer Optional external decision service (default off)
|
|
193
|
+
--region <r> --endpoint <url> --verify --remove --token-stdin Existing Jev options
|
|
194
|
+
--credential <provider>=env:NAME|file:PATH|stdin Credential reference only
|
|
195
|
+
--providers <list> Provider IDs
|
|
196
|
+
--default-scripts true|false Include default scripts
|
|
197
|
+
--custom-scripts true|false Include custom scripts
|
|
198
|
+
--script <name>=<command> Custom script (repeatable)
|
|
199
|
+
--worker-dispatch enable|decline Worker dispatch choice
|
|
200
|
+
--force Re-enter existing settings
|
|
201
|
+
--non-interactive, --yes Disable prompts
|
|
202
|
+
--dry-run Preview without saving
|
|
203
|
+
|
|
204
|
+
The new --scope, --intent or --credential flags select guided planning.
|
|
205
|
+
Progress resumes from the workspace's saved plan. Apply is a separate step.
|
|
206
|
+
` };
|
|
207
|
+
},
|
|
184
208
|
async execute(ctx) {
|
|
185
209
|
const force = ctx.args.includes('--force');
|
|
186
210
|
// `--non-interactive`/`--yes` are this command's own explicit flags for
|
|
@@ -204,13 +228,22 @@ export const initHandler = {
|
|
|
204
228
|
let defaultScriptsArg;
|
|
205
229
|
let customScriptsArg;
|
|
206
230
|
let scriptPairs;
|
|
231
|
+
let guidedFlags;
|
|
207
232
|
try {
|
|
233
|
+
guidedFlags = parseGuidedSetupFlags(ctx.args, 'init');
|
|
208
234
|
({ workerDispatchArg, providersArg, defaultScriptsArg, customScriptsArg, scriptPairs } = parseInitArgInputs(ctx.args));
|
|
209
235
|
}
|
|
210
236
|
catch (err) {
|
|
211
237
|
const message = err instanceof MissingFlagValueError ? `${err.message}.` : err instanceof Error ? err.message : String(err);
|
|
212
238
|
return { exitCode: EXIT_CODES.USAGE, message };
|
|
213
239
|
}
|
|
240
|
+
if (guidedFlags.enabled) {
|
|
241
|
+
const hasScripts = defaultScriptsArg !== undefined || customScriptsArg !== undefined || Object.keys(scriptPairs).length > 0;
|
|
242
|
+
return runGuidedSetup(ctx, guidedFlags, { providers: providersArg, workerDispatch: workerDispatchArg,
|
|
243
|
+
...(hasScripts ? { scripts: { defaultScripts: defaultScriptsArg ?? true,
|
|
244
|
+
customScripts: customScriptsArg ?? Object.keys(scriptPairs).length > 0, scripts: scriptPairs } } : {}),
|
|
245
|
+
}, !nonInteractive, projectDir);
|
|
246
|
+
}
|
|
214
247
|
ui.blank();
|
|
215
248
|
console.log(` ${ui.brandMark()} ${ui.bold('AIWG Baseline Config')}`);
|
|
216
249
|
ui.rule();
|
|
@@ -277,7 +310,6 @@ export const initHandler = {
|
|
|
277
310
|
let providers;
|
|
278
311
|
let scripts = {};
|
|
279
312
|
let workerDispatchDecision;
|
|
280
|
-
const DEFAULT_SCRIPTS = { deploy: 'aiwg use all', doctor: 'aiwg doctor', sync: 'aiwg sync' };
|
|
281
313
|
if (nonInteractive) {
|
|
282
314
|
// Non-interactive: an explicit `--providers`/`--default-scripts`
|
|
283
315
|
// answers the corresponding wizard input directly (review item 10);
|
|
@@ -382,12 +414,15 @@ export const initHandler = {
|
|
|
382
414
|
await writeAiwgConfig(projectDir, config);
|
|
383
415
|
if (workerDispatchDecision?.kind === 'enable')
|
|
384
416
|
ui.info('Next: aiwg doctor --probe-workers --qualify.');
|
|
385
|
-
const
|
|
386
|
-
const
|
|
417
|
+
const skipContext = ctx.args.includes('--no-context-files');
|
|
418
|
+
const normalizedAiwgMdPath = skipContext ? null : await writeNormalizedAiwgMd(projectDir);
|
|
419
|
+
const workspace = skipContext ? null : await ensureWorkspaceContext(projectDir);
|
|
387
420
|
ui.blank();
|
|
388
421
|
ui.success(`Created ${getConfigPath(projectDir)}`);
|
|
389
|
-
|
|
390
|
-
|
|
422
|
+
if (normalizedAiwgMdPath)
|
|
423
|
+
ui.success(`Created ${normalizedAiwgMdPath}`);
|
|
424
|
+
if (workspace)
|
|
425
|
+
ui.success(`${workspace.action === 'created' ? 'Created' : 'Preserved'} WORKSPACE.md`);
|
|
391
426
|
ui.success(`Providers: ${providers.join(', ')}`);
|
|
392
427
|
if (Object.keys(scripts).length > 0) {
|
|
393
428
|
ui.success(`Scripts: ${Object.keys(scripts).join(', ')}`);
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import path from 'path';
|
|
20
20
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
21
|
-
import { randomUUID } from 'crypto';
|
|
21
|
+
import { createHash, randomUUID } from 'crypto';
|
|
22
22
|
import { pathToFileURL } from 'node:url';
|
|
23
23
|
import { projectAiwgPath } from '../../config/project-artifacts.js';
|
|
24
24
|
const DEFAULT_PORT = 8200;
|
|
@@ -27,7 +27,7 @@ const DEFAULT_AIWG_SERVE = 'http://127.0.0.1:7337';
|
|
|
27
27
|
/**
|
|
28
28
|
* Resolve or generate-once the executor identity.
|
|
29
29
|
* Written to `.aiwg/local-executor/identity.json` so restarts reuse the same
|
|
30
|
-
* UUID
|
|
30
|
+
* UUID. The shim separately persists its bearer token to authenticate restarts.
|
|
31
31
|
*/
|
|
32
32
|
function resolveExecutorId(override) {
|
|
33
33
|
if (override)
|
|
@@ -103,7 +103,7 @@ function warnIfNonLoopback(bind) {
|
|
|
103
103
|
console.warn('[local-executor] WARNING: binding on non-loopback interface ' + bind + '.\n' +
|
|
104
104
|
' This executor has isolation:none — agent code runs in the host process.\n' +
|
|
105
105
|
' Ensure this interface is not reachable by untrusted parties.\n' +
|
|
106
|
-
'
|
|
106
|
+
' Keep the persisted executor bearer token private.');
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
@@ -208,6 +208,8 @@ export const localExecutorServeHandler = {
|
|
|
208
208
|
restBase,
|
|
209
209
|
wsBase,
|
|
210
210
|
aiwgServeUrl: opts.aiwgServe,
|
|
211
|
+
token: process.env['AIWG_EXECUTOR_TOKEN'],
|
|
212
|
+
tokenPath: projectAiwgPath(process.cwd(), 'local-executor', 'tokens', `${createHash('sha256').update(`${opts.aiwgServe}\0${opts.executorId}`).digest('hex')}.json`),
|
|
211
213
|
});
|
|
212
214
|
// Register with aiwg-serve
|
|
213
215
|
let token;
|