@mono-agent/agent-app 0.3.0 → 0.4.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.
Files changed (186) hide show
  1. package/README.md +24 -10
  2. package/dist/adapter-send-tools-main.d.ts +3 -0
  3. package/dist/adapter-send-tools-main.d.ts.map +1 -0
  4. package/dist/adapter-send-tools-main.js +20 -0
  5. package/dist/adapter-send-tools-main.js.map +1 -0
  6. package/dist/adapter-send-tools.d.ts +125 -0
  7. package/dist/adapter-send-tools.d.ts.map +1 -0
  8. package/dist/adapter-send-tools.js +629 -0
  9. package/dist/adapter-send-tools.js.map +1 -0
  10. package/dist/app-config.d.ts +86 -26
  11. package/dist/app-config.d.ts.map +1 -1
  12. package/dist/app-config.js +284 -90
  13. package/dist/app-config.js.map +1 -1
  14. package/dist/app.d.ts +51 -20
  15. package/dist/app.d.ts.map +1 -1
  16. package/dist/app.js +889 -119
  17. package/dist/app.js.map +1 -1
  18. package/dist/artifact-retention.d.ts +32 -0
  19. package/dist/artifact-retention.d.ts.map +1 -0
  20. package/dist/artifact-retention.js +111 -0
  21. package/dist/artifact-retention.js.map +1 -0
  22. package/dist/audit-runs.d.ts +12 -0
  23. package/dist/audit-runs.d.ts.map +1 -0
  24. package/dist/audit-runs.js +68 -0
  25. package/dist/audit-runs.js.map +1 -0
  26. package/dist/backfill.d.ts +75 -0
  27. package/dist/backfill.d.ts.map +1 -0
  28. package/dist/backfill.js +350 -0
  29. package/dist/backfill.js.map +1 -0
  30. package/dist/background.d.ts +8 -5
  31. package/dist/background.d.ts.map +1 -1
  32. package/dist/background.js +279 -53
  33. package/dist/background.js.map +1 -1
  34. package/dist/broadcast-recorder.d.ts +27 -0
  35. package/dist/broadcast-recorder.d.ts.map +1 -0
  36. package/dist/broadcast-recorder.js +82 -0
  37. package/dist/broadcast-recorder.js.map +1 -0
  38. package/dist/channel-config-view.d.ts +28 -0
  39. package/dist/channel-config-view.d.ts.map +1 -0
  40. package/dist/channel-config-view.js +79 -0
  41. package/dist/channel-config-view.js.map +1 -0
  42. package/dist/channel-gate.d.ts +22 -0
  43. package/dist/channel-gate.d.ts.map +1 -0
  44. package/dist/channel-gate.js +35 -0
  45. package/dist/channel-gate.js.map +1 -0
  46. package/dist/channel-plugins.d.ts +39 -0
  47. package/dist/channel-plugins.d.ts.map +1 -0
  48. package/dist/channel-plugins.js +346 -0
  49. package/dist/channel-plugins.js.map +1 -0
  50. package/dist/channels.d.ts +62 -66
  51. package/dist/channels.d.ts.map +1 -1
  52. package/dist/channels.js +850 -120
  53. package/dist/channels.js.map +1 -1
  54. package/dist/cli.d.ts +103 -4
  55. package/dist/cli.d.ts.map +1 -1
  56. package/dist/cli.js +984 -112
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config-reference.d.ts +24 -0
  59. package/dist/config-reference.d.ts.map +1 -0
  60. package/dist/config-reference.js +580 -0
  61. package/dist/config-reference.js.map +1 -0
  62. package/dist/configured-agent.d.ts +104 -0
  63. package/dist/configured-agent.d.ts.map +1 -0
  64. package/dist/configured-agent.js +578 -0
  65. package/dist/configured-agent.js.map +1 -0
  66. package/dist/consumer-contract.d.ts +36 -0
  67. package/dist/consumer-contract.d.ts.map +1 -0
  68. package/dist/consumer-contract.js +290 -0
  69. package/dist/consumer-contract.js.map +1 -0
  70. package/dist/doctor.d.ts +17 -0
  71. package/dist/doctor.d.ts.map +1 -1
  72. package/dist/doctor.js +392 -95
  73. package/dist/doctor.js.map +1 -1
  74. package/dist/index.d.ts +14 -6
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +7 -3
  77. package/dist/index.js.map +1 -1
  78. package/dist/init.d.ts +23 -7
  79. package/dist/init.d.ts.map +1 -1
  80. package/dist/init.js +91 -26
  81. package/dist/init.js.map +1 -1
  82. package/dist/install-skill.d.ts +1 -1
  83. package/dist/install-skill.js +2 -2
  84. package/dist/install-skill.js.map +1 -1
  85. package/dist/interaction-bridge.d.ts +72 -0
  86. package/dist/interaction-bridge.d.ts.map +1 -0
  87. package/dist/interaction-bridge.js +354 -0
  88. package/dist/interaction-bridge.js.map +1 -0
  89. package/dist/launchd.d.ts +0 -2
  90. package/dist/launchd.d.ts.map +1 -1
  91. package/dist/launchd.js +0 -2
  92. package/dist/launchd.js.map +1 -1
  93. package/dist/memory-command.d.ts +10 -0
  94. package/dist/memory-command.d.ts.map +1 -0
  95. package/dist/memory-command.js +649 -0
  96. package/dist/memory-command.js.map +1 -0
  97. package/dist/memory-recall-main.d.ts +3 -0
  98. package/dist/memory-recall-main.d.ts.map +1 -0
  99. package/dist/memory-recall-main.js +30 -0
  100. package/dist/memory-recall-main.js.map +1 -0
  101. package/dist/memory-recall.d.ts +147 -0
  102. package/dist/memory-recall.d.ts.map +1 -0
  103. package/dist/memory-recall.js +345 -0
  104. package/dist/memory-recall.js.map +1 -0
  105. package/dist/memory-rituals.d.ts +8 -11
  106. package/dist/memory-rituals.d.ts.map +1 -1
  107. package/dist/memory-rituals.js +26 -25
  108. package/dist/memory-rituals.js.map +1 -1
  109. package/dist/metrics.d.ts +13 -0
  110. package/dist/metrics.d.ts.map +1 -0
  111. package/dist/metrics.js +105 -0
  112. package/dist/metrics.js.map +1 -0
  113. package/dist/notify-destinations.d.ts +23 -0
  114. package/dist/notify-destinations.d.ts.map +1 -0
  115. package/dist/notify-destinations.js +79 -0
  116. package/dist/notify-destinations.js.map +1 -0
  117. package/dist/posted-message-index.d.ts +61 -0
  118. package/dist/posted-message-index.d.ts.map +1 -0
  119. package/dist/posted-message-index.js +178 -0
  120. package/dist/posted-message-index.js.map +1 -0
  121. package/dist/proactive-notify.d.ts +32 -0
  122. package/dist/proactive-notify.d.ts.map +1 -0
  123. package/dist/proactive-notify.js +62 -0
  124. package/dist/proactive-notify.js.map +1 -0
  125. package/dist/recipes/base.d.ts +15 -0
  126. package/dist/recipes/base.d.ts.map +1 -0
  127. package/dist/recipes/base.js +51 -0
  128. package/dist/recipes/base.js.map +1 -0
  129. package/dist/recipes/catalog.d.ts +4 -0
  130. package/dist/recipes/catalog.d.ts.map +1 -0
  131. package/dist/recipes/catalog.js +509 -0
  132. package/dist/recipes/catalog.js.map +1 -0
  133. package/dist/recipes/index.d.ts +11 -0
  134. package/dist/recipes/index.d.ts.map +1 -0
  135. package/dist/recipes/index.js +14 -0
  136. package/dist/recipes/index.js.map +1 -0
  137. package/dist/recipes/types.d.ts +70 -0
  138. package/dist/recipes/types.d.ts.map +1 -0
  139. package/dist/recipes/types.js +15 -0
  140. package/dist/recipes/types.js.map +1 -0
  141. package/dist/request-model-override.d.ts +67 -0
  142. package/dist/request-model-override.d.ts.map +1 -0
  143. package/dist/request-model-override.js +96 -0
  144. package/dist/request-model-override.js.map +1 -0
  145. package/dist/runs-health.d.ts +22 -0
  146. package/dist/runs-health.d.ts.map +1 -0
  147. package/dist/runs-health.js +144 -0
  148. package/dist/runs-health.js.map +1 -0
  149. package/dist/seen-conversations.d.ts +22 -0
  150. package/dist/seen-conversations.d.ts.map +1 -0
  151. package/dist/seen-conversations.js +120 -0
  152. package/dist/seen-conversations.js.map +1 -0
  153. package/dist/sessions.d.ts +21 -0
  154. package/dist/sessions.d.ts.map +1 -0
  155. package/dist/sessions.js +45 -0
  156. package/dist/sessions.js.map +1 -0
  157. package/dist/setup.d.ts +29 -0
  158. package/dist/setup.d.ts.map +1 -0
  159. package/dist/setup.js +97 -0
  160. package/dist/setup.js.map +1 -0
  161. package/dist/trigger-overrides.d.ts +17 -0
  162. package/dist/trigger-overrides.d.ts.map +1 -0
  163. package/dist/trigger-overrides.js +30 -0
  164. package/dist/trigger-overrides.js.map +1 -0
  165. package/dist/tui-command.d.ts +56 -0
  166. package/dist/tui-command.d.ts.map +1 -0
  167. package/dist/tui-command.js +160 -0
  168. package/dist/tui-command.js.map +1 -0
  169. package/dist/ui.d.ts +54 -0
  170. package/dist/ui.d.ts.map +1 -0
  171. package/dist/ui.js +157 -0
  172. package/dist/ui.js.map +1 -0
  173. package/dist/web-command.d.ts +39 -0
  174. package/dist/web-command.d.ts.map +1 -0
  175. package/dist/web-command.js +151 -0
  176. package/dist/web-command.js.map +1 -0
  177. package/package.json +22 -17
  178. package/schema/mono-agent.config.schema.json +1686 -0
  179. package/skills/mono-agent-composer/SKILL.md +38 -12
  180. package/skills/mono-agent-composer/agents/openai.yaml +4 -0
  181. package/skills/mono-agent-composer/references/config-blueprint.md +84 -31
  182. package/skills/mono-agent-composer/references/discovery-questions.md +49 -36
  183. package/skills/mono-agent-composer/references/feature-coverage.md +26 -19
  184. package/skills/mono-agent-composer/references/package-map.md +20 -22
  185. package/skills/mono-agent-composer/references/playbooks.md +209 -0
  186. package/skills/mono-agent-composer/references/validation.md +14 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-send-tools.js","sourceRoot":"","sources":["../src/adapter-send-tools.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,7 @@
1
+ import type { ChannelConfigInput } from "@mono-agent/agent-contracts";
1
2
  import { MonoAgentConfigError } from "@mono-agent/config";
2
- import type { MonoAgentConfig } from "@mono-agent/config";
3
- import type { FieldGroup } from "@mono-agent/settings";
4
- export declare const consoleFieldGroup: FieldGroup;
5
- /**
6
- * Every settings group a config-first host edits through the operator console:
7
- * the adapter-neutral core config, the console itself, plus one group per
8
- * communication channel.
9
- */
10
- export declare const MONO_AGENT_APP_FIELD_GROUPS: readonly FieldGroup[];
11
- export interface MonoAgentAppConfigInput {
12
- readonly env: Record<string, string | undefined>;
13
- readonly cwd: string;
14
- readonly configPath: string;
15
- }
3
+ import type { MonoAgentConfig, ObservabilityExporterConfig } from "@mono-agent/config";
4
+ export type MonoAgentAppConfigInput = ChannelConfigInput;
16
5
  export declare function loadAppCoreConfig(input: MonoAgentAppConfigInput): Promise<MonoAgentConfig>;
17
6
  export declare function isAppCoreConfigError(error: unknown): error is MonoAgentConfigError;
18
7
  /**
@@ -25,25 +14,96 @@ export interface AppTraceDefaults {
25
14
  }
26
15
  /**
27
16
  * The resolvers below intentionally tolerate an incomplete or invalid config
28
- * file: observability and the operator console must stay usable while the
29
- * user is still fixing their config, so they fall back to defaults instead of
30
- * throwing on unreadable JSON.
17
+ * file: observability and traceability must stay usable while the user is still
18
+ * fixing their config, so they fall back to defaults instead of throwing on
19
+ * unreadable JSON.
31
20
  */
