@ashlr/hub 2.2.0 → 3.0.1
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 +73 -0
- package/README.md +95 -8
- package/dist/api/plugin.d.ts +1 -0
- package/dist/cli/backlog.js +2 -0
- package/dist/cli/backlog.js.map +1 -1
- package/dist/cli/digest.d.ts +6 -0
- package/dist/cli/digest.js +127 -2
- package/dist/cli/digest.js.map +1 -1
- package/dist/cli/eval-fixtures.d.ts +18 -0
- package/dist/cli/eval-fixtures.js +38 -0
- package/dist/cli/eval-fixtures.js.map +1 -0
- package/dist/cli/eval.d.ts +56 -0
- package/dist/cli/eval.js +283 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/fleet.d.ts +27 -0
- package/dist/cli/fleet.js +222 -0
- package/dist/cli/fleet.js.map +1 -0
- package/dist/cli/goal.d.ts +15 -0
- package/dist/cli/goal.js +91 -0
- package/dist/cli/goal.js.map +1 -0
- package/dist/cli/help.js +10 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inbox.d.ts +6 -0
- package/dist/cli/inbox.js +183 -8
- package/dist/cli/inbox.js.map +1 -1
- package/dist/cli/index.js +50 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loop.d.ts +16 -0
- package/dist/cli/loop.js +66 -0
- package/dist/cli/loop.js.map +1 -0
- package/dist/cli/mcp.d.ts +12 -0
- package/dist/cli/mcp.js +148 -0
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/onboard.d.ts +16 -0
- package/dist/cli/onboard.js +71 -0
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/plugins.js +9 -8
- package/dist/cli/plugins.js.map +1 -1
- package/dist/cli/pulse.d.ts +10 -0
- package/dist/cli/pulse.js +261 -0
- package/dist/cli/pulse.js.map +1 -1
- package/dist/cli/run.js +21 -3
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/stack.d.ts +34 -0
- package/dist/cli/stack.js +221 -0
- package/dist/cli/stack.js.map +1 -0
- package/dist/cli/update.js +12 -5
- package/dist/cli/update.js.map +1 -1
- package/dist/core/daemon/loop.d.ts +10 -5
- package/dist/core/daemon/loop.js +167 -37
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/env-bridge.js +3 -2
- package/dist/core/env-bridge.js.map +1 -1
- package/dist/core/fleet/automerge-pass.d.ts +33 -0
- package/dist/core/fleet/automerge-pass.js +61 -0
- package/dist/core/fleet/automerge-pass.js.map +1 -0
- package/dist/core/fleet/quota.d.ts +70 -0
- package/dist/core/fleet/quota.js +198 -0
- package/dist/core/fleet/quota.js.map +1 -0
- package/dist/core/fleet/router.d.ts +46 -0
- package/dist/core/fleet/router.js +121 -0
- package/dist/core/fleet/router.js.map +1 -0
- package/dist/core/fleet/self.d.ts +58 -0
- package/dist/core/fleet/self.js +187 -0
- package/dist/core/fleet/self.js.map +1 -0
- package/dist/core/fleet/status.d.ts +54 -0
- package/dist/core/fleet/status.js +157 -0
- package/dist/core/fleet/status.js.map +1 -0
- package/dist/core/foundry/provenance.d.ts +78 -0
- package/dist/core/foundry/provenance.js +172 -0
- package/dist/core/foundry/provenance.js.map +1 -0
- package/dist/core/git.d.ts +13 -0
- package/dist/core/git.js +26 -0
- package/dist/core/git.js.map +1 -1
- package/dist/core/inbox/merge.d.ts +151 -0
- package/dist/core/inbox/merge.js +858 -0
- package/dist/core/inbox/merge.js.map +1 -0
- package/dist/core/inbox/store.js +10 -1
- package/dist/core/inbox/store.js.map +1 -1
- package/dist/core/integrations/markdown.d.ts +66 -0
- package/dist/core/integrations/markdown.js +132 -0
- package/dist/core/integrations/markdown.js.map +1 -0
- package/dist/core/integrations/secrets.d.ts +37 -0
- package/dist/core/integrations/secrets.js +67 -0
- package/dist/core/integrations/secrets.js.map +1 -0
- package/dist/core/integrations/stack.d.ts +47 -0
- package/dist/core/integrations/stack.js +107 -0
- package/dist/core/integrations/stack.js.map +1 -0
- package/dist/core/mcp-native-engineer.d.ts +123 -0
- package/dist/core/mcp-native-engineer.js +936 -0
- package/dist/core/mcp-native-engineer.js.map +1 -0
- package/dist/core/mcp-native.js +20 -42
- package/dist/core/mcp-native.js.map +1 -1
- package/dist/core/mcp-registry.js +2 -0
- package/dist/core/mcp-registry.js.map +1 -1
- package/dist/core/observability/codex-source.d.ts +53 -0
- package/dist/core/observability/codex-source.js +390 -0
- package/dist/core/observability/codex-source.js.map +1 -0
- package/dist/core/observability/estimate.d.ts +12 -0
- package/dist/core/observability/estimate.js +26 -0
- package/dist/core/observability/estimate.js.map +1 -1
- package/dist/core/observability/limits.d.ts +52 -0
- package/dist/core/observability/limits.js +316 -0
- package/dist/core/observability/limits.js.map +1 -0
- package/dist/core/observability/usage-source.js +3 -1
- package/dist/core/observability/usage-source.js.map +1 -1
- package/dist/core/portfolio/scanners.d.ts +1 -0
- package/dist/core/portfolio/scanners.js +40 -1
- package/dist/core/portfolio/scanners.js.map +1 -1
- package/dist/core/providers.js +4 -0
- package/dist/core/providers.js.map +1 -1
- package/dist/core/quality/health.js +1 -0
- package/dist/core/quality/health.js.map +1 -1
- package/dist/core/run/agent-loop.d.ts +8 -0
- package/dist/core/run/agent-loop.js +24 -14
- package/dist/core/run/agent-loop.js.map +1 -1
- package/dist/core/run/engine-registry.d.ts +48 -0
- package/dist/core/run/engine-registry.js +190 -0
- package/dist/core/run/engine-registry.js.map +1 -0
- package/dist/core/run/engines.d.ts +17 -3
- package/dist/core/run/engines.js +63 -44
- package/dist/core/run/engines.js.map +1 -1
- package/dist/core/run/learned-router.d.ts +121 -0
- package/dist/core/run/learned-router.js +374 -0
- package/dist/core/run/learned-router.js.map +1 -0
- package/dist/core/run/model-manager.js +3 -3
- package/dist/core/run/model-manager.js.map +1 -1
- package/dist/core/run/model-profile.d.ts +67 -0
- package/dist/core/run/model-profile.js +132 -0
- package/dist/core/run/model-profile.js.map +1 -0
- package/dist/core/run/orchestrator.d.ts +1 -1
- package/dist/core/run/orchestrator.js +642 -510
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/run/prompts/budget.d.ts +25 -0
- package/dist/core/run/prompts/budget.js +51 -0
- package/dist/core/run/prompts/budget.js.map +1 -0
- package/dist/core/run/prompts/index.d.ts +14 -0
- package/dist/core/run/prompts/index.js +59 -0
- package/dist/core/run/prompts/index.js.map +1 -0
- package/dist/core/run/prompts/layers.d.ts +26 -0
- package/dist/core/run/prompts/layers.js +73 -0
- package/dist/core/run/prompts/layers.js.map +1 -0
- package/dist/core/run/prompts/roles.d.ts +23 -0
- package/dist/core/run/prompts/roles.js +48 -0
- package/dist/core/run/prompts/roles.js.map +1 -0
- package/dist/core/run/prompts/types.d.ts +38 -0
- package/dist/core/run/prompts/types.js +5 -0
- package/dist/core/run/prompts/types.js.map +1 -0
- package/dist/core/run/provider-client.d.ts +6 -24
- package/dist/core/run/provider-client.js +125 -61
- package/dist/core/run/provider-client.js.map +1 -1
- package/dist/core/run/router.js +8 -0
- package/dist/core/run/router.js.map +1 -1
- package/dist/core/run/sandboxed-engine.d.ts +66 -0
- package/dist/core/run/sandboxed-engine.js +262 -0
- package/dist/core/run/sandboxed-engine.js.map +1 -0
- package/dist/core/run/verify-commands.d.ts +83 -0
- package/dist/core/run/verify-commands.js +234 -0
- package/dist/core/run/verify-commands.js.map +1 -0
- package/dist/core/run/verify.d.ts +31 -1
- package/dist/core/run/verify.js +48 -0
- package/dist/core/run/verify.js.map +1 -1
- package/dist/core/sandbox/audit.d.ts +27 -0
- package/dist/core/sandbox/audit.js +34 -0
- package/dist/core/sandbox/audit.js.map +1 -1
- package/dist/core/sandbox/confine.d.ts +134 -0
- package/dist/core/sandbox/confine.js +370 -0
- package/dist/core/sandbox/confine.js.map +1 -0
- package/dist/core/types.d.ts +227 -5
- package/dist/core/web/api.js +77 -28
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/control.d.ts +116 -0
- package/dist/core/web/control.js +307 -0
- package/dist/core/web/control.js.map +1 -0
- package/dist/core/web/public/app.js +512 -6
- package/dist/core/web/public/styles.css +468 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/core/quality/health.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/core/quality/health.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,4 +37,12 @@ export declare function runTask(task: RunTask, client: ProviderClient, ctx: {
|
|
|
37
37
|
/** M11: optional StreamSink for live progress events. Defaults to nullSink. */
|
|
38
38
|
sink?: StreamSink;
|
|
39
39
|
onStep: (s: RunStep) => void;
|
|
40
|
+
/**
|
|
41
|
+
* M41: when true, build the system prompt from the model-adaptive prompt
|
|
42
|
+
* suite and use the model profile's step cap. Default/false → the legacy
|
|
43
|
+
* two-sentence prompt + TASK_STEP_CAP (byte-identical to prior behavior).
|
|
44
|
+
*/
|
|
45
|
+
adaptivePrompts?: boolean;
|
|
46
|
+
/** M41: optional memory block to inject into the executor prompt. */
|
|
47
|
+
memory?: string;
|
|
40
48
|
}): Promise<RunTask>;
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { addUsage, overBudget, newUsage } from './budget.js';
|
|
14
14
|
import { nullSink } from './streaming.js';
|
|
15
|
+
import { resolveModelProfile } from './model-profile.js';
|
|
16
|
+
import { assembleSystemPrompt } from './prompts/index.js';
|
|
15
17
|
/** Maximum steps per task, regardless of budget (safety backstop). */
|
|
16
18
|
const TASK_STEP_CAP = 20;
|
|
17
19
|
/**
|
|
@@ -92,20 +94,28 @@ export async function runTask(task, client, ctx) {
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
}
|
|
97
|
+
// M41: model-adaptive system prompt + step cap when enabled; otherwise the
|
|
98
|
+
// legacy literal and TASK_STEP_CAP (unchanged behavior when the flag is off).
|
|
99
|
+
const profile = resolveModelProfile(client.model);
|
|
100
|
+
const useAdaptive = ctx.adaptivePrompts === true;
|
|
101
|
+
const stepCap = useAdaptive ? profile.stepCap : TASK_STEP_CAP;
|
|
102
|
+
const systemContent = useAdaptive
|
|
103
|
+
? assembleSystemPrompt({
|
|
104
|
+
role: 'executor',
|
|
105
|
+
useTools,
|
|
106
|
+
profile,
|
|
107
|
+
memory: ctx.memory,
|
|
108
|
+
charCap: profile.promptCharCap,
|
|
109
|
+
}).system
|
|
110
|
+
: 'You are an Ashlr sub-agent. Be concise and focused. ' +
|
|
111
|
+
'Complete the given task directly. ' +
|
|
112
|
+
(useTools
|
|
113
|
+
? 'You may call tools to gather information; always follow up with a final answer.'
|
|
114
|
+
: 'Do not request tools — respond with a final textual answer only.');
|
|
95
115
|
// Build the initial message list.
|
|
96
116
|
const messages = [
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
content: 'You are an Ashlr sub-agent. Be concise and focused. ' +
|
|
100
|
-
'Complete the given task directly. ' +
|
|
101
|
-
(useTools
|
|
102
|
-
? 'You may call tools to gather information; always follow up with a final answer.'
|
|
103
|
-
: 'Do not request tools — respond with a final textual answer only.'),
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
role: 'user',
|
|
107
|
-
content: task.goal,
|
|
108
|
-
},
|
|
117
|
+
{ role: 'system', content: systemContent },
|
|
118
|
+
{ role: 'user', content: task.goal },
|
|
109
119
|
];
|
|
110
120
|
task.status = 'running';
|
|
111
121
|
try {
|
|
@@ -125,7 +135,7 @@ export async function runTask(task, client, ctx) {
|
|
|
125
135
|
break;
|
|
126
136
|
}
|
|
127
137
|
// Per-task step cap (safety backstop independent of global budget).
|
|
128
|
-
if (stepCount >=
|
|
138
|
+
if (stepCount >= stepCap) {
|
|
129
139
|
const partial = lastAssistantContent(messages);
|
|
130
140
|
if (partial) {
|
|
131
141
|
task.status = 'done';
|
|
@@ -133,7 +143,7 @@ export async function runTask(task, client, ctx) {
|
|
|
133
143
|
}
|
|
134
144
|
else {
|
|
135
145
|
task.status = 'failed';
|
|
136
|
-
task.error = `Step cap of ${
|
|
146
|
+
task.error = `Step cap of ${stepCap} reached without producing a result.`;
|
|
137
147
|
}
|
|
138
148
|
break;
|
|
139
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../../src/core/run/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../../src/core/run/agent-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine-registry.ts — M50 (v5 Open Fleet): the single, declarative source of
|
|
3
|
+
* truth for how every backend engine is invoked, probed, and trust-tiered.
|
|
4
|
+
*
|
|
5
|
+
* Before M50 these facts lived in three hand-written switches (buildEngineCommand,
|
|
6
|
+
* engineInstalled, engineTierOf). M50 collapses them into one table of
|
|
7
|
+
* `EngineSpec`s so that ADDING A BACKEND IS CONFIG-ONLY: a `cfg.foundry.engines`
|
|
8
|
+
* entry is merged over `BUILTIN_ENGINE_REGISTRY` by `resolveEngineRegistry` and
|
|
9
|
+
* picked up by the router, the containment, the gate, and the control plane with
|
|
10
|
+
* no code change.
|
|
11
|
+
*
|
|
12
|
+
* PARITY GUARANTEE (locked by test/m50.engine-registry): `compileArgv` reproduces
|
|
13
|
+
* the EXACT argv the pre-M50 switch produced for builtin/ashlrcode/aw/claude/codex,
|
|
14
|
+
* with and without a model and with and without autonomous mode.
|
|
15
|
+
*
|
|
16
|
+
* GUARDRAILS:
|
|
17
|
+
* - compileArgv is PURE and injection-safe: placeholders are substituted only as
|
|
18
|
+
* WHOLE argv elements; a goal/cwd/model containing '$CWD', ';', or backticks is
|
|
19
|
+
* passed verbatim as a single element and never shell-expanded.
|
|
20
|
+
* - No implicit frontier: a malformed or tier-less added entry is DROPPED, never
|
|
21
|
+
* defaulted to a merge-authority tier.
|
|
22
|
+
*/
|
|
23
|
+
import type { AshlrConfig, ArgvSeg, EngineId, EngineSpec } from '../types.js';
|
|
24
|
+
/**
|
|
25
|
+
* The canonical built-in engine roster. Keyed by engine id. The five original
|
|
26
|
+
* engines reproduce their pre-M50 argv byte-for-byte; `hermes` and `opencode`
|
|
27
|
+
* are new v5 CLI agents (tier 'local' in M50 — M51's tri-tier promotes the strong
|
|
28
|
+
* open models to 'mid'; nothing new is granted frontier/main authority here).
|
|
29
|
+
*/
|
|
30
|
+
export declare const BUILTIN_ENGINE_REGISTRY: Readonly<Record<EngineId, EngineSpec>>;
|
|
31
|
+
/**
|
|
32
|
+
* Compile a declarative argv template into a concrete argv. `optModel` segments
|
|
33
|
+
* are emitted only when a non-empty model is present. Pure; injection-safe.
|
|
34
|
+
*/
|
|
35
|
+
export declare function compileArgv(template: ArgvSeg[], ctx: {
|
|
36
|
+
goal: string;
|
|
37
|
+
cwd: string;
|
|
38
|
+
model?: string;
|
|
39
|
+
autonomous?: boolean;
|
|
40
|
+
}, autonomousArgv?: ArgvSeg[]): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the effective engine roster: the built-in registry with any
|
|
43
|
+
* `cfg.foundry.engines` entries merged over it. Malformed added entries are
|
|
44
|
+
* dropped (never fatal, never defaulted to frontier). Returns a fresh object.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveEngineRegistry(cfg?: AshlrConfig): Record<string, EngineSpec>;
|
|
47
|
+
/** Look up a single engine spec from the effective registry. */
|
|
48
|
+
export declare function resolveEngineSpec(engine: string, cfg?: AshlrConfig): EngineSpec | undefined;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* engine-registry.ts — M50 (v5 Open Fleet): the single, declarative source of
|
|
3
|
+
* truth for how every backend engine is invoked, probed, and trust-tiered.
|
|
4
|
+
*
|
|
5
|
+
* Before M50 these facts lived in three hand-written switches (buildEngineCommand,
|
|
6
|
+
* engineInstalled, engineTierOf). M50 collapses them into one table of
|
|
7
|
+
* `EngineSpec`s so that ADDING A BACKEND IS CONFIG-ONLY: a `cfg.foundry.engines`
|
|
8
|
+
* entry is merged over `BUILTIN_ENGINE_REGISTRY` by `resolveEngineRegistry` and
|
|
9
|
+
* picked up by the router, the containment, the gate, and the control plane with
|
|
10
|
+
* no code change.
|
|
11
|
+
*
|
|
12
|
+
* PARITY GUARANTEE (locked by test/m50.engine-registry): `compileArgv` reproduces
|
|
13
|
+
* the EXACT argv the pre-M50 switch produced for builtin/ashlrcode/aw/claude/codex,
|
|
14
|
+
* with and without a model and with and without autonomous mode.
|
|
15
|
+
*
|
|
16
|
+
* GUARDRAILS:
|
|
17
|
+
* - compileArgv is PURE and injection-safe: placeholders are substituted only as
|
|
18
|
+
* WHOLE argv elements; a goal/cwd/model containing '$CWD', ';', or backticks is
|
|
19
|
+
* passed verbatim as a single element and never shell-expanded.
|
|
20
|
+
* - No implicit frontier: a malformed or tier-less added entry is DROPPED, never
|
|
21
|
+
* defaulted to a merge-authority tier.
|
|
22
|
+
*/
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Built-in roster — encodes the five v1–v4 engines (parity-locked) plus the two
|
|
25
|
+
// v5 CLI agents. New API models / agents are added via cfg.foundry.engines.
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* The canonical built-in engine roster. Keyed by engine id. The five original
|
|
29
|
+
* engines reproduce their pre-M50 argv byte-for-byte; `hermes` and `opencode`
|
|
30
|
+
* are new v5 CLI agents (tier 'local' in M50 — M51's tri-tier promotes the strong
|
|
31
|
+
* open models to 'mid'; nothing new is granted frontier/main authority here).
|
|
32
|
+
*/
|
|
33
|
+
export const BUILTIN_ENGINE_REGISTRY = Object.freeze({
|
|
34
|
+
builtin: { id: 'builtin', kind: 'builtin', tier: 'local' },
|
|
35
|
+
// claude -p <goal> [--model M] --output-format json [--permission-mode acceptEdits --add-dir CWD]
|
|
36
|
+
claude: {
|
|
37
|
+
id: 'claude',
|
|
38
|
+
kind: 'cli-agent',
|
|
39
|
+
tier: 'frontier',
|
|
40
|
+
bin: 'claude',
|
|
41
|
+
bins: ['claude'],
|
|
42
|
+
argv: ['-p', '$GOAL', { optModel: ['--model', '$MODEL'] }, '--output-format', 'json'],
|
|
43
|
+
autonomousArgv: ['--permission-mode', 'acceptEdits', '--add-dir', '$CWD'],
|
|
44
|
+
capabilities: ['agent', 'edit', 'architecture'],
|
|
45
|
+
},
|
|
46
|
+
// codex exec [--model M] --sandbox workspace-write --cd CWD --json <goal>
|
|
47
|
+
codex: {
|
|
48
|
+
id: 'codex',
|
|
49
|
+
kind: 'cli-agent',
|
|
50
|
+
tier: 'frontier',
|
|
51
|
+
bin: 'codex',
|
|
52
|
+
bins: ['codex'],
|
|
53
|
+
argv: [
|
|
54
|
+
'exec',
|
|
55
|
+
{ optModel: ['--model', '$MODEL'] },
|
|
56
|
+
'--sandbox',
|
|
57
|
+
'workspace-write',
|
|
58
|
+
'--cd',
|
|
59
|
+
'$CWD',
|
|
60
|
+
'--json',
|
|
61
|
+
'$GOAL',
|
|
62
|
+
],
|
|
63
|
+
capabilities: ['agent', 'edit', 'refactor'],
|
|
64
|
+
},
|
|
65
|
+
// aw auto <goal> --cwd CWD [--model M]
|
|
66
|
+
aw: {
|
|
67
|
+
id: 'aw',
|
|
68
|
+
kind: 'cli-agent',
|
|
69
|
+
tier: 'local',
|
|
70
|
+
bin: 'aw',
|
|
71
|
+
bins: ['aw'],
|
|
72
|
+
argv: ['auto', '$GOAL', '--cwd', '$CWD', { optModel: ['--model', '$MODEL'] }],
|
|
73
|
+
capabilities: ['agent', 'edit'],
|
|
74
|
+
},
|
|
75
|
+
// ac --goal <goal> (real bin is 'ac'; alias 'ashlrcode')
|
|
76
|
+
ashlrcode: {
|
|
77
|
+
id: 'ashlrcode',
|
|
78
|
+
kind: 'cli-agent',
|
|
79
|
+
tier: 'local',
|
|
80
|
+
bin: 'ac',
|
|
81
|
+
bins: ['ac', 'ashlrcode'],
|
|
82
|
+
argv: ['--goal', '$GOAL'],
|
|
83
|
+
capabilities: ['agent', 'edit'],
|
|
84
|
+
},
|
|
85
|
+
// M50/M51: Hermes Agent (Nous Research) — a strong OPEN model. Tier 'mid':
|
|
86
|
+
// branch-eligible after full verification, but never merge-authority for main.
|
|
87
|
+
// hermes -z <goal> [-m M] [--yolo when autonomous]
|
|
88
|
+
hermes: {
|
|
89
|
+
id: 'hermes',
|
|
90
|
+
kind: 'cli-agent',
|
|
91
|
+
tier: 'mid',
|
|
92
|
+
bin: 'hermes',
|
|
93
|
+
bins: ['hermes'],
|
|
94
|
+
argv: ['-z', '$GOAL', { optModel: ['-m', '$MODEL'] }],
|
|
95
|
+
autonomousArgv: ['--yolo'],
|
|
96
|
+
capabilities: ['agent', 'edit', 'tools'],
|
|
97
|
+
},
|
|
98
|
+
// M50: OpenCode ("open claw"-class). opencode run <goal> [--model M]. Config-only
|
|
99
|
+
// by default (binary absent on most machines → engineInstalled returns false).
|
|
100
|
+
opencode: {
|
|
101
|
+
id: 'opencode',
|
|
102
|
+
kind: 'cli-agent',
|
|
103
|
+
tier: 'local',
|
|
104
|
+
bin: 'opencode',
|
|
105
|
+
bins: ['opencode'],
|
|
106
|
+
argv: ['run', '$GOAL', { optModel: ['--model', '$MODEL'] }],
|
|
107
|
+
capabilities: ['agent', 'edit'],
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// argv compilation — pure + injection-safe
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
const VALID_TIERS = new Set(['local', 'mid', 'frontier']);
|
|
114
|
+
const VALID_KINDS = new Set(['builtin', 'cli-agent', 'api-model']);
|
|
115
|
+
const ENGINE_ID_RE = /^[a-z][a-z0-9-]{0,39}$/;
|
|
116
|
+
/** Substitute a single template token as a WHOLE argv element (never shell-split). */
|
|
117
|
+
function subst(seg, vars) {
|
|
118
|
+
switch (seg) {
|
|
119
|
+
case '$GOAL':
|
|
120
|
+
return vars.goal;
|
|
121
|
+
case '$CWD':
|
|
122
|
+
return vars.cwd;
|
|
123
|
+
case '$MODEL':
|
|
124
|
+
return vars.model;
|
|
125
|
+
default:
|
|
126
|
+
return seg;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Compile a declarative argv template into a concrete argv. `optModel` segments
|
|
131
|
+
* are emitted only when a non-empty model is present. Pure; injection-safe.
|
|
132
|
+
*/
|
|
133
|
+
export function compileArgv(template, ctx, autonomousArgv) {
|
|
134
|
+
const model = ctx.model?.trim() ?? '';
|
|
135
|
+
const vars = { goal: ctx.goal, cwd: ctx.cwd, model };
|
|
136
|
+
const segs = ctx.autonomous && autonomousArgv ? [...template, ...autonomousArgv] : [...template];
|
|
137
|
+
const out = [];
|
|
138
|
+
for (const seg of segs) {
|
|
139
|
+
if (typeof seg === 'string') {
|
|
140
|
+
out.push(subst(seg, vars));
|
|
141
|
+
}
|
|
142
|
+
else if (seg && Array.isArray(seg.optModel)) {
|
|
143
|
+
if (model.length > 0) {
|
|
144
|
+
for (const s of seg.optModel)
|
|
145
|
+
out.push(subst(s, vars));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
}
|
|
151
|
+
// ---------------------------------------------------------------------------
|
|
152
|
+
// registry resolution + lookups
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
/** True when an added engine spec is structurally valid (else it is dropped). */
|
|
155
|
+
function isValidSpec(spec) {
|
|
156
|
+
if (!spec || typeof spec !== 'object')
|
|
157
|
+
return false;
|
|
158
|
+
const s = spec;
|
|
159
|
+
if (typeof s['id'] !== 'string' || !ENGINE_ID_RE.test(s['id']))
|
|
160
|
+
return false;
|
|
161
|
+
if (typeof s['kind'] !== 'string' || !VALID_KINDS.has(s['kind']))
|
|
162
|
+
return false;
|
|
163
|
+
// No implicit frontier: tier is REQUIRED and must be a known tier.
|
|
164
|
+
if (typeof s['tier'] !== 'string' || !VALID_TIERS.has(s['tier']))
|
|
165
|
+
return false;
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Resolve the effective engine roster: the built-in registry with any
|
|
170
|
+
* `cfg.foundry.engines` entries merged over it. Malformed added entries are
|
|
171
|
+
* dropped (never fatal, never defaulted to frontier). Returns a fresh object.
|
|
172
|
+
*/
|
|
173
|
+
export function resolveEngineRegistry(cfg) {
|
|
174
|
+
const merged = { ...BUILTIN_ENGINE_REGISTRY };
|
|
175
|
+
const added = cfg?.foundry?.engines;
|
|
176
|
+
if (added && typeof added === 'object') {
|
|
177
|
+
for (const [key, spec] of Object.entries(added)) {
|
|
178
|
+
// Honor the map key as the id when the spec omits/!matches it.
|
|
179
|
+
const candidate = { ...spec, id: spec?.id ?? key };
|
|
180
|
+
if (isValidSpec(candidate))
|
|
181
|
+
merged[key] = candidate;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return merged;
|
|
185
|
+
}
|
|
186
|
+
/** Look up a single engine spec from the effective registry. */
|
|
187
|
+
export function resolveEngineSpec(engine, cfg) {
|
|
188
|
+
return resolveEngineRegistry(cfg)[engine];
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=engine-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../../src/core/run/engine-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ import type { AshlrConfig, EngineId, EngineCommand } from '../types.js';
|
|
|
26
26
|
*
|
|
27
27
|
* Best-effort, never throws.
|
|
28
28
|
*/
|
|
29
|
-
export declare function engineInstalled(engine: EngineId): boolean;
|
|
29
|
+
export declare function engineInstalled(engine: EngineId, cfg?: AshlrConfig): boolean;
|
|
30
30
|
/**
|
|
31
31
|
* Build the EXACT external command for an engine, or null for the builtin loop.
|
|
32
32
|
*
|
|
@@ -41,9 +41,10 @@ export declare function engineInstalled(engine: EngineId): boolean;
|
|
|
41
41
|
* aw: bin='aw', args=['auto', G, '--cwd', D] [+ '--model', M when given]
|
|
42
42
|
* ashlrcode: bin='ac', args=['--goal', G]
|
|
43
43
|
*/
|
|
44
|
-
export declare function buildEngineCommand(engine: EngineId, goal: string,
|
|
44
|
+
export declare function buildEngineCommand(engine: EngineId, goal: string, cfg: AshlrConfig, opts?: {
|
|
45
45
|
cwd?: string;
|
|
46
46
|
model?: string;
|
|
47
|
+
autonomous?: boolean;
|
|
47
48
|
}): EngineCommand | null;
|
|
48
49
|
/**
|
|
49
50
|
* Wrap an EngineCommand to run under `phantom exec -- <bin> <args...>`.
|
|
@@ -64,7 +65,20 @@ export declare function phantomWrap(cmd: EngineCommand, _cfg: AshlrConfig): Engi
|
|
|
64
65
|
* GUARDRAIL: MUST NOT be called against a real delegated agent during
|
|
65
66
|
* build/integrate/verify — unit tests assert argv builders only.
|
|
66
67
|
*/
|
|
67
|
-
export declare function spawnEngine(cmd: EngineCommand, cfg: AshlrConfig
|
|
68
|
+
export declare function spawnEngine(cmd: EngineCommand, cfg: AshlrConfig, opts?: {
|
|
69
|
+
env?: NodeJS.ProcessEnv;
|
|
70
|
+
timeoutMs?: number;
|
|
71
|
+
/**
|
|
72
|
+
* M52: optional OS-level sandbox launcher. When present, the engine is
|
|
73
|
+
* spawned as `launcher.bin [...launcher.prefixArgs, cmd.bin, ...cmd.args]`
|
|
74
|
+
* (the phantomWrap, if any, composes BEFORE the launcher — jail wraps the
|
|
75
|
+
* whole thing). When absent ⇒ exactly v4 behavior (default-off parity).
|
|
76
|
+
*/
|
|
77
|
+
launcher?: {
|
|
78
|
+
bin: string;
|
|
79
|
+
prefixArgs: string[];
|
|
80
|
+
};
|
|
81
|
+
}): {
|
|
68
82
|
ok: boolean;
|
|
69
83
|
output: string;
|
|
70
84
|
usage?: {
|
package/dist/core/run/engines.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { spawnSync, execFileSync } from 'node:child_process';
|
|
20
20
|
import { withToolEnv } from '../env-bridge.js';
|
|
21
|
+
import { resolveEngineSpec, compileArgv } from './engine-registry.js';
|
|
21
22
|
// ---------------------------------------------------------------------------
|
|
22
23
|
// Phantom detection (cached, best-effort)
|
|
23
24
|
// ---------------------------------------------------------------------------
|
|
@@ -25,7 +26,7 @@ let _phantomInstalled;
|
|
|
25
26
|
function phantomInstalled() {
|
|
26
27
|
if (_phantomInstalled === undefined) {
|
|
27
28
|
try {
|
|
28
|
-
execFileSync('which', ['phantom'], { stdio: 'ignore' });
|
|
29
|
+
execFileSync(process.platform === 'win32' ? 'where' : 'which', ['phantom'], { stdio: 'ignore' });
|
|
29
30
|
_phantomInstalled = true;
|
|
30
31
|
}
|
|
31
32
|
catch {
|
|
@@ -46,18 +47,20 @@ function phantomInstalled() {
|
|
|
46
47
|
*
|
|
47
48
|
* Best-effort, never throws.
|
|
48
49
|
*/
|
|
49
|
-
export function engineInstalled(engine) {
|
|
50
|
+
export function engineInstalled(engine, cfg) {
|
|
50
51
|
if (engine === 'builtin')
|
|
51
52
|
return true;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
const spec = resolveEngineSpec(engine, cfg);
|
|
54
|
+
// An OpenAI-compatible api-model is "installed" when its key is present (the
|
|
55
|
+
// local-first gate still applies at completion time); CLI agents probe PATH.
|
|
56
|
+
if (spec?.kind === 'api-model') {
|
|
57
|
+
const key = spec.api?.envKey;
|
|
58
|
+
return key ? Boolean(process.env[key]?.trim()) : false;
|
|
59
|
+
}
|
|
60
|
+
const candidates = spec?.bins ?? [spec?.bin ?? engine];
|
|
58
61
|
for (const bin of candidates) {
|
|
59
62
|
try {
|
|
60
|
-
execFileSync('which', [bin], { stdio: 'ignore' });
|
|
63
|
+
execFileSync(process.platform === 'win32' ? 'where' : 'which', [bin], { stdio: 'ignore' });
|
|
61
64
|
return true;
|
|
62
65
|
}
|
|
63
66
|
catch {
|
|
@@ -83,36 +86,17 @@ export function engineInstalled(engine) {
|
|
|
83
86
|
* aw: bin='aw', args=['auto', G, '--cwd', D] [+ '--model', M when given]
|
|
84
87
|
* ashlrcode: bin='ac', args=['--goal', G]
|
|
85
88
|
*/
|
|
86
|
-
export function buildEngineCommand(engine, goal,
|
|
87
|
-
|
|
89
|
+
export function buildEngineCommand(engine, goal, cfg, opts) {
|
|
90
|
+
// M50: argv is driven by the declarative engine registry (single source of
|
|
91
|
+
// truth). The builtin engine and api-model engines have no CLI argv → null
|
|
92
|
+
// (api-models run through the in-process loop + provider client, not a spawn).
|
|
93
|
+
const spec = resolveEngineSpec(engine, cfg);
|
|
94
|
+
if (!spec || spec.kind !== 'cli-agent' || !spec.argv)
|
|
88
95
|
return null;
|
|
89
96
|
const cwd = opts?.cwd ?? process.cwd();
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const args = ['-p', goal, '--output-format', 'json'];
|
|
94
|
-
if (model) {
|
|
95
|
-
// --model must come before --output-format per claude's -p mode
|
|
96
|
-
args.splice(2, 0, '--model', model);
|
|
97
|
-
}
|
|
98
|
-
return { bin: 'claude', args, cwd };
|
|
99
|
-
}
|
|
100
|
-
case 'aw': {
|
|
101
|
-
const args = ['auto', goal, '--cwd', cwd];
|
|
102
|
-
if (model) {
|
|
103
|
-
args.push('--model', model);
|
|
104
|
-
}
|
|
105
|
-
return { bin: 'aw', args, cwd };
|
|
106
|
-
}
|
|
107
|
-
case 'ashlrcode': {
|
|
108
|
-
// Real CLI is 'ac' (alias 'ashlrcode'). Arg builder must be correct for
|
|
109
|
-
// when present; absence routes to builtin per M9/M10.
|
|
110
|
-
const args = ['--goal', goal];
|
|
111
|
-
return { bin: 'ac', args, cwd };
|
|
112
|
-
}
|
|
113
|
-
default:
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
97
|
+
const args = compileArgv(spec.argv, { goal, cwd, model: opts?.model, autonomous: opts?.autonomous }, spec.autonomousArgv);
|
|
98
|
+
const bin = spec.bin ?? spec.bins?.[0] ?? spec.id;
|
|
99
|
+
return { bin, args, cwd };
|
|
116
100
|
}
|
|
117
101
|
// ---------------------------------------------------------------------------
|
|
118
102
|
// phantomWrap — pure arg transform
|
|
@@ -145,28 +129,40 @@ export function phantomWrap(cmd, _cfg) {
|
|
|
145
129
|
* GUARDRAIL: MUST NOT be called against a real delegated agent during
|
|
146
130
|
* build/integrate/verify — unit tests assert argv builders only.
|
|
147
131
|
*/
|
|
148
|
-
export function spawnEngine(cmd, cfg) {
|
|
132
|
+
export function spawnEngine(cmd, cfg, opts) {
|
|
149
133
|
// CONTRACT: spawnEngine NEVER throws. Any synchronous failure (spawnSync
|
|
150
134
|
// throwing, env-bridge/phantom probe errors, etc.) is reported as
|
|
151
135
|
// { ok:false, error } rather than propagated to the caller.
|
|
152
136
|
try {
|
|
153
|
-
return spawnEngineInner(cmd, cfg);
|
|
137
|
+
return spawnEngineInner(cmd, cfg, opts);
|
|
154
138
|
}
|
|
155
139
|
catch (err) {
|
|
156
140
|
return { ok: false, output: '', error: err instanceof Error ? err.message : String(err) };
|
|
157
141
|
}
|
|
158
142
|
}
|
|
159
|
-
function spawnEngineInner(cmd, cfg) {
|
|
160
|
-
// Apply phantom-exec wrap when enabled and installed (best-effort)
|
|
143
|
+
function spawnEngineInner(cmd, cfg, opts) {
|
|
144
|
+
// Apply phantom-exec wrap when enabled and installed (best-effort).
|
|
145
|
+
// phantomWrap composes BEFORE the launcher — the OS jail wraps the whole thing.
|
|
161
146
|
let effective = cmd;
|
|
162
147
|
if (cfg.phantom?.enabled && phantomInstalled()) {
|
|
163
148
|
effective = phantomWrap(cmd, cfg);
|
|
164
149
|
}
|
|
165
|
-
|
|
166
|
-
|
|
150
|
+
// M52: apply the OS sandbox launcher when provided. The launcher wraps the
|
|
151
|
+
// already-phantom-wrapped command so the jail contains the entire chain.
|
|
152
|
+
// When absent ⇒ exactly v4 behavior (default-off parity guaranteed).
|
|
153
|
+
let spawnBin = effective.bin;
|
|
154
|
+
let spawnArgs = effective.args;
|
|
155
|
+
if (opts?.launcher) {
|
|
156
|
+
spawnBin = opts.launcher.bin;
|
|
157
|
+
spawnArgs = [...opts.launcher.prefixArgs, effective.bin, ...effective.args];
|
|
158
|
+
}
|
|
159
|
+
// M45: a caller (sandboxed-engine) may pass a hardened, containment env; else
|
|
160
|
+
// fall back to the allowlist-only env-bridge env (NON-SECRET).
|
|
161
|
+
const childEnv = opts?.env ?? withToolEnv(cfg);
|
|
162
|
+
const result = spawnSync(spawnBin, spawnArgs, {
|
|
167
163
|
encoding: 'utf8',
|
|
168
164
|
maxBuffer: 10 * 1024 * 1024, // 10 MB
|
|
169
|
-
timeout: 5 * 60 * 1000, //
|
|
165
|
+
timeout: opts?.timeoutMs ?? 5 * 60 * 1000, // hard wall-clock limit (default 5 min)
|
|
170
166
|
cwd: effective.cwd,
|
|
171
167
|
env: childEnv,
|
|
172
168
|
});
|
|
@@ -194,6 +190,29 @@ function spawnEngineInner(cmd, cfg) {
|
|
|
194
190
|
// Not JSON or unexpected shape — usage stays undefined; caller estimates
|
|
195
191
|
}
|
|
196
192
|
}
|
|
193
|
+
// M45: best-effort usage parse for codex --json (JSONL events). The token-count
|
|
194
|
+
// event shape is not contractually stable across versions, so this is a guarded
|
|
195
|
+
// scan: find any line carrying input/output token counts. Undefined on miss
|
|
196
|
+
// (caller estimates). ⚠️ Refine in M46 once the event schema is pinned.
|
|
197
|
+
if (cmd.bin === 'codex' && !usage) {
|
|
198
|
+
for (const line of rawOutput.split('\n')) {
|
|
199
|
+
const trimmed = line.trim();
|
|
200
|
+
if (!trimmed.startsWith('{'))
|
|
201
|
+
continue;
|
|
202
|
+
try {
|
|
203
|
+
const ev = JSON.parse(trimmed);
|
|
204
|
+
const u = (ev['usage'] ?? ev['token_usage'] ?? ev);
|
|
205
|
+
const tin = u['input_tokens'] ?? u['prompt_tokens'];
|
|
206
|
+
const tout = u['output_tokens'] ?? u['completion_tokens'];
|
|
207
|
+
if (typeof tin === 'number' && typeof tout === 'number') {
|
|
208
|
+
usage = { tokensIn: tin, tokensOut: tout };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// skip non-JSON / unexpected line
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
197
216
|
return { ok: true, output: rawOutput, usage };
|
|
198
217
|
}
|
|
199
218
|
//# sourceMappingURL=engines.js.map
|