@nac3/forge-cli 0.2.0-alpha.59z.123 → 0.2.0-alpha.59z.158
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/agents/bridge.d.ts +69 -0
- package/dist/agents/bridge.d.ts.map +1 -0
- package/dist/agents/bridge.js +295 -0
- package/dist/agents/bridge.js.map +1 -0
- package/dist/agents/cli_real.d.ts +38 -0
- package/dist/agents/cli_real.d.ts.map +1 -0
- package/dist/agents/cli_real.js +46 -0
- package/dist/agents/cli_real.js.map +1 -0
- package/dist/agents/config_schema.d.ts +1 -1
- package/dist/agents/config_schema.d.ts.map +1 -1
- package/dist/agents/config_schema.js +16 -0
- package/dist/agents/config_schema.js.map +1 -1
- package/dist/agents/defaults.d.ts.map +1 -1
- package/dist/agents/defaults.js.map +1 -1
- package/dist/agents/delegate.d.ts +36 -0
- package/dist/agents/delegate.d.ts.map +1 -0
- package/dist/agents/delegate.js +68 -0
- package/dist/agents/delegate.js.map +1 -0
- package/dist/agents/iterative_step.d.ts +95 -0
- package/dist/agents/iterative_step.d.ts.map +1 -0
- package/dist/agents/iterative_step.js +249 -0
- package/dist/agents/iterative_step.js.map +1 -0
- package/dist/agents/llm_step.d.ts +50 -0
- package/dist/agents/llm_step.d.ts.map +1 -0
- package/dist/agents/llm_step.js +28 -0
- package/dist/agents/llm_step.js.map +1 -0
- package/dist/agents/real_step_factory.d.ts +95 -0
- package/dist/agents/real_step_factory.d.ts.map +1 -0
- package/dist/agents/real_step_factory.js +51 -0
- package/dist/agents/real_step_factory.js.map +1 -0
- package/dist/agents/runner.d.ts +14 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +10 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/agents/runtime.d.ts +115 -0
- package/dist/agents/runtime.d.ts.map +1 -0
- package/dist/agents/runtime.js +429 -0
- package/dist/agents/runtime.js.map +1 -0
- package/dist/agents/system_prompt.d.ts +36 -0
- package/dist/agents/system_prompt.d.ts.map +1 -0
- package/dist/agents/system_prompt.js +101 -0
- package/dist/agents/system_prompt.js.map +1 -0
- package/dist/agents/types.d.ts +12 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +9 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/claude_cli.d.ts +42 -0
- package/dist/chat/claude_cli.d.ts.map +1 -0
- package/dist/chat/claude_cli.js +299 -0
- package/dist/chat/claude_cli.js.map +1 -0
- package/dist/chat/graph_snapshot.d.ts +38 -0
- package/dist/chat/graph_snapshot.d.ts.map +1 -0
- package/dist/chat/graph_snapshot.js +159 -0
- package/dist/chat/graph_snapshot.js.map +1 -0
- package/dist/chat/ingest_session.d.ts +24 -4
- package/dist/chat/ingest_session.d.ts.map +1 -1
- package/dist/chat/ingest_session.js +139 -4
- package/dist/chat/ingest_session.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +1358 -0
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts +21 -0
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +904 -4
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/nac3_invoke.d.ts +5 -0
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
- package/dist/chat/tools/nac3_invoke.js +1 -0
- package/dist/chat/tools/nac3_invoke.js.map +1 -1
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +12 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/commands/agent.d.ts +12 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +92 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/chat.d.ts +10 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +12 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/director.d.ts +37 -0
- package/dist/commands/director.d.ts.map +1 -0
- package/dist/commands/director.js +290 -0
- package/dist/commands/director.js.map +1 -0
- package/dist/core/pilot_setup.d.ts +14 -1
- package/dist/core/pilot_setup.d.ts.map +1 -1
- package/dist/core/pilot_setup.js +62 -1
- package/dist/core/pilot_setup.js.map +1 -1
- package/dist/design/yujin_design_resolver.d.ts +77 -0
- package/dist/design/yujin_design_resolver.d.ts.map +1 -0
- package/dist/design/yujin_design_resolver.js +113 -0
- package/dist/design/yujin_design_resolver.js.map +1 -0
- package/dist/docs/doctrine/default-design-system.md +120 -0
- package/dist/docs/doctrine/language-sovereignty.md +143 -0
- package/dist/docs/doctrine/testing-policy.md +211 -0
- package/dist/nac3/approval_queue.d.ts +8 -0
- package/dist/nac3/approval_queue.d.ts.map +1 -1
- package/dist/nac3/approval_queue.js.map +1 -1
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +178 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/office/excel.d.ts +22 -0
- package/dist/office/excel.d.ts.map +1 -1
- package/dist/office/excel.js +82 -0
- package/dist/office/excel.js.map +1 -1
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_focus_after_open.json +22 -0
- package/dist/qa/brain_matrix/fixtures/scenario_a11y_label_unlabeled_button.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_agent_director_consults_workflow_before_dispatch.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_analyst_extracts_then_returns.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_coder_consults_nac_spec_before_writing.json +28 -0
- package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_override_shadcn.json +45 -0
- package/dist/qa/brain_matrix/fixtures/scenario_default_design_system_use_card_template.json +44 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_delegates_to_analyst.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_no_self_delegation.json +20 -0
- package/dist/qa/brain_matrix/fixtures/scenario_director_terminal_done_marker.json +19 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_default_design_system.json +50 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_language_sovereignty.json +53 -0
- package/dist/qa/brain_matrix/fixtures/scenario_doctrine_discover_testing_policy.json +55 -0
- package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_not_conducive_spa_python.json +61 -0
- package/dist/qa/brain_matrix/fixtures/scenario_language_sovereignty_user_picks_python.json +48 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_destructive_pauses_for_r8.json +42 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_happy_path_writes_pizarron.json +76 -0
- package/dist/qa/brain_matrix/fixtures/scenario_mcp_invoke_network_timeout_graceful.json +41 -0
- package/dist/qa/brain_matrix/fixtures/scenario_no_hardcoded_color_use_token.json +47 -0
- package/dist/qa/brain_matrix/fixtures/scenario_office_excel_update_cell_picks_right_verb.json +26 -0
- package/dist/qa/brain_matrix/fixtures/scenario_scaffolder_destructive_pauses_for_approval.json +23 -0
- package/dist/qa/brain_matrix/fixtures/scenario_sumie_icon_pick_from_catalog.json +56 -0
- package/dist/qa/brain_matrix/fixtures/scenario_tester_uses_shell_exec_only.json +27 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/graph.d.ts +59 -0
- package/dist/workflow/graph.d.ts.map +1 -0
- package/dist/workflow/graph.js +137 -0
- package/dist/workflow/graph.js.map +1 -0
- package/dist/workflow/state.d.ts +34 -0
- package/dist/workflow/state.d.ts.map +1 -1
- package/dist/workflow/state.js.map +1 -1
- package/docs/doctrine/default-design-system.md +120 -0
- package/docs/doctrine/language-sovereignty.md +143 -0
- package/docs/doctrine/testing-policy.md +211 -0
- package/package.json +102 -100
- package/src/i18n/catalogs/ar.json +20 -1
- package/src/i18n/catalogs/de.json +20 -1
- package/src/i18n/catalogs/en.json +20 -21
- package/src/i18n/catalogs/es.json +20 -21
- package/src/i18n/catalogs/fr.json +20 -1
- package/src/i18n/catalogs/hi.json +20 -1
- package/src/i18n/catalogs/it.json +20 -1
- package/src/i18n/catalogs/ja.json +20 -1
- package/src/i18n/catalogs/pt.json +20 -1
- package/src/i18n/catalogs/zh.json +20 -1
- package/templates/sumi-context.template.md +57 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { buildIterativeLlmStep } from './iterative_step.js';
|
|
2
|
+
import { delegateToAgent } from './delegate.js';
|
|
3
|
+
export function buildAgentStepFactory(opts) {
|
|
4
|
+
return (def, trigger_reason) => {
|
|
5
|
+
/* Wire the delegate callback only when a runtime is provided.
|
|
6
|
+
* Without a runtime, yujin.agent.delegate falls through to the
|
|
7
|
+
* runNac3Invoke path (which the chat server may handle via a
|
|
8
|
+
* server-side handler, or which simply 404s). */
|
|
9
|
+
let delegate;
|
|
10
|
+
if (opts.runtime) {
|
|
11
|
+
const runtime = opts.runtime;
|
|
12
|
+
const bridgeRoot = opts.bridge_root;
|
|
13
|
+
delegate = async (to_slug, payload) => {
|
|
14
|
+
const r = await delegateToAgent({
|
|
15
|
+
from_slug: def.slug,
|
|
16
|
+
to_slug,
|
|
17
|
+
payload,
|
|
18
|
+
tokens_used: Math.ceil(payload.length / 4),
|
|
19
|
+
root: bridgeRoot,
|
|
20
|
+
runtime,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
ok: r.ok,
|
|
24
|
+
target_slug: r.target_slug,
|
|
25
|
+
run_status: r.run_status,
|
|
26
|
+
last_reply: r.last_reply,
|
|
27
|
+
tokens_in: r.tokens_in,
|
|
28
|
+
tokens_out: r.tokens_out,
|
|
29
|
+
error: r.error,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return buildIterativeLlmStep({
|
|
34
|
+
def,
|
|
35
|
+
claude: opts.claude,
|
|
36
|
+
runNac3Invoke: opts.runNac3Invoke,
|
|
37
|
+
project_root: opts.project_root,
|
|
38
|
+
project_name: opts.project_name,
|
|
39
|
+
forge_version: opts.forge_version,
|
|
40
|
+
trigger_reason,
|
|
41
|
+
graph_snapshot_section: opts.graph_snapshot_section,
|
|
42
|
+
workflow_section: opts.workflow_section,
|
|
43
|
+
nac3_ctx: opts.nac3_ctx,
|
|
44
|
+
legacy_run: opts.legacy_run,
|
|
45
|
+
delegate,
|
|
46
|
+
conversation_id: opts.conversation_id,
|
|
47
|
+
conversation_root: opts.conversation_root,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=real_step_factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"real_step_factory.js","sourceRoot":"","sources":["../../src/agents/real_step_factory.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,qBAAqB,EAAmB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqDhD,MAAM,UAAU,qBAAqB,CAAC,IAA0B;IAC9D,OAAO,CAAC,GAAoB,EAAE,cAAsB,EAAU,EAAE;QAC9D;;;yDAGiD;QACjD,IAAI,QAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,QAAQ,GAAG,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;gBACpD,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC;oBAC9B,SAAS,EAAI,GAAG,CAAC,IAAI;oBACrB,OAAO;oBACP,OAAO;oBACP,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC1C,IAAI,EAAS,UAAU;oBACvB,OAAO;iBACR,CAAC,CAAC;gBACH,OAAO;oBACL,EAAE,EAAY,CAAC,CAAC,EAAE;oBAClB,WAAW,EAAG,CAAC,CAAC,WAAW;oBAC3B,UAAU,EAAI,CAAC,CAAC,UAAU;oBAC1B,UAAU,EAAI,CAAC,CAAC,UAAU;oBAC1B,SAAS,EAAK,CAAC,CAAC,SAAS;oBACzB,UAAU,EAAI,CAAC,CAAC,UAAU;oBAC1B,KAAK,EAAS,CAAC,CAAC,KAAK;iBACtB,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,qBAAqB,CAAC;YAC3B,GAAG;YACH,MAAM,EAAkB,IAAI,CAAC,MAAM;YACnC,aAAa,EAAW,IAAI,CAAC,aAAa;YAC1C,YAAY,EAAY,IAAI,CAAC,YAAY;YACzC,YAAY,EAAY,IAAI,CAAC,YAAY;YACzC,aAAa,EAAW,IAAI,CAAC,aAAa;YAC1C,cAAc;YACd,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,gBAAgB,EAAQ,IAAI,CAAC,gBAAgB;YAC7C,QAAQ,EAAgB,IAAI,CAAC,QAAQ;YACrC,UAAU,EAAc,IAAI,CAAC,UAAU;YACvC,QAAQ;YACR,eAAe,EAAS,IAAI,CAAC,eAAe;YAC5C,iBAAiB,EAAO,IAAI,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/agents/runner.d.ts
CHANGED
|
@@ -46,6 +46,12 @@ export interface StepResult {
|
|
|
46
46
|
rejected_approval?: boolean;
|
|
47
47
|
/** True iff the step says "I am done, stop looping". */
|
|
48
48
|
done?: boolean;
|
|
49
|
+
/** Director sprint slice 15c -- set when one of the nac3_invoke
|
|
50
|
+
* tool results carried `nac3_panel_approval_required:true`. The
|
|
51
|
+
* runner records it in the AgentRun so the panel / CLI can
|
|
52
|
+
* surface "waiting for user". Resumption happens through
|
|
53
|
+
* /api/agent/approve (slice 10), not by re-entering this run. */
|
|
54
|
+
pending_approval?: boolean;
|
|
49
55
|
}
|
|
50
56
|
export type StepFn = (state: RunState) => Promise<StepResult>;
|
|
51
57
|
export interface RunAgentOptions {
|
|
@@ -71,6 +77,14 @@ export interface RunAgentOptions {
|
|
|
71
77
|
/** Persist the resulting AgentRun via the store. Default true.
|
|
72
78
|
* Tests pass false to keep the filesystem clean. */
|
|
73
79
|
persist?: boolean;
|
|
80
|
+
/** Director sprint phase II, slice 11 -- the project graph
|
|
81
|
+
* snapshot section the LLM step will splice into the agent's
|
|
82
|
+
* system prompt. The runner does NOT build the section itself
|
|
83
|
+
* to keep this layer agnostic; the caller (chat server / CLI)
|
|
84
|
+
* builds it via buildGraphSnapshotSection + filterSnapshotForRole
|
|
85
|
+
* and hands the rendered text in. Empty string = no panorama
|
|
86
|
+
* (graceful no-op). */
|
|
87
|
+
graph_snapshot_section?: string;
|
|
74
88
|
}
|
|
75
89
|
/** Run one agent through its lifecycle. */
|
|
76
90
|
export declare function runAgent(def: AgentDefinition, opts: RunAgentOptions): Promise<AgentRun>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9F,iEAAiE;AACjE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB;+CAC2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;+BAE2B;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9F,iEAAiE;AACjE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB;+CAC2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;+BAE2B;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;sEAIkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB;wDACoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb;;gCAE4B;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;sEACkE;IAClE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;mDAC+C;IAC/C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;wDAEoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;yDACqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;4BAMwB;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAqBD,2CAA2C;AAC3C,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,QAAQ,CAAC,CA2InB;AAID,iBAAS,YAAY,CAAC,GAAG,EAAE,QAAQ;;;;;;;;;;;;EAclC;AAGD,eAAO,MAAM,WAAW;;CAAmB,CAAC"}
|
package/dist/agents/runner.js
CHANGED
|
@@ -106,7 +106,16 @@ export async function runAgent(def, opts) {
|
|
|
106
106
|
}
|
|
107
107
|
/* Step says done */
|
|
108
108
|
if (result.done) {
|
|
109
|
-
|
|
109
|
+
/* Director closure pendiente 3 -- when the step surfaces
|
|
110
|
+
* pending_approval, the run is concluded but the agent
|
|
111
|
+
* is WAITING for the user to resolve via the R8 modal /
|
|
112
|
+
* POST /api/agent/approve. The status distinguishes this
|
|
113
|
+
* from a clean succeeded run so the panel + CLI can show
|
|
114
|
+
* a different visual state. */
|
|
115
|
+
finalStatus = result.pending_approval ? 'paused_for_approval' : 'succeeded';
|
|
116
|
+
if (result.pending_approval) {
|
|
117
|
+
killReason = 'pending R8 approval -- resolve via /api/agent/approve';
|
|
118
|
+
}
|
|
110
119
|
break;
|
|
111
120
|
}
|
|
112
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { AgentRun, AgentRunStatus } from './types.js';
|
|
2
|
+
export type RuntimeEvent = {
|
|
3
|
+
kind: 'agent_run_started';
|
|
4
|
+
slug: string;
|
|
5
|
+
trigger_reason: string;
|
|
6
|
+
at: number;
|
|
7
|
+
project_slug?: string;
|
|
8
|
+
} | {
|
|
9
|
+
kind: 'agent_run_finished';
|
|
10
|
+
slug: string;
|
|
11
|
+
run_id: string;
|
|
12
|
+
status: AgentRunStatus;
|
|
13
|
+
at: number;
|
|
14
|
+
project_slug?: string;
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'agent_run_skipped';
|
|
17
|
+
slug: string;
|
|
18
|
+
reason: string;
|
|
19
|
+
at: number;
|
|
20
|
+
project_slug?: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'bridge_drain';
|
|
23
|
+
slug: string;
|
|
24
|
+
message_count: number;
|
|
25
|
+
at: number;
|
|
26
|
+
project_slug?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Director closure pendiente 5 followup -- emitted by the server
|
|
29
|
+
* /api/agent/approve handler when a pending R8 approval row
|
|
30
|
+
* resolves AND the row carries an agent_slug. The panel uses
|
|
31
|
+
* this to clear the persistent .paused-for-approval marker on
|
|
32
|
+
* the SVG node WITHOUT waiting for a new run to start. */
|
|
33
|
+
| {
|
|
34
|
+
kind: 'agent_run_paused_resolved';
|
|
35
|
+
slug: string;
|
|
36
|
+
trace_id: string;
|
|
37
|
+
decision: 'approved' | 'rejected';
|
|
38
|
+
at: number;
|
|
39
|
+
project_slug?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Slice 2 of N-projects sprint -- emitted when a dispatch hits
|
|
42
|
+
* the global or per-project semaphore and the caller has to
|
|
43
|
+
* wait. The Activity panel surfaces this as a throttle badge
|
|
44
|
+
* so the operator understands why a click did not fire
|
|
45
|
+
* instantly. `cap` is the limit that tripped; `running` is
|
|
46
|
+
* the live counter for that scope at the moment of throttle. */
|
|
47
|
+
| {
|
|
48
|
+
kind: 'agent_run_throttled';
|
|
49
|
+
slug: string;
|
|
50
|
+
project_slug?: string;
|
|
51
|
+
scope: 'global' | 'per_project';
|
|
52
|
+
running: number;
|
|
53
|
+
cap: number;
|
|
54
|
+
at: number;
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'tick';
|
|
57
|
+
at: number;
|
|
58
|
+
};
|
|
59
|
+
/** Slice 1 of N-projects sprint -- dispatch options.
|
|
60
|
+
* project_slug defaults to 'self' (single-project legacy mode).
|
|
61
|
+
* Callers that know the project (CLI, Activity inject endpoint,
|
|
62
|
+
* panel switcher) pass an explicit slug. */
|
|
63
|
+
export interface DispatchOpts {
|
|
64
|
+
project_slug?: string;
|
|
65
|
+
}
|
|
66
|
+
export type RunnerFn = (slug: string, trigger_reason: string, opts?: DispatchOpts) => Promise<AgentRun>;
|
|
67
|
+
export interface RuntimeOpts {
|
|
68
|
+
/** Override ~/.yujin-forge for tests. */
|
|
69
|
+
root?: string;
|
|
70
|
+
/** Override Date.now for deterministic tests. */
|
|
71
|
+
clock?: () => number;
|
|
72
|
+
/** Inject the runner (real or stub). When omitted, falls back
|
|
73
|
+
* to the canonical src/agents/runner.ts (dynamic import to
|
|
74
|
+
* avoid pulling Anthropic deps in tests). */
|
|
75
|
+
runner?: RunnerFn;
|
|
76
|
+
/** Tick cadence in ms. Defaults to 5000ms. */
|
|
77
|
+
tickIntervalMs?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface RuntimeStatus {
|
|
80
|
+
running: boolean;
|
|
81
|
+
tick_interval_ms: number;
|
|
82
|
+
last_tick_at: number | null;
|
|
83
|
+
/** Slice 2 of N-projects sprint -- live concurrency snapshot. */
|
|
84
|
+
concurrency: {
|
|
85
|
+
/** Total runs in-flight (sum across all projects). */
|
|
86
|
+
global_running: number;
|
|
87
|
+
/** Cap for global runs (config: agent.runtime.max_concurrent_runs_global). */
|
|
88
|
+
global_max: number;
|
|
89
|
+
/** Per-project running counters keyed by project_slug. */
|
|
90
|
+
per_project_running: Record<string, number>;
|
|
91
|
+
/** Cap per project (config: agent.runtime.max_concurrent_runs_per_project). */
|
|
92
|
+
per_project_max: number;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface Runtime {
|
|
96
|
+
start(): void;
|
|
97
|
+
stop(): Promise<void>;
|
|
98
|
+
status(): RuntimeStatus;
|
|
99
|
+
dispatchAgent(slug: string, trigger_reason: string, opts?: DispatchOpts): Promise<AgentRun>;
|
|
100
|
+
tickNow(): Promise<void>;
|
|
101
|
+
on(event: 'event', cb: (e: RuntimeEvent) => void): void;
|
|
102
|
+
off(event: 'event', cb: (e: RuntimeEvent) => void): void;
|
|
103
|
+
/** Director sprint slice 5 -- the agent-store root the runtime
|
|
104
|
+
* was constructed with. The panel endpoints need this so they
|
|
105
|
+
* can list the same definitions the runtime sees. */
|
|
106
|
+
getAgentsRoot(): string;
|
|
107
|
+
/** Director closure pendiente 5 followup -- the
|
|
108
|
+
* /api/agent/approve handler emits agent_run_paused_resolved
|
|
109
|
+
* via this method when a pending row carrying agent_slug
|
|
110
|
+
* resolves. The SSE bus forwards it to the panel SVG which
|
|
111
|
+
* clears the amber dashed marker. */
|
|
112
|
+
emitExternal(e: RuntimeEvent): void;
|
|
113
|
+
}
|
|
114
|
+
export declare function createRuntime(opts?: RuntimeOpts): Runtime;
|
|
115
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/agents/runtime.ts"],"names":[],"mappings":"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"}
|