32
21
  export declare function resolveAppArtifactDir(input: MonoAgentAppConfigInput): Promise<string>;
33
- export interface AppConsoleSettings {
34
- readonly enabled: boolean;
35
- readonly port?: number;
36
- }
37
22
  /**
38
- * Operator console settings: env wins, then the `console` section of the
39
- * config file, then defaults (enabled, auto-selected port). Tolerates an
40
- * unreadable config file like the other app-level resolvers so the console
41
- * stays available while the user fixes their config.
23
+ * Resolve the durable pi-session store the runtime resumes from, the same way the
24
+ * runtime does: the `MONO_AGENT_PI_SESSIONS_ROOT` env override first, then
25
+ * `providers.piNative.piSessionsRoot` from the config file. Returns undefined when
26
+ * neither is set that means sessions are kept in-memory only, so there is nothing
27
+ * on disk to purge. Tolerates an unreadable config like the resolvers above.
42
28
  */
43
- export declare function resolveAppConsoleSettings(input: MonoAgentAppConfigInput): Promise<AppConsoleSettings>;
29
+ export declare function resolveAppSessionsRoot(input: MonoAgentAppConfigInput): Promise<string | undefined>;
30
+ /**
31
+ * A validated observability exporter resolved for app startup/status/validate.
32
+ * Mirrors {@link ObservabilityExporterConfig} but with the endpoint always
33
+ * resolved (defaults applied) so callers never re-derive it.
34
+ */
35
+ export type ResolvedExporter = ObservabilityExporterConfig & {
36
+ readonly endpoint: string;
37
+ };
38
+ /**
39
+ * Resolve observability exporters for the app: env-first
40
+ * (`MONO_AGENT_OBSERVABILITY_EXPORTERS`, JSON array), then the
41
+ * `observability.exporters` block of the config file, then `[]`. Like the other
42
+ * app-level resolvers it tolerates an unreadable config file (returns `[]` so the
43
+ * host stays usable while the user fixes their config), but it DOES throw
44
+ * a {@link MonoAgentConfigError} for a present-but-invalid exporter shape so bad
45
+ * config fails clearly before startup. No reachability probe runs here —
46
+ * reachability is `validate`'s job (Phoenix may start after the agent).
47
+ */
48
+ export declare function resolveAppObservabilityExporters(input: MonoAgentAppConfigInput): Promise<readonly ResolvedExporter[]>;
49
+ /**
50
+ * Derive the Phoenix app base URL (origin) from an OTLP traces endpoint so the
51
+ * CLI/status can point operators at the trace UI — e.g.
52
+ * `http://127.0.0.1:6006/v1/traces` -> `http://127.0.0.1:6006`. Returns
53
+ * undefined when the endpoint is not a parseable URL. Note: Phoenix does not
54
+ * return a stable per-run trace URL from the OTLP ingest endpoint, so callers
55
+ * print only the app base URL plus run identifiers.
56
+ */
57
+ export declare function phoenixAppBaseUrl(endpoint: string): string | undefined;
58
+ export declare function describeSensitiveDataExportWarning(endpoint: string): string;
44
59
  export declare function resolveAppTraceRegistryDir(input: MonoAgentAppConfigInput): Promise<string>;
