@a5c-ai/omni 5.0.1-staging.016f0b0e8119

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.
Files changed (56) hide show
  1. package/README.md +34 -0
  2. package/dist/cli/amuxEventsFormatter.d.ts +26 -0
  3. package/dist/cli/amuxEventsFormatter.d.ts.map +1 -0
  4. package/dist/cli/amuxEventsFormatter.js +86 -0
  5. package/dist/cli/args/argFlags.d.ts +6 -0
  6. package/dist/cli/args/argFlags.d.ts.map +1 -0
  7. package/dist/cli/args/argFlags.js +72 -0
  8. package/dist/cli/args/argPositionals.d.ts +3 -0
  9. package/dist/cli/args/argPositionals.d.ts.map +1 -0
  10. package/dist/cli/args/argPositionals.js +18 -0
  11. package/dist/cli/args/index.d.ts +4 -0
  12. package/dist/cli/args/index.d.ts.map +1 -0
  13. package/dist/cli/args/index.js +75 -0
  14. package/dist/cli/args/types.d.ts +13 -0
  15. package/dist/cli/args/types.d.ts.map +1 -0
  16. package/dist/cli/args/types.js +2 -0
  17. package/dist/cli/commands/daemon.d.ts +31 -0
  18. package/dist/cli/commands/daemon.d.ts.map +1 -0
  19. package/dist/cli/commands/daemon.js +156 -0
  20. package/dist/cli/commands/harness/createRun.d.ts +3 -0
  21. package/dist/cli/commands/harness/createRun.d.ts.map +1 -0
  22. package/dist/cli/commands/harness/createRun.js +8 -0
  23. package/dist/cli/commands/harness/resumeRun.d.ts +20 -0
  24. package/dist/cli/commands/harness/resumeRun.d.ts.map +1 -0
  25. package/dist/cli/commands/harness/resumeRun.js +341 -0
  26. package/dist/cli/commands/jsonlInteractive.d.ts +35 -0
  27. package/dist/cli/commands/jsonlInteractive.d.ts.map +1 -0
  28. package/dist/cli/commands/jsonlInteractive.js +302 -0
  29. package/dist/cli/commands/mcpServe.d.ts +18 -0
  30. package/dist/cli/commands/mcpServe.d.ts.map +1 -0
  31. package/dist/cli/commands/mcpServe.js +59 -0
  32. package/dist/cli/commands/session/history.d.ts +14 -0
  33. package/dist/cli/commands/session/history.d.ts.map +1 -0
  34. package/dist/cli/commands/session/history.js +100 -0
  35. package/dist/cli/commands/tui.d.ts +23 -0
  36. package/dist/cli/commands/tui.d.ts.map +1 -0
  37. package/dist/cli/commands/tui.js +183 -0
  38. package/dist/cli/dispatch.d.ts +4 -0
  39. package/dist/cli/dispatch.d.ts.map +1 -0
  40. package/dist/cli/dispatch.js +330 -0
  41. package/dist/cli/main.d.ts +7 -0
  42. package/dist/cli/main.d.ts.map +1 -0
  43. package/dist/cli/main.js +41 -0
  44. package/dist/cli/program.d.ts +7 -0
  45. package/dist/cli/program.d.ts.map +1 -0
  46. package/dist/cli/program.js +8 -0
  47. package/dist/cli/ui.d.ts +9 -0
  48. package/dist/cli/ui.d.ts.map +1 -0
  49. package/dist/cli/ui.js +125 -0
  50. package/dist/index.d.ts +18 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +59 -0
  53. package/dist/prompts/commandTemplates.d.ts +3 -0
  54. package/dist/prompts/commandTemplates.d.ts.map +1 -0
  55. package/dist/prompts/commandTemplates.js +238 -0
  56. package/package.json +76 -0
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # @a5c-ai/omni
2
+
3
+ Omni is the unified agent product that composes every layer of the babysitter agent stack into a single distributable binary.
4
+
5
+ ## Architecture
6
+
7
+ | Layer | Package | Role |
8
+ |-------|---------|------|
9
+ | L4 | `@a5c-ai/agent-core` | Loop, subagent, context, synthesis interfaces |
10
+ | L5 | `@a5c-ai/agent-runtime` | Daemon, session, cost, observability, telemetry |
11
+ | L6 | `@a5c-ai/agent-platform` | Harness integration, governance, interaction, storage |
12
+ | Mux | `@a5c-ai/agent-mux` | Agent multiplexer |
13
+ | TUI | `@a5c-ai/babysitter-tui-plugins` | TUI plugins for cost, governance, status |
14
+
15
+ Omni re-exports the full public API from all layers and owns the single `omni` CLI binary implementation.
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ # As a CLI
21
+ npx @a5c-ai/omni <command> [options]
22
+
23
+ # As a library
24
+ import { createBabysitterAgentCli } from "@a5c-ai/omni/cli";
25
+ import { createAgentCoreSession } from "@a5c-ai/omni";
26
+ ```
27
+
28
+ ## Development
29
+
30
+ ```bash
31
+ npm run build # Build (builds dependencies first)
32
+ npm run test # Run tests
33
+ npm run clean # Remove build artifacts
34
+ ```
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Formats omni invocation results as agent-mux compatible
3
+ * JSONL events.
4
+ *
5
+ * When `--output-format amux-events` is used, the `invoke` command
6
+ * outputs one JSON object per line to stdout so agent-mux's babysitter
7
+ * adapter can parse our output as a normalised event stream.
8
+ *
9
+ * @module cli/amuxEventsFormatter
10
+ */
11
+ import type { HarnessInvokeResult } from "@a5c-ai/agent-platform/harness";
12
+ /**
13
+ * Convert a HarnessInvokeResult into an array of JSONL strings
14
+ * representing agent-mux compatible events.
15
+ *
16
+ * Events emitted:
17
+ * 1. `session_start` -- marks the beginning of the invocation
18
+ * 2. `text_delta` -- the full output text (one event)
19
+ * 3. `cost` -- duration metadata
20
+ * 4. `session_end` -- marks the end, carries exit code and success flag
21
+ *
22
+ * If the result contains an error (exitCode !== 0), an `error` event is
23
+ * emitted before `session_end`.
24
+ */
25
+ export declare function formatResultAsAmuxEvents(harness: string, result: HarnessInvokeResult): string[];
26
+ //# sourceMappingURL=amuxEventsFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amuxEventsFormatter.d.ts","sourceRoot":"","sources":["../../src/cli/amuxEventsFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAe1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,GAC1B,MAAM,EAAE,CAiEV"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Formats omni invocation results as agent-mux compatible
4
+ * JSONL events.
5
+ *
6
+ * When `--output-format amux-events` is used, the `invoke` command
7
+ * outputs one JSON object per line to stdout so agent-mux's babysitter
8
+ * adapter can parse our output as a normalised event stream.
9
+ *
10
+ * @module cli/amuxEventsFormatter
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.formatResultAsAmuxEvents = formatResultAsAmuxEvents;
14
+ const harness_1 = require("@a5c-ai/agent-platform/harness");
15
+ /**
16
+ * Convert a HarnessInvokeResult into an array of JSONL strings
17
+ * representing agent-mux compatible events.
18
+ *
19
+ * Events emitted:
20
+ * 1. `session_start` -- marks the beginning of the invocation
21
+ * 2. `text_delta` -- the full output text (one event)
22
+ * 3. `cost` -- duration metadata
23
+ * 4. `session_end` -- marks the end, carries exit code and success flag
24
+ *
25
+ * If the result contains an error (exitCode !== 0), an `error` event is
26
+ * emitted before `session_end`.
27
+ */
28
+ function formatResultAsAmuxEvents(harness, result) {
29
+ const agent = (0, harness_1.hasAmuxAdapter)(harness)
30
+ ? (0, harness_1.mapHarnessToAmuxAdapter)(harness)
31
+ : harness;
32
+ const runId = `babysitter-${Date.now()}`;
33
+ const now = new Date().toISOString();
34
+ const lines = [];
35
+ const emit = (event) => {
36
+ lines.push(JSON.stringify(event));
37
+ };
38
+ // 1. Session start
39
+ emit({
40
+ type: "session_start",
41
+ runId,
42
+ agent,
43
+ timestamp: now,
44
+ harness,
45
+ });
46
+ // 2. Full text output as a single text_delta
47
+ if (result.output) {
48
+ emit({
49
+ type: "text_delta",
50
+ runId,
51
+ agent,
52
+ timestamp: now,
53
+ text: result.output,
54
+ });
55
+ }
56
+ // 3. Cost / duration
57
+ emit({
58
+ type: "cost",
59
+ runId,
60
+ agent,
61
+ timestamp: now,
62
+ durationMs: result.duration,
63
+ });
64
+ // 4. Error (if any)
65
+ if (!result.success) {
66
+ emit({
67
+ type: "error",
68
+ runId,
69
+ agent,
70
+ timestamp: now,
71
+ exitCode: result.exitCode,
72
+ message: result.output,
73
+ });
74
+ }
75
+ // 5. Session end
76
+ emit({
77
+ type: "session_end",
78
+ runId,
79
+ agent,
80
+ timestamp: now,
81
+ exitCode: result.exitCode,
82
+ success: result.success,
83
+ durationMs: result.duration,
84
+ });
85
+ return lines;
86
+ }
@@ -0,0 +1,6 @@
1
+ import type { HarnessParsedArgs } from "./types";
2
+ type FlagParser = (parsed: HarnessParsedArgs, args: string[], index: number) => number;
3
+ export declare const BOOLEAN_FLAGS: Record<string, (parsed: HarnessParsedArgs) => void>;
4
+ export declare const FLAG_PARSERS: Record<string, FlagParser>;
5
+ export {};
6
+ //# sourceMappingURL=argFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argFlags.d.ts","sourceRoot":"","sources":["../../../src/cli/args/argFlags.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAcvF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAK7E,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmDnD,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FLAG_PARSERS = exports.BOOLEAN_FLAGS = void 0;
4
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
5
+ function expectFlagValue(args, index, flag) {
6
+ const value = args[index];
7
+ if (!value) {
8
+ throw new Error(`${flag} requires a value`);
9
+ }
10
+ return value;
11
+ }
12
+ function parseIntegerFlag(raw) {
13
+ return parseInt(raw, 10);
14
+ }
15
+ exports.BOOLEAN_FLAGS = {
16
+ ...babysitter_sdk_1.BOOLEAN_FLAGS,
17
+ "--mcp": (parsed) => {
18
+ parsed.anycliMcp = true;
19
+ },
20
+ };
21
+ exports.FLAG_PARSERS = {
22
+ ...babysitter_sdk_1.FLAG_PARSERS,
23
+ "--transport": (parsed, args, index) => {
24
+ parsed.transport = expectFlagValue(args, index + 1, "--transport");
25
+ parsed.anycliTransport = parsed.transport;
26
+ return index + 1;
27
+ },
28
+ "--service": (parsed, args, index) => {
29
+ parsed.anycliService = expectFlagValue(args, index + 1, "--service");
30
+ return index + 1;
31
+ },
32
+ "--scope": (parsed, args, index) => {
33
+ parsed.anycliScope = expectFlagValue(args, index + 1, "--scope");
34
+ return index + 1;
35
+ },
36
+ "--auth-file": (parsed, args, index) => {
37
+ parsed.anycliAuthFile = expectFlagValue(args, index + 1, "--auth-file");
38
+ return index + 1;
39
+ },
40
+ "--port": (parsed, args, index) => {
41
+ parsed.port = parseIntegerFlag(expectFlagValue(args, index + 1, "--port"));
42
+ return index + 1;
43
+ },
44
+ "--host": (parsed, args, index) => {
45
+ parsed.host = expectFlagValue(args, index + 1, "--host");
46
+ return index + 1;
47
+ },
48
+ "--auth-token": (parsed, args, index) => {
49
+ parsed.authToken = expectFlagValue(args, index + 1, "--auth-token");
50
+ return index + 1;
51
+ },
52
+ "--ws-ping-interval": (parsed, args, index) => {
53
+ parsed.wsPingInterval = parseIntegerFlag(expectFlagValue(args, index + 1, "--ws-ping-interval"));
54
+ return index + 1;
55
+ },
56
+ "--ws-grace-period": (parsed, args, index) => {
57
+ parsed.wsGracePeriod = parseIntegerFlag(expectFlagValue(args, index + 1, "--ws-grace-period"));
58
+ return index + 1;
59
+ },
60
+ "--ws-max-mps": (parsed, args, index) => {
61
+ parsed.wsMaxMps = parseIntegerFlag(expectFlagValue(args, index + 1, "--ws-max-mps"));
62
+ return index + 1;
63
+ },
64
+ "--output-format": (parsed, args, index) => {
65
+ const value = expectFlagValue(args, index + 1, "--output-format");
66
+ if (value !== "json" && value !== "text" && value !== "amux-events") {
67
+ throw new Error(`--output-format must be one of: json, text, amux-events (got "${value}")`);
68
+ }
69
+ parsed.outputFormat = value;
70
+ return index + 1;
71
+ },
72
+ };
@@ -0,0 +1,3 @@
1
+ import type { HarnessParsedArgs } from "./types";
2
+ export declare function applyPositionalArgs(parsed: HarnessParsedArgs, positionals: string[]): void;
3
+ //# sourceMappingURL=argPositionals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argPositionals.d.ts","sourceRoot":"","sources":["../../../src/cli/args/argPositionals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,QAgBnF"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyPositionalArgs = applyPositionalArgs;
4
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
5
+ function applyPositionalArgs(parsed, positionals) {
6
+ (0, babysitter_sdk_1.applyPositionalArgs)(parsed, positionals);
7
+ if (parsed.command === "anycli") {
8
+ if (!parsed.anycliService &&
9
+ positionals.length > 0 &&
10
+ /^[a-zA-Z0-9-]+$/.test(positionals[0])) {
11
+ [parsed.anycliService] = positionals;
12
+ positionals = positionals.slice(1);
13
+ }
14
+ if (positionals.length > 0 && !parsed.prompt) {
15
+ parsed.prompt = positionals.join(" ");
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,4 @@
1
+ import type { HarnessParsedArgs } from "./types";
2
+ export declare function parseHarnessArgs(argv: string[]): HarnessParsedArgs;
3
+ export type { HarnessParsedArgs };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/args/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAwCjD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAuClE;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHarnessArgs = parseHarnessArgs;
4
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
5
+ const argFlags_1 = require("./argFlags");
6
+ const argPositionals_1 = require("./argPositionals");
7
+ function createDefaultParsedArgs(initialCommand) {
8
+ return {
9
+ command: initialCommand,
10
+ runsDir: (0, babysitter_sdk_1.resolveRunsDir)(),
11
+ json: false,
12
+ dryRun: false,
13
+ verbose: false,
14
+ helpRequested: false,
15
+ helpSurface: "agent",
16
+ pendingOnly: false,
17
+ reverseOrder: false,
18
+ showConfig: false,
19
+ showStrata: false,
20
+ tree: false,
21
+ rich: false,
22
+ defaultsOnly: false,
23
+ };
24
+ }
25
+ function normalizeInitialCommand(parsed) {
26
+ if (parsed.command === "--help" || parsed.command === "-h") {
27
+ parsed.command = undefined;
28
+ parsed.helpRequested = true;
29
+ return;
30
+ }
31
+ if (parsed.command === "--help-human") {
32
+ parsed.command = undefined;
33
+ parsed.helpRequested = true;
34
+ parsed.helpSurface = "human";
35
+ return;
36
+ }
37
+ if (parsed.command === "--version" || parsed.command === "-v") {
38
+ parsed.command = "version";
39
+ }
40
+ }
41
+ function parseHarnessArgs(argv) {
42
+ const [initialCommand, ...rest] = argv;
43
+ const parsed = createDefaultParsedArgs(initialCommand);
44
+ normalizeInitialCommand(parsed);
45
+ const positionals = [];
46
+ for (let index = 0; index < rest.length; index += 1) {
47
+ const arg = rest[index];
48
+ if (arg === "--help" || arg === "-h") {
49
+ parsed.helpRequested = true;
50
+ continue;
51
+ }
52
+ if (arg === "--help-human") {
53
+ parsed.helpRequested = true;
54
+ parsed.helpSurface = "human";
55
+ continue;
56
+ }
57
+ if (arg === "--version" || arg === "-v") {
58
+ parsed.command = "version";
59
+ continue;
60
+ }
61
+ const applyBoolean = argFlags_1.BOOLEAN_FLAGS[arg];
62
+ if (applyBoolean) {
63
+ applyBoolean(parsed);
64
+ continue;
65
+ }
66
+ const parseFlag = argFlags_1.FLAG_PARSERS[arg];
67
+ if (parseFlag) {
68
+ index = parseFlag(parsed, rest, index);
69
+ continue;
70
+ }
71
+ positionals.push(arg);
72
+ }
73
+ (0, argPositionals_1.applyPositionalArgs)(parsed, positionals);
74
+ return parsed;
75
+ }
@@ -0,0 +1,13 @@
1
+ import type { ParsedArgs as CoreParsedArgs } from "@a5c-ai/babysitter-sdk";
2
+ /** Supported output formats for harness invocation results. */
3
+ export type HarnessOutputFormat = "json" | "text" | "amux-events";
4
+ export interface HarnessParsedArgs extends CoreParsedArgs {
5
+ anycliService?: string;
6
+ anycliScope?: string;
7
+ anycliMcp?: boolean;
8
+ anycliAuthFile?: string;
9
+ anycliTransport?: string;
10
+ /** Output format for omni invoke results. */
11
+ outputFormat?: HarnessOutputFormat;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/args/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE3E,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAElE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,31 @@
1
+ /**
2
+ * GAP-REMOTE-001: CLI commands for daemon lifecycle management.
3
+ *
4
+ * daemon:start — Start the background daemon
5
+ * daemon:stop — Stop the running daemon
6
+ * daemon:status — Check daemon status
7
+ */
8
+ export declare function handleDaemonStart(args: {
9
+ daemonDir?: string;
10
+ workspace?: string;
11
+ configPath?: string;
12
+ foreground?: boolean;
13
+ json?: boolean;
14
+ }): Promise<number>;
15
+ export declare function handleDaemonStop(args: {
16
+ daemonDir?: string;
17
+ gracePeriodMs?: number;
18
+ json?: boolean;
19
+ }): Promise<number>;
20
+ export declare function handleDaemonStatus(args: {
21
+ daemonDir?: string;
22
+ json?: boolean;
23
+ }): Promise<number>;
24
+ /**
25
+ * daemon:run — Internal command invoked by the background daemon process.
26
+ * Loads config from daemon.json and runs the daemon loop until SIGTERM.
27
+ */
28
+ export declare function handleDaemonRun(args: {
29
+ daemonDir?: string;
30
+ }): Promise<number>;
31
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiClB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBlB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BlB"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ /**
3
+ * GAP-REMOTE-001: CLI commands for daemon lifecycle management.
4
+ *
5
+ * daemon:start — Start the background daemon
6
+ * daemon:stop — Stop the running daemon
7
+ * daemon:status — Check daemon status
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.handleDaemonStart = handleDaemonStart;
44
+ exports.handleDaemonStop = handleDaemonStop;
45
+ exports.handleDaemonStatus = handleDaemonStatus;
46
+ exports.handleDaemonRun = handleDaemonRun;
47
+ const daemon_1 = require("@a5c-ai/agent-platform/daemon");
48
+ const path = __importStar(require("node:path"));
49
+ const os = __importStar(require("node:os"));
50
+ const daemon_2 = require("@a5c-ai/agent-platform/daemon");
51
+ const daemon_3 = require("@a5c-ai/agent-platform/daemon");
52
+ function defaultDaemonDir() {
53
+ return path.join(os.homedir(), ".a5c", "daemon");
54
+ }
55
+ async function handleDaemonStart(args) {
56
+ const daemonDir = args.daemonDir ?? defaultDaemonDir();
57
+ const workspace = args.workspace ?? process.cwd();
58
+ let config;
59
+ if (args.configPath) {
60
+ const configResult = await (0, daemon_1.loadDaemonConfig)(args.configPath);
61
+ if (!configResult.ok) {
62
+ const output = args.json
63
+ ? JSON.stringify(configResult)
64
+ : `Error: ${configResult.error.message}`;
65
+ process.stdout.write(output + "\n");
66
+ return 1;
67
+ }
68
+ config = configResult.data;
69
+ }
70
+ const result = await (0, daemon_1.startDaemon)({
71
+ daemonDir,
72
+ workspace,
73
+ foreground: args.foreground ?? false,
74
+ config: config ?? { workspace, triggers: [] },
75
+ });
76
+ if (args.json) {
77
+ process.stdout.write(JSON.stringify(result) + "\n");
78
+ }
79
+ else if (result.ok) {
80
+ process.stdout.write(`Daemon started (PID ${result.data.pid})\n`);
81
+ }
82
+ else {
83
+ process.stdout.write(`Error: ${result.error.message}\n`);
84
+ }
85
+ return result.ok ? 0 : 1;
86
+ }
87
+ async function handleDaemonStop(args) {
88
+ const daemonDir = args.daemonDir ?? defaultDaemonDir();
89
+ const result = await (0, daemon_1.stopDaemon)({
90
+ daemonDir,
91
+ gracePeriodMs: args.gracePeriodMs,
92
+ });
93
+ if (args.json) {
94
+ process.stdout.write(JSON.stringify(result) + "\n");
95
+ }
96
+ else if (result.ok) {
97
+ process.stdout.write(`Daemon stopped (PID ${result.data.pid})\n`);
98
+ }
99
+ else {
100
+ process.stdout.write(`Error: ${result.error.message}\n`);
101
+ }
102
+ return result.ok ? 0 : 1;
103
+ }
104
+ async function handleDaemonStatus(args) {
105
+ const daemonDir = args.daemonDir ?? defaultDaemonDir();
106
+ const result = await (0, daemon_1.getDaemonStatus)({ daemonDir });
107
+ if (args.json) {
108
+ process.stdout.write(JSON.stringify(result) + "\n");
109
+ }
110
+ else if (result.ok) {
111
+ if (result.data.running) {
112
+ process.stdout.write(`Daemon running (PID ${result.data.pid}, uptime ${result.data.uptime}s, ` +
113
+ `triggers: ${result.data.activeTriggers}, pending: ${result.data.pendingRuns})\n`);
114
+ }
115
+ else {
116
+ process.stdout.write("Daemon not running\n");
117
+ }
118
+ }
119
+ else {
120
+ process.stdout.write(`Error: ${result.error.message}\n`);
121
+ }
122
+ return result.ok ? 0 : 1;
123
+ }
124
+ /**
125
+ * daemon:run — Internal command invoked by the background daemon process.
126
+ * Loads config from daemon.json and runs the daemon loop until SIGTERM.
127
+ */
128
+ async function handleDaemonRun(args) {
129
+ const daemonDir = args.daemonDir ?? defaultDaemonDir();
130
+ const metadataPath = path.join(daemonDir, "daemon.json");
131
+ let config;
132
+ try {
133
+ const { promises: fsPromises } = await Promise.resolve().then(() => __importStar(require("node:fs")));
134
+ const raw = await fsPromises.readFile(metadataPath, "utf-8");
135
+ const parsed = JSON.parse(raw);
136
+ config = parsed;
137
+ }
138
+ catch {
139
+ process.stderr.write(`daemon:run — failed to read ${metadataPath}\n`);
140
+ return 1;
141
+ }
142
+ const ac = new AbortController();
143
+ process.on("SIGTERM", () => ac.abort());
144
+ process.on("SIGINT", () => ac.abort());
145
+ await (0, daemon_1.runDaemonLoop)(config, {
146
+ signal: ac.signal,
147
+ logDir: daemonDir,
148
+ onTrigger: async (trigger) => {
149
+ if (!(0, daemon_3.isAutomationTriggerEvent)(trigger)) {
150
+ return;
151
+ }
152
+ await (0, daemon_2.executeAutomationTrigger)(trigger);
153
+ },
154
+ });
155
+ return 0;
156
+ }
@@ -0,0 +1,3 @@
1
+ export { handleHarnessCreateRun, handleSessionCreate, runOrchestrationPhase, selectHarness, } from "@a5c-ai/agent-platform/harness";
2
+ export type { HarnessCreateRunArgs, SessionCreateArgs, } from "@a5c-ai/agent-platform/harness";
3
+ //# sourceMappingURL=createRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRun.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/harness/createRun.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GACd,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectHarness = exports.runOrchestrationPhase = exports.handleSessionCreate = exports.handleHarnessCreateRun = void 0;
4
+ var harness_1 = require("@a5c-ai/agent-platform/harness");
5
+ Object.defineProperty(exports, "handleHarnessCreateRun", { enumerable: true, get: function () { return harness_1.handleHarnessCreateRun; } });
6
+ Object.defineProperty(exports, "handleSessionCreate", { enumerable: true, get: function () { return harness_1.handleSessionCreate; } });
7
+ Object.defineProperty(exports, "runOrchestrationPhase", { enumerable: true, get: function () { return harness_1.runOrchestrationPhase; } });
8
+ Object.defineProperty(exports, "selectHarness", { enumerable: true, get: function () { return harness_1.selectHarness; } });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * resume-run command handler.
3
+ * Uses an agentic Pi session to discover existing runs, present them to the
4
+ * user, assess state, and resume orchestration via handleHarnessCreateRun.
5
+ */
6
+ import { type OutputMode } from "@a5c-ai/agent-platform/harness";
7
+ export interface SessionResumeArgs {
8
+ runId?: string;
9
+ harness?: string;
10
+ workspace?: string;
11
+ model?: string;
12
+ maxIterations?: number;
13
+ runsDir?: string;
14
+ json: boolean;
15
+ verbose: boolean;
16
+ interactive?: boolean;
17
+ outputMode?: OutputMode;
18
+ }
19
+ export declare function handleHarnessResumeRun(args: SessionResumeArgs): Promise<number>;
20
+ //# sourceMappingURL=resumeRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resumeRun.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/harness/resumeRun.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAML,KAAK,UAAU,EAKhB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAiDD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0TrF"}