45
60
  export declare function resolveAppTraceSourceId(input: MonoAgentAppConfigInput, defaults?: AppTraceDefaults): Promise<string>;
46
61
  export declare function resolveAppTraceSourceLabel(input: MonoAgentAppConfigInput, defaults?: AppTraceDefaults): Promise<string>;
47
62
  export declare function resolveAppTraceHeartbeatMs(input: MonoAgentAppConfigInput): Promise<number>;
48
63
  export declare function resolveAppTraceStaleAfterMs(input: MonoAgentAppConfigInput): Promise<number>;
64
+ /**
65
+ * The machine-wide default registry every agent's manifest mirrors into
66
+ * (unless it opts out via `traceability.globalDiscovery: false`), independent
67
+ * of any per-instance `traceability.registryDir` override — this is
68
+ * deliberately NOT read from the local config file, since the whole point is
69
+ * to find agents whose OWN registry is somewhere else. The env override is a
70
+ * seam for tests/ops (relocating the machine-wide default, e.g. a shared
71
+ * mount) and must never be confused with `MONO_AGENT_TRACE_REGISTRY_DIR`
72
+ * (which overrides a single instance's own registry).
73
+ */
74
+ export declare function resolveGlobalTraceRegistryDir(env: Record<string, string | undefined>): string;
75
+ export declare function resolveAppTraceGlobalDiscovery(input: MonoAgentAppConfigInput): Promise<boolean>;
76
+ /**
77
+ * The root under which a trace registry counts as ephemeral: mirror
78
+ * registration is suppressed for registries below it, so throwaway test/CI
79
+ * runs never pollute the developer's real global registry. Defaults to the
80
+ * real OS tmp directory; the env override is a TEST seam (same pattern as
81
+ * `MONO_AGENT_GLOBAL_TRACE_REGISTRY_DIR`) letting integration tests point the
82
+ * guard elsewhere so a genuine `mkdtemp(tmpdir())` fixture can exercise the
83
+ * mirror-happens path.
84
+ */
85
+ export declare function resolveTraceTmpdirRoot(env: Record<string, string | undefined>): string;
86
+ /**
87
+ * True when `path` resolves inside `tmpRoot` (default the real OS tmp
88
+ * directory). Exported so the mirror-registration safety guard below is
89
+ * directly unit-testable without touching the filesystem.
90
+ */
91
+ export declare function isPathUnderTmpdir(path: string, tmpRoot?: string): boolean;
92
+ export interface ShouldMirrorTraceSourceGloballyInput {
93
+ readonly registryDir: string;
94
+ readonly globalRegistryDir: string;
95
+ readonly globalDiscovery: boolean;
96
+ /** Test seam: the tmp root {@link isPathUnderTmpdir} compares against; defaults to the real OS tmp dir. */
97
+ readonly tmpdirRoot?: string;
98
+ }
99
+ /**
100
+ * Gate for the best-effort global-registry mirror (see {@link resolveGlobalTraceRegistryDir}):
101
+ * an agent whose own registry differs from the machine-wide default also
102
+ * registers there, so `mono-agent tui` run from anywhere on the machine finds
103
+ * it — UNLESS the agent opted out (`traceability.globalDiscovery: false`),
104
+ * its own registry already IS the global one (nothing to mirror), or its
105
+ * registry lives under the OS tmp directory (keeps throwaway test/ephemeral
106
+ * runs from polluting the developer's real global registry).
107
+ */
108
+ export declare function shouldMirrorTraceSourceGlobally(input: ShouldMirrorTraceSourceGloballyInput): boolean;
49
109
  //# sourceMappingURL=app-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASvD,eAAO,MAAM,iBAAiB,YAuB5B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,UAAU,EAU5D,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAMhG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAElF;AAOD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB3F;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0B3G;AAuBD,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhG;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAShG;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CASjG"}
1
+ {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
- import { homedir } from "node:os";
3
- import { resolve } from "node:path";
4
- import { CORE_AGENT_FIELD_GROUPS, loadMonoAgentConfigWithSources, MonoAgentConfigError, readMonoAgentConfigJson, } from "@mono-agent/config";
5
- import { defineFieldGroup } from "@mono-agent/settings";
6
- import { a2aFieldGroup } from "@mono-agent/a2a-adapter";
7
- import { cronFieldGroup } from "@mono-agent/cron-adapter";
8
- import { openAIApiFieldGroup } from "@mono-agent/openai-api-adapter";
9
- import { slackFieldGroup } from "@mono-agent/slack-adapter";
10
- import { telegramFieldGroup } from "@mono-agent/telegram-adapter";
11
- import { webhookFieldGroup } from "@mono-agent/webhook-adapter";
12
- import { whatsappFieldGroup } from "@mono-agent/whatsapp-adapter";
13
- export const consoleFieldGroup = defineFieldGroup({
14
- id: "console",
15
- label: "Operator console",
16
- description: "The local browser console started alongside the agent.",
17
- fields: [
18
- {
19
- id: "console.enabled",
20
- label: "Enabled",
21
- description: "Start the loopback operator console with the app (on by default).",
22
- kind: "switch",
23
- path: ["console", "enabled"],
24
- },
25
- {
26
- id: "console.port",
27
- label: "Port",
28
- description: "Fixed loopback port for the console; omit (or 0) to pick a free port.",
29
- kind: "integer",
30
- min: 0,
31
- max: 65_535,
32
- placeholder: "0",
33
- path: ["console", "port"],
34
- },
35
- ],
36
- });
37
- /**
38
- * Every settings group a config-first host edits through the operator console:
39
- * the adapter-neutral core config, the console itself, plus one group per
40
- * communication channel.
41
- */
42
- export const MONO_AGENT_APP_FIELD_GROUPS = [
43
- ...CORE_AGENT_FIELD_GROUPS,
44
- consoleFieldGroup,
45
- telegramFieldGroup,
46
- slackFieldGroup,
47
- a2aFieldGroup,
48
- webhookFieldGroup,
49
- openAIApiFieldGroup,
50
- cronFieldGroup,
51
- whatsappFieldGroup,
52
- ];
2
+ import { homedir, tmpdir } from "node:os";
3
+ import { resolve, sep } from "node:path";
4
+ import { loadMonoAgentConfigWithSources, MonoAgentConfigError, readMonoAgentConfigJson, } from "@mono-agent/config";
53
5
  export async function loadAppCoreConfig(input) {
54
6
  return await loadMonoAgentConfigWithSources({
55
7
  env: input.env,
@@ -66,9 +18,9 @@ const DEFAULT_TRACE_SOURCE_ID_PREFIX = "mono-agent";
66
18
  const DEFAULT_TRACE_SOURCE_LABEL = "Mono Agent";
67
19
  /**
68
20
  * The resolvers below intentionally tolerate an incomplete or invalid config
69
- * file: observability and the operator console must stay usable while the
70
- * user is still fixing their config, so they fall back to defaults instead of
71
- * throwing on unreadable JSON.
21
+ * file: observability and traceability must stay usable while the user is still
22
+ * fixing their config, so they fall back to defaults instead of throwing on
23
+ * unreadable JSON.
72
24
  */
73
25
  export async function resolveAppArtifactDir(input) {
74
26
  const envDir = input.env.MONO_AGENT_ARTIFACT_DIR?.trim();
@@ -88,55 +40,208 @@ export async function resolveAppArtifactDir(input) {
88
40
  return resolve(input.cwd, ".mono-agent", "artifacts");
89
41
  }
90
42
  /**
91
- * Operator console settings: env wins, then the `console` section of the
92
- * config file, then defaults (enabled, auto-selected port). Tolerates an
93
- * unreadable config file like the other app-level resolvers so the console
94
- * stays available while the user fixes their config.
43
+ * Resolve the durable pi-session store the runtime resumes from, the same way the
44
+ * runtime does: the `MONO_AGENT_PI_SESSIONS_ROOT` env override first, then
45
+ * `providers.piNative.piSessionsRoot` from the config file. Returns undefined when
46
+ * neither is set that means sessions are kept in-memory only, so there is nothing
47
+ * on disk to purge. Tolerates an unreadable config like the resolvers above.
95
48
  */
96
- export async function resolveAppConsoleSettings(input) {
97
- let enabled = parseConsoleBoolean(input.env.MONO_AGENT_CONSOLE_ENABLED, "MONO_AGENT_CONSOLE_ENABLED");
98
- let port = parseConsolePort(input.env.MONO_AGENT_CONSOLE_PORT, "MONO_AGENT_CONSOLE_PORT");
99
- if (enabled === undefined || port === undefined) {
100
- try {
101
- const { json } = await readMonoAgentConfigJson(input.configPath);
102
- const section = json.console;
103
- if (typeof section === "object" && section !== null && !Array.isArray(section)) {
104
- const record = section;
105
- if (enabled === undefined && typeof record.enabled === "boolean") {
106
- enabled = record.enabled;
107
- }
108
- if (port === undefined && record.port !== undefined) {
109
- port = parseConsolePort(record.port, "console.port");
110
- }
111
- }
112
- }
113
- catch {
114
- // Keep defaults while the user fixes an incomplete or invalid config.
49
+ export async function resolveAppSessionsRoot(input) {
50
+ const envDir = input.env.MONO_AGENT_PI_SESSIONS_ROOT?.trim();
51
+ if (envDir !== undefined && envDir.length > 0) {
52
+ return resolve(input.cwd, envDir);
53
+ }
54
+ try {
55
+ const { json } = await readMonoAgentConfigJson(input.configPath);
56
+ const configDir = typeof json.providers?.piNative?.piSessionsRoot === "string"
57
+ ? json.providers.piNative.piSessionsRoot.trim()
58
+ : "";
59
+ if (configDir.length > 0) {
60
+ return resolve(input.cwd, configDir);
115
61
  }
116
62
  }
63
+ catch {
64
+ // Tolerate an unreadable config; there is nothing to purge if we cannot resolve it.
65
+ }
66
+ return undefined;
67
+ }
68
+ const DEFAULT_PHOENIX_ENDPOINT = "http://127.0.0.1:6006/v1/traces";
69
+ const DEFAULT_PHOENIX_TIMEOUT_MS = 5_000;
70
+ const OBSERVABILITY_EXPORTER_TYPES = ["phoenix"];
71
+ /**
72
+ * Resolve observability exporters for the app: env-first
73
+ * (`MONO_AGENT_OBSERVABILITY_EXPORTERS`, JSON array), then the
74
+ * `observability.exporters` block of the config file, then `[]`. Like the other
75
+ * app-level resolvers it tolerates an unreadable config file (returns `[]` so the
76
+ * host stays usable while the user fixes their config), but it DOES throw
77
+ * a {@link MonoAgentConfigError} for a present-but-invalid exporter shape so bad
78
+ * config fails clearly before startup. No reachability probe runs here —
79
+ * reachability is `validate`'s job (Phoenix may start after the agent).
80
+ */
81
+ export async function resolveAppObservabilityExporters(input) {
82
+ const envRaw = input.env.MONO_AGENT_OBSERVABILITY_EXPORTERS?.trim();
83
+ if (envRaw !== undefined && envRaw.length > 0) {
84
+ return parseExporters(parseExporterJson(envRaw), "MONO_AGENT_OBSERVABILITY_EXPORTERS");
85
+ }
86
+ let exportersJson;
87
+ try {
88
+ const { json } = await readMonoAgentConfigJson(input.configPath);
89
+ exportersJson = json.observability?.exporters;
90
+ }
91
+ catch {
92
+ // Tolerate an unreadable config like the other resolvers.
93
+ return [];
94
+ }
95
+ if (exportersJson === undefined) {
96
+ return [];
97
+ }
98
+ return parseExporters(exportersJson, "observability.exporters");
99
+ }
100
+ function parseExporterJson(raw) {
101
+ try {
102
+ return JSON.parse(raw);
103
+ }
104
+ catch (error) {
105
+ throw new MonoAgentConfigError("invalid_env", "MONO_AGENT_OBSERVABILITY_EXPORTERS must contain valid JSON.", {
106
+ env: "MONO_AGENT_OBSERVABILITY_EXPORTERS",
107
+ reason: error instanceof Error ? error.message : String(error),
108
+ });
109
+ }
110
+ }
111
+ function parseExporters(value, source) {
112
+ if (!Array.isArray(value)) {
113
+ throw new MonoAgentConfigError("invalid_env", `${source} must be a JSON array.`, { env: source });
114
+ }
115
+ // Only the first exporter is wired (runtime/status/validate read exporters[0]).
116
+ // Reject >1 loudly rather than silently dropping the rest. Mirrors core config.
117
+ if (value.length > 1) {
118
+ throw new MonoAgentConfigError("invalid_env", `${source} supports a single exporter; configure exactly one.`, { env: source });
119
+ }
120
+ return value.map((entry, index) => parseExporter(entry, `${source}[${index}]`));
121
+ }
122
+ function parseExporter(value, source) {
123
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
124
+ throw new MonoAgentConfigError("invalid_env", `${source} must be an object.`, { env: source });
125
+ }
126
+ const record = value;
127
+ // A present-but-non-string type is invalid; an omitted type defaults to the
128
+ // first supported type (phoenix), matching core config normalization so the
129
+ // app resolver and core agree (`validate` no longer rejects what startup accepts).
130
+ if (record.type !== undefined && typeof record.type !== "string") {
131
+ throw new MonoAgentConfigError("invalid_env", `${source}.type must be a string.`, { env: source });
132
+ }
133
+ const rawType = typeof record.type === "string" ? record.type : undefined;
134
+ if (rawType !== undefined && !OBSERVABILITY_EXPORTER_TYPES.includes(rawType)) {
135
+ throw new MonoAgentConfigError("invalid_env", `${source}.type must be one of ${OBSERVABILITY_EXPORTER_TYPES.join(", ")}.`, { env: source });
136
+ }
137
+ const type = (rawType ?? OBSERVABILITY_EXPORTER_TYPES[0]);
138
+ const endpoint = record.endpoint === undefined
139
+ ? DEFAULT_PHOENIX_ENDPOINT
140
+ : validateExporterEndpoint(record.endpoint, source);
141
+ const headers = parseExporterHeaders(record.headers, source);
142
+ const includeSensitiveData = record.includeSensitiveData === undefined
143
+ ? false
144
+ : typeof record.includeSensitiveData === "boolean"
145
+ ? record.includeSensitiveData
146
+ : (() => {
147
+ throw new MonoAgentConfigError("invalid_env", `${source}.includeSensitiveData must be true or false.`, {
148
+ env: source,
149
+ });
150
+ })();
151
+ const timeoutMs = record.timeoutMs === undefined
152
+ ? DEFAULT_PHOENIX_TIMEOUT_MS
153
+ : validateExporterTimeout(record.timeoutMs, source);
154
+ const projectName = record.projectName === undefined
155
+ ? undefined
156
+ : typeof record.projectName === "string" && record.projectName.trim().length > 0
157
+ ? record.projectName
158
+ : (() => {
159
+ throw new MonoAgentConfigError("invalid_env", `${source}.projectName must be a non-empty string.`, {
160
+ env: source,
161
+ });
162
+ })();
117
163
  return {
118
- enabled: enabled ?? true,
119
- ...(port === undefined ? {} : { port }),
164
+ type,
165
+ endpoint,
166
+ ...(headers === undefined ? {} : { headers }),
167
+ includeSensitiveData,
168
+ timeoutMs,
169
+ ...(projectName === undefined ? {} : { projectName }),
120
170
  };
121
171
  }
122
- function parseConsoleBoolean(raw, name) {
123
- const value = raw?.trim().toLowerCase();
124
- if (value === undefined || value.length === 0) {
172
+ /**
173
+ * Derive the Phoenix app base URL (origin) from an OTLP traces endpoint so the
174
+ * CLI/status can point operators at the trace UI — e.g.
175
+ * `http://127.0.0.1:6006/v1/traces` -> `http://127.0.0.1:6006`. Returns
176
+ * undefined when the endpoint is not a parseable URL. Note: Phoenix does not
177
+ * return a stable per-run trace URL from the OTLP ingest endpoint, so callers
178
+ * print only the app base URL plus run identifiers.
179
+ */
180
+ export function phoenixAppBaseUrl(endpoint) {
181
+ try {
182
+ return new URL(endpoint).origin;
183
+ }
184
+ catch {
125
185
  return undefined;
126
186
  }
127
- if (value === "true" || value === "1") {
128
- return true;
187
+ }
188
+ export function describeSensitiveDataExportWarning(endpoint) {
189
+ return [
190
+ "[WARN] includeSensitiveData=true exports redacted/capped user input, assistant replies,",
191
+ `tool args/results, and system prompt to Phoenix at ${endpoint}; substantive run content leaves this machine.`,
192
+ ].join(" ");
193
+ }
194
+ function validateExporterEndpoint(value, source) {
195
+ if (typeof value !== "string" || value.trim().length === 0) {
196
+ throw new MonoAgentConfigError("invalid_env", `${source}.endpoint must be a non-empty string.`, { env: source });
129
197
  }
130
- if (value === "false" || value === "0") {
131
- return false;
198
+ let url;
199
+ try {
200
+ // Shape-only validation — never performs a request (reachability is `validate`'s job).
201
+ url = new URL(value);
132
202
  }
133
- throw new MonoAgentConfigError("invalid_env", `${name} must be true or false.`, { env: name });
203
+ catch {
204
+ throw new MonoAgentConfigError("invalid_env", `${source}.endpoint must be a valid URL.`, { env: source });
205
+ }
206
+ // The raw endpoint is displayed/persisted in plaintext (start/status/validate,
207
+ // trace-source metadata, transport errors), so reject credential-bearing URL
208
+ // components. Secrets belong in `headers`, which are redacted. Mirrors core config.
209
+ if (url.username !== "" || url.password !== "") {
210
+ throw new MonoAgentConfigError("invalid_env", `${source}.endpoint must not embed credentials (user:pass@); put secrets in headers instead.`, { env: source });
211
+ }
212
+ if (url.search !== "") {
213
+ throw new MonoAgentConfigError("invalid_env", `${source}.endpoint must not contain a query string; put tokens in headers instead.`, { env: source });
214
+ }
215
+ if (url.hash !== "") {
216
+ throw new MonoAgentConfigError("invalid_env", `${source}.endpoint must not contain a URL fragment.`, {
217
+ env: source,
218
+ });
219
+ }
220
+ return value;
134
221
  }
135
- function parseConsolePort(value, name) {
136
- if (value === undefined || (typeof value === "string" && value.trim().length === 0)) {
222
+ function parseExporterHeaders(value, source) {
223
+ if (value === undefined) {
137
224
  return undefined;
138
225
  }
139
- return parseTraceInteger(value, name, 0, 65_535);
226
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
227
+ throw new MonoAgentConfigError("invalid_env", `${source}.headers must be an object.`, { env: source });
228
+ }
229
+ const out = {};
230
+ for (const [key, headerValue] of Object.entries(value)) {
231
+ if (typeof headerValue !== "string" || headerValue.length === 0) {
232
+ throw new MonoAgentConfigError("invalid_env", `${source}.headers.${key} must be a non-empty string.`, {
233
+ env: source,
234
+ });
235
+ }
236
+ out[key] = headerValue;
237
+ }
238
+ return out;
239
+ }
240
+ function validateExporterTimeout(value, source) {
241
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 1 || value > 60_000) {
242
+ throw new MonoAgentConfigError("invalid_env", `${source}.timeoutMs must be an integer between 1 and 60000.`, { env: source });
243
+ }
244
+ return value;
140
245
  }
141
246
  export async function resolveAppTraceRegistryDir(input) {
142
247
  const envDir = input.env.MONO_AGENT_TRACE_REGISTRY_DIR?.trim();
@@ -215,6 +320,95 @@ export async function resolveAppTraceStaleAfterMs(input) {
215
320
  max: 604_800_000,
216
321
  });
217
322
  }
323
+ /**
324
+ * The machine-wide default registry every agent's manifest mirrors into
325
+ * (unless it opts out via `traceability.globalDiscovery: false`), independent
326
+ * of any per-instance `traceability.registryDir` override — this is
327
+ * deliberately NOT read from the local config file, since the whole point is
328
+ * to find agents whose OWN registry is somewhere else. The env override is a
329
+ * seam for tests/ops (relocating the machine-wide default, e.g. a shared
330
+ * mount) and must never be confused with `MONO_AGENT_TRACE_REGISTRY_DIR`
331
+ * (which overrides a single instance's own registry).
332
+ */
333
+ export function resolveGlobalTraceRegistryDir(env) {
334
+ const override = env.MONO_AGENT_GLOBAL_TRACE_REGISTRY_DIR?.trim();
335
+ if (override !== undefined && override.length > 0) {
336
+ return resolve(override);
337
+ }
338
+ return resolve(homedir(), ".mono-agent", "trace-sources");
339
+ }
340
+ export async function resolveAppTraceGlobalDiscovery(input) {
341
+ const envValue = input.env.MONO_AGENT_TRACE_GLOBAL_DISCOVERY?.trim();
342
+ if (envValue !== undefined && envValue.length > 0) {
343
+ return parseTraceBoolean(envValue, "MONO_AGENT_TRACE_GLOBAL_DISCOVERY");
344
+ }
345
+ try {
346
+ const { json } = await readMonoAgentConfigJson(input.configPath);
347
+ const value = json.traceability?.globalDiscovery;
348
+ if (typeof value === "boolean") {
349
+ return value;
350
+ }
351
+ }
352
+ catch {
353
+ // Use the default while the user fixes an incomplete or invalid config.
354
+ }
355
+ return true;
356
+ }
357
+ function parseTraceBoolean(value, name) {
358
+ const normalized = value.trim().toLowerCase();
359
+ if (normalized === "true") {
360
+ return true;
361
+ }
362
+ if (normalized === "false") {
363
+ return false;
364
+ }
365
+ throw new MonoAgentConfigError("invalid_env", `${name} must be true or false.`, { env: name });
366
+ }
367
+ /**
368
+ * The root under which a trace registry counts as ephemeral: mirror
369
+ * registration is suppressed for registries below it, so throwaway test/CI
370
+ * runs never pollute the developer's real global registry. Defaults to the
371
+ * real OS tmp directory; the env override is a TEST seam (same pattern as
372
+ * `MONO_AGENT_GLOBAL_TRACE_REGISTRY_DIR`) letting integration tests point the
373
+ * guard elsewhere so a genuine `mkdtemp(tmpdir())` fixture can exercise the
374
+ * mirror-happens path.
375
+ */
376
+ export function resolveTraceTmpdirRoot(env) {
377
+ const override = env.MONO_AGENT_TRACE_TMPDIR_ROOT?.trim();
378
+ if (override !== undefined && override.length > 0) {
379
+ return resolve(override);
380
+ }
381
+ return resolve(tmpdir());
382
+ }
383
+ /**
384
+ * True when `path` resolves inside `tmpRoot` (default the real OS tmp
385
+ * directory). Exported so the mirror-registration safety guard below is
386
+ * directly unit-testable without touching the filesystem.
387
+ */
388
+ export function isPathUnderTmpdir(path, tmpRoot = tmpdir()) {
389
+ const root = resolve(tmpRoot);
390
+ const target = resolve(path);
391
+ const rootWithSep = root.endsWith(sep) ? root : `${root}${sep}`;
392
+ return target === root || target.startsWith(rootWithSep);
393
+ }
394
+ /**
395
+ * Gate for the best-effort global-registry mirror (see {@link resolveGlobalTraceRegistryDir}):
396
+ * an agent whose own registry differs from the machine-wide default also
397
+ * registers there, so `mono-agent tui` run from anywhere on the machine finds
398
+ * it — UNLESS the agent opted out (`traceability.globalDiscovery: false`),
399
+ * its own registry already IS the global one (nothing to mirror), or its
400
+ * registry lives under the OS tmp directory (keeps throwaway test/ephemeral
401
+ * runs from polluting the developer's real global registry).
402
+ */
403
+ export function shouldMirrorTraceSourceGlobally(input) {
404
+ if (!input.globalDiscovery) {
405
+ return false;
406
+ }
407
+ if (resolve(input.registryDir) === resolve(input.globalRegistryDir)) {
408
+ return false;
409
+ }
410
+ return !isPathUnderTmpdir(input.registryDir, input.tmpdirRoot);
411
+ }
218
412
  async function resolveTraceInteger(options) {
219
413
  const envValue = options.input.env[options.envName]?.trim();
220
414
  if (envValue !== undefined && envValue.length > 0) {