@geminilight/mindos 1.1.8 → 1.1.10

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 (193) hide show
  1. package/dist/agent/agent-run-context.d.ts +8 -0
  2. package/dist/agent/agent-run-context.d.ts.map +1 -0
  3. package/dist/agent/agent-run-context.js +9 -0
  4. package/dist/agent/agent-run-context.js.map +1 -0
  5. package/dist/agent/capability-registry.d.ts +60 -0
  6. package/dist/agent/capability-registry.d.ts.map +1 -0
  7. package/dist/agent/capability-registry.js +323 -0
  8. package/dist/agent/capability-registry.js.map +1 -0
  9. package/dist/agent/file-write-lock.d.ts +22 -0
  10. package/dist/agent/file-write-lock.d.ts.map +1 -0
  11. package/dist/agent/file-write-lock.js +86 -0
  12. package/dist/agent/file-write-lock.js.map +1 -0
  13. package/dist/agent/global-state.d.ts +109 -0
  14. package/dist/agent/global-state.d.ts.map +1 -0
  15. package/dist/agent/global-state.js +118 -0
  16. package/dist/agent/global-state.js.map +1 -0
  17. package/dist/agent/index.d.ts +17 -0
  18. package/dist/agent/index.d.ts.map +1 -1
  19. package/dist/agent/index.js +17 -0
  20. package/dist/agent/index.js.map +1 -1
  21. package/dist/agent/kb-extension.d.ts +38 -0
  22. package/dist/agent/kb-extension.d.ts.map +1 -0
  23. package/dist/agent/kb-extension.js +140 -0
  24. package/dist/agent/kb-extension.js.map +1 -0
  25. package/dist/agent/kb-tools.d.ts +158 -0
  26. package/dist/agent/kb-tools.d.ts.map +1 -0
  27. package/dist/agent/kb-tools.js +707 -0
  28. package/dist/agent/kb-tools.js.map +1 -0
  29. package/dist/agent/line-diff.d.ts +13 -0
  30. package/dist/agent/line-diff.d.ts.map +1 -0
  31. package/dist/agent/line-diff.js +66 -0
  32. package/dist/agent/line-diff.js.map +1 -0
  33. package/dist/agent/paragraph-extract.d.ts +25 -0
  34. package/dist/agent/paragraph-extract.d.ts.map +1 -0
  35. package/dist/agent/paragraph-extract.js +106 -0
  36. package/dist/agent/paragraph-extract.js.map +1 -0
  37. package/dist/agent/permission-policy.d.ts +37 -0
  38. package/dist/agent/permission-policy.d.ts.map +1 -0
  39. package/dist/agent/permission-policy.js +153 -0
  40. package/dist/agent/permission-policy.js.map +1 -0
  41. package/dist/agent/redaction.d.ts +3 -0
  42. package/dist/agent/redaction.d.ts.map +1 -0
  43. package/dist/agent/redaction.js +52 -0
  44. package/dist/agent/redaction.js.map +1 -0
  45. package/dist/agent/result-reducer.d.ts +36 -0
  46. package/dist/agent/result-reducer.d.ts.map +1 -0
  47. package/dist/agent/result-reducer.js +101 -0
  48. package/dist/agent/result-reducer.js.map +1 -0
  49. package/dist/agent/run-cancellation.d.ts +13 -0
  50. package/dist/agent/run-cancellation.d.ts.map +1 -0
  51. package/dist/agent/run-cancellation.js +97 -0
  52. package/dist/agent/run-cancellation.js.map +1 -0
  53. package/dist/agent/run-ledger-types.d.ts +197 -0
  54. package/dist/agent/run-ledger-types.d.ts.map +1 -0
  55. package/dist/agent/run-ledger-types.js +9 -0
  56. package/dist/agent/run-ledger-types.js.map +1 -0
  57. package/dist/agent/run-ledger.d.ts +44 -0
  58. package/dist/agent/run-ledger.d.ts.map +1 -0
  59. package/dist/agent/run-ledger.js +814 -0
  60. package/dist/agent/run-ledger.js.map +1 -0
  61. package/dist/agent/run-timeline-events.d.ts +3 -0
  62. package/dist/agent/run-timeline-events.d.ts.map +1 -0
  63. package/dist/agent/run-timeline-events.js +239 -0
  64. package/dist/agent/run-timeline-events.js.map +1 -0
  65. package/dist/agent/runtime-permission-bridge.d.ts +34 -0
  66. package/dist/agent/runtime-permission-bridge.d.ts.map +1 -0
  67. package/dist/agent/runtime-permission-bridge.js +284 -0
  68. package/dist/agent/runtime-permission-bridge.js.map +1 -0
  69. package/dist/agent/stream-consumer.d.ts +65 -0
  70. package/dist/agent/stream-consumer.d.ts.map +1 -0
  71. package/dist/agent/stream-consumer.js +664 -0
  72. package/dist/agent/stream-consumer.js.map +1 -0
  73. package/dist/agent/stream-message-types.d.ts +138 -0
  74. package/dist/agent/stream-message-types.d.ts.map +1 -0
  75. package/dist/agent/stream-message-types.js +14 -0
  76. package/dist/agent/stream-message-types.js.map +1 -0
  77. package/dist/agent/subagent-ledger-extension.d.ts +22 -0
  78. package/dist/agent/subagent-ledger-extension.d.ts.map +1 -0
  79. package/dist/agent/subagent-ledger-extension.js +533 -0
  80. package/dist/agent/subagent-ledger-extension.js.map +1 -0
  81. package/dist/agent/subagent-orchestrator.d.ts +62 -0
  82. package/dist/agent/subagent-orchestrator.d.ts.map +1 -0
  83. package/dist/agent/subagent-orchestrator.js +350 -0
  84. package/dist/agent/subagent-orchestrator.js.map +1 -0
  85. package/dist/agent/user-question-bridge.d.ts +90 -0
  86. package/dist/agent/user-question-bridge.d.ts.map +1 -0
  87. package/dist/agent/user-question-bridge.js +260 -0
  88. package/dist/agent/user-question-bridge.js.map +1 -0
  89. package/dist/agent-runtime/capabilities.d.ts +10 -0
  90. package/dist/agent-runtime/capabilities.d.ts.map +1 -0
  91. package/dist/agent-runtime/capabilities.js +100 -0
  92. package/dist/agent-runtime/capabilities.js.map +1 -0
  93. package/dist/agent-runtime/child-process.d.ts +21 -0
  94. package/dist/agent-runtime/child-process.d.ts.map +1 -0
  95. package/dist/agent-runtime/child-process.js +29 -0
  96. package/dist/agent-runtime/child-process.js.map +1 -0
  97. package/dist/agent-runtime/claude-code-cli.d.ts.map +1 -1
  98. package/dist/agent-runtime/claude-code-cli.js +31 -4
  99. package/dist/agent-runtime/claude-code-cli.js.map +1 -1
  100. package/dist/agent-runtime/claude-code-sdk.d.ts.map +1 -1
  101. package/dist/agent-runtime/claude-code-sdk.js +22 -5
  102. package/dist/agent-runtime/claude-code-sdk.js.map +1 -1
  103. package/dist/agent-runtime/codex-app-server.d.ts.map +1 -1
  104. package/dist/agent-runtime/codex-app-server.js +27 -3
  105. package/dist/agent-runtime/codex-app-server.js.map +1 -1
  106. package/dist/agent-runtime/codex-env.d.ts +2 -1
  107. package/dist/agent-runtime/codex-env.d.ts.map +1 -1
  108. package/dist/agent-runtime/codex-env.js +14 -2
  109. package/dist/agent-runtime/codex-env.js.map +1 -1
  110. package/dist/agent-runtime/descriptors.d.ts +19 -0
  111. package/dist/agent-runtime/descriptors.d.ts.map +1 -0
  112. package/dist/agent-runtime/descriptors.js +143 -0
  113. package/dist/agent-runtime/descriptors.js.map +1 -0
  114. package/dist/agent-runtime/detection.d.ts +15 -0
  115. package/dist/agent-runtime/detection.d.ts.map +1 -0
  116. package/dist/agent-runtime/detection.js +124 -0
  117. package/dist/agent-runtime/detection.js.map +1 -0
  118. package/dist/agent-runtime/index.d.ts +2 -0
  119. package/dist/agent-runtime/index.d.ts.map +1 -1
  120. package/dist/agent-runtime/index.js +2 -0
  121. package/dist/agent-runtime/index.js.map +1 -1
  122. package/dist/agent-runtime/registry.d.ts +152 -0
  123. package/dist/agent-runtime/registry.d.ts.map +1 -0
  124. package/dist/agent-runtime/registry.js +84 -0
  125. package/dist/agent-runtime/registry.js.map +1 -0
  126. package/dist/agent-runtime/run.d.ts +12 -0
  127. package/dist/agent-runtime/run.d.ts.map +1 -1
  128. package/dist/agent-runtime/run.js +16 -1
  129. package/dist/agent-runtime/run.js.map +1 -1
  130. package/dist/foundation/config/schema.d.ts +1 -1
  131. package/dist/foundation/mind-root/index.d.ts +5 -0
  132. package/dist/foundation/mind-root/index.d.ts.map +1 -0
  133. package/dist/foundation/mind-root/index.js +67 -0
  134. package/dist/foundation/mind-root/index.js.map +1 -0
  135. package/dist/foundation/native-import.d.ts +22 -0
  136. package/dist/foundation/native-import.d.ts.map +1 -0
  137. package/dist/foundation/native-import.js +22 -0
  138. package/dist/foundation/native-import.js.map +1 -0
  139. package/dist/foundation.d.ts +1 -0
  140. package/dist/foundation.d.ts.map +1 -1
  141. package/dist/foundation.js +1 -0
  142. package/dist/foundation.js.map +1 -1
  143. package/dist/protocols/mcp-server/index.cjs +24 -23
  144. package/dist/protocols/mcp-server/index.js +45 -0
  145. package/dist/protocols/mcp-server/index.js.map +1 -1
  146. package/dist/server/contract.d.ts.map +1 -1
  147. package/dist/server/contract.js +1 -0
  148. package/dist/server/contract.js.map +1 -1
  149. package/dist/server/handlers/agent-runtimes.d.ts +3 -125
  150. package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
  151. package/dist/server/handlers/agent-runtimes.js +6 -414
  152. package/dist/server/handlers/agent-runtimes.js.map +1 -1
  153. package/dist/server/handlers/assistants.d.ts.map +1 -1
  154. package/dist/server/handlers/assistants.js +1 -0
  155. package/dist/server/handlers/assistants.js.map +1 -1
  156. package/dist/server/handlers/mcp-agents.d.ts +8 -0
  157. package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
  158. package/dist/server/handlers/mcp-agents.js +39 -0
  159. package/dist/server/handlers/mcp-agents.js.map +1 -1
  160. package/dist/server/handlers/mcp-install.d.ts +0 -6
  161. package/dist/server/handlers/mcp-install.d.ts.map +1 -1
  162. package/dist/server/handlers/mcp-install.js +1 -31
  163. package/dist/server/handlers/mcp-install.js.map +1 -1
  164. package/dist/server/handlers/skill-links.d.ts +130 -0
  165. package/dist/server/handlers/skill-links.d.ts.map +1 -0
  166. package/dist/server/handlers/skill-links.js +534 -0
  167. package/dist/server/handlers/skill-links.js.map +1 -0
  168. package/dist/server/handlers/skills.d.ts +12 -1
  169. package/dist/server/handlers/skills.d.ts.map +1 -1
  170. package/dist/server/handlers/skills.js +48 -5
  171. package/dist/server/handlers/skills.js.map +1 -1
  172. package/dist/server/http.d.ts.map +1 -1
  173. package/dist/server/http.js +16 -3
  174. package/dist/server/http.js.map +1 -1
  175. package/dist/server/index.d.ts +3 -2
  176. package/dist/server/index.d.ts.map +1 -1
  177. package/dist/server/index.js +3 -2
  178. package/dist/server/index.js.map +1 -1
  179. package/dist/server/route-ownership.d.ts.map +1 -1
  180. package/dist/server/route-ownership.js +3 -0
  181. package/dist/server/route-ownership.js.map +1 -1
  182. package/dist/server/runtime.d.ts.map +1 -1
  183. package/dist/server/runtime.js +8 -4
  184. package/dist/server/runtime.js.map +1 -1
  185. package/dist/session/index.d.ts +43 -2
  186. package/dist/session/index.d.ts.map +1 -1
  187. package/dist/session/index.js +42 -5
  188. package/dist/session/index.js.map +1 -1
  189. package/dist/session/pi-coding-agent-runtime.d.ts +4 -2
  190. package/dist/session/pi-coding-agent-runtime.d.ts.map +1 -1
  191. package/dist/session/pi-coding-agent-runtime.js +18 -11
  192. package/dist/session/pi-coding-agent-runtime.js.map +1 -1
  193. package/package.json +15 -9
@@ -0,0 +1,143 @@
1
+ import { acpCapabilities, acpHarnessCapabilities, claudeCapabilities, claudeHarnessCapabilities, codexCapabilities, codexHarnessCapabilities, mindosCapabilities, mindosHarnessCapabilities, } from './capabilities.js';
2
+ import { compactRuntimeHintsForDescriptor, } from './detection.js';
3
+ import { summarizeRuntimeFailure, } from './runtime-errors.js';
4
+ export function nativeRuntimeDiagnosticHints(input) {
5
+ if (input.status === 'available')
6
+ return [];
7
+ const command = input.id === 'codex' ? 'codex' : 'claude';
8
+ const hints = [];
9
+ if (input.status === 'missing') {
10
+ hints.push(`MindOS checked command "${command}" on the server PATH.`);
11
+ hints.push(input.installCmd
12
+ ? `Install it or add it to the PATH used to start MindOS: ${input.installCmd}`
13
+ : `Install ${input.name} or add it to the PATH used to start MindOS.`);
14
+ return hints;
15
+ }
16
+ if (input.binaryPath) {
17
+ hints.push(`MindOS detected ${input.name} at ${input.binaryPath}.`);
18
+ }
19
+ if (input.status === 'signed-out') {
20
+ hints.push(input.id === 'codex'
21
+ ? 'Run "codex login status" from the same environment that starts MindOS.'
22
+ : 'Run Claude Code once from the same environment that starts MindOS.');
23
+ }
24
+ else {
25
+ hints.push(input.id === 'codex'
26
+ ? 'Run "codex app-server --help" from the MindOS server environment.'
27
+ : 'Run "claude --version" from the MindOS server environment.');
28
+ }
29
+ if (input.reason && /(environment variable|cannot see|env)/i.test(input.reason)) {
30
+ hints.push('Restart MindOS after exporting the required environment variable so the server process inherits it.');
31
+ }
32
+ return hints;
33
+ }
34
+ export function nativeDescriptor(input) {
35
+ const status = input.source ? input.source.status ?? 'available' : input.missing?.status ?? 'missing';
36
+ const runtimeBridge = input.source?.runtimeBridge;
37
+ const rawReason = input.source?.reason ?? input.missing?.reason;
38
+ const reasonSummary = rawReason ? summarizeRuntimeFailure(rawReason, { runtime: input.id }) : null;
39
+ const reason = reasonSummary?.reason;
40
+ const sourceDiagnosticHints = compactRuntimeHintsForDescriptor(input.source?.diagnosticHints ?? input.missing?.diagnosticHints, input.id, reason);
41
+ const diagnosticHints = Array.from(new Set([
42
+ ...sourceDiagnosticHints,
43
+ ...(reasonSummary?.diagnosticHints ?? []),
44
+ ...nativeRuntimeDiagnosticHints({
45
+ id: input.id,
46
+ name: input.name,
47
+ status,
48
+ reason,
49
+ binaryPath: input.source?.binaryPath,
50
+ installCmd: input.missing?.installCmd,
51
+ }),
52
+ ]));
53
+ return {
54
+ id: input.id,
55
+ runtimeId: input.id,
56
+ category: 'native',
57
+ name: input.name,
58
+ kind: input.id,
59
+ adapter: input.id === 'codex' ? 'codex-app-server' : runtimeBridge?.kind === 'claude-cli' ? 'claude-cli' : 'claude-sdk',
60
+ modelOwner: 'external',
61
+ authOwner: 'external',
62
+ permissionOwner: 'external',
63
+ sessionOwner: 'external',
64
+ status,
65
+ capabilities: input.id === 'codex' ? codexCapabilities : claudeCapabilities,
66
+ harnessCapabilities: input.id === 'codex' ? codexHarnessCapabilities : claudeHarnessCapabilities,
67
+ ...(runtimeBridge ? { runtimeBridge } : {}),
68
+ description: input.id === 'codex'
69
+ ? 'Local Codex app-server runtime. Model, approval, and thread behavior are owned by Codex.'
70
+ : 'Local Claude Code runtime. Model, permission, and session behavior are owned by Claude Code.',
71
+ aliases: input.id === 'codex' ? ['codex-acp'] : ['claude-code', 'claude'],
72
+ ...(input.id === 'codex' ? { mcpAgentKey: 'codex' } : { mcpAgentKey: 'claude-code' }),
73
+ ...(input.source ? {
74
+ sourceAgentId: input.source.id,
75
+ canonicalAgentId: input.source.id,
76
+ binaryPath: input.source.binaryPath,
77
+ ...(input.source.resolvedCommand ? { resolvedCommand: input.source.resolvedCommand } : {}),
78
+ } : {}),
79
+ ...(!input.source && input.missing ? {
80
+ sourceAgentId: input.missing.id,
81
+ canonicalAgentId: input.missing.id,
82
+ installCmd: input.missing.installCmd,
83
+ ...(input.missing.packageName ? { packageName: input.missing.packageName } : {}),
84
+ } : {}),
85
+ availability: {
86
+ checkedAt: input.checkedAt,
87
+ sources: ['native-health'],
88
+ ...(reason
89
+ ? { reason }
90
+ : !input.source
91
+ ? { reason: `${input.name} executable was not detected.` }
92
+ : {}),
93
+ ...(diagnosticHints.length > 0 ? { diagnosticHints } : {}),
94
+ },
95
+ };
96
+ }
97
+ export function mindosRuntimeDescriptor(checkedAt) {
98
+ return {
99
+ id: 'mindos',
100
+ runtimeId: 'mindos',
101
+ category: 'mindos',
102
+ name: 'MindOS',
103
+ kind: 'mindos',
104
+ adapter: 'mindos',
105
+ modelOwner: 'mindos',
106
+ authOwner: 'mindos',
107
+ permissionOwner: 'mindos',
108
+ sessionOwner: 'mindos',
109
+ status: 'available',
110
+ capabilities: mindosCapabilities,
111
+ harnessCapabilities: mindosHarnessCapabilities,
112
+ description: 'MindOS internal agent using the selected provider and model.',
113
+ availability: { checkedAt, sources: ['settings'] },
114
+ };
115
+ }
116
+ export function acpRuntimeDescriptor(agent, checkedAt) {
117
+ return {
118
+ id: agent.id,
119
+ runtimeId: agent.id,
120
+ category: 'acp',
121
+ name: agent.name,
122
+ kind: 'acp',
123
+ adapter: 'acp',
124
+ modelOwner: 'external',
125
+ authOwner: 'external',
126
+ permissionOwner: 'external',
127
+ sessionOwner: 'external',
128
+ status: agent.status ?? 'available',
129
+ capabilities: acpCapabilities,
130
+ harnessCapabilities: acpHarnessCapabilities,
131
+ description: 'ACP agent selected as the Chat Panel runtime.',
132
+ sourceAgentId: agent.id,
133
+ canonicalAgentId: agent.id,
134
+ binaryPath: agent.binaryPath,
135
+ ...(agent.resolvedCommand ? { resolvedCommand: agent.resolvedCommand } : {}),
136
+ availability: {
137
+ checkedAt,
138
+ sources: agent.status && agent.status !== 'available' ? ['acp-detect', 'native-health'] : ['acp-detect'],
139
+ ...(agent.reason ? { reason: agent.reason } : {}),
140
+ },
141
+ };
142
+ }
143
+ //# sourceMappingURL=descriptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../../src/agent-runtime/descriptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AgentRuntimeBridge, AgentRuntimeDescriptor, DetectedRuntimeAgent, MissingRuntimeAgent, NativeRuntimeHealthResult, NativeRuntimeId } from './registry.js';
2
+ type RuntimeResolvedCommand = NonNullable<AgentRuntimeDescriptor['resolvedCommand']>;
3
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
4
+ export declare function classifyRuntimeFailure(message: string, runtime?: NativeRuntimeId): NativeRuntimeHealthResult;
5
+ export declare function normalizeResolvedCommand(value: unknown): RuntimeResolvedCommand | null;
6
+ export declare function normalizeDiagnosticHints(value: unknown): string[] | undefined;
7
+ export declare function normalizeRuntimeBridge(value: unknown): AgentRuntimeBridge | undefined;
8
+ export declare function normalizeInstalled(value: unknown): DetectedRuntimeAgent | null;
9
+ export declare function normalizeMissing(value: unknown): MissingRuntimeAgent | null;
10
+ export declare function isCodexAgent(agent: Pick<DetectedRuntimeAgent | MissingRuntimeAgent, 'id' | 'name'>): boolean;
11
+ export declare function isClaudeAgent(agent: Pick<DetectedRuntimeAgent | MissingRuntimeAgent, 'id' | 'name'>): boolean;
12
+ export declare function isNativeRuntimeId(value: string | null): value is NativeRuntimeId;
13
+ export declare function compactRuntimeHintsForDescriptor(hints: string[] | undefined, runtime: NativeRuntimeId, reason?: string): string[];
14
+ export {};
15
+ //# sourceMappingURL=detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/detection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EAEtB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EAChB,MAAM,eAAe,CAAC;AAEvB,KAAK,sBAAsB,GAAG,WAAW,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAErF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,yBAAyB,CAsB5G;AAcD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAStF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAM7E;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAWrF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAgB9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAa3E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,OAAO,CAG5G;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,OAAO,CAG7G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,IAAI,eAAe,CAEhF;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAC3B,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,EAAE,CAEV"}
@@ -0,0 +1,124 @@
1
+ import { compactRuntimeFailureMessage, compactRuntimeDiagnosticHints, summarizeRuntimeFailure, } from './runtime-errors.js';
2
+ export function isRecord(value) {
3
+ return !!value && typeof value === 'object' && !Array.isArray(value);
4
+ }
5
+ export function classifyRuntimeFailure(message, runtime) {
6
+ const normalized = message.trim() || 'Runtime failed to start.';
7
+ const summary = summarizeRuntimeFailure(normalized, { runtime });
8
+ if (/\b(login|log in|signin|sign in|auth|authentication|unauthori[sz]ed|credential|api key|token)\b/i.test(normalized)) {
9
+ return {
10
+ status: 'signed-out',
11
+ reason: summary.reason,
12
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
13
+ };
14
+ }
15
+ if (/missing environment variable/i.test(normalized)) {
16
+ return {
17
+ status: 'signed-out',
18
+ reason: summary.reason,
19
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
20
+ };
21
+ }
22
+ return {
23
+ status: 'error',
24
+ reason: summary.reason,
25
+ ...(summary.diagnosticHints ? { diagnosticHints: summary.diagnosticHints } : {}),
26
+ };
27
+ }
28
+ function isResolvedCommandSource(value) {
29
+ return value === 'user-override' || value === 'descriptor' || value === 'registry';
30
+ }
31
+ function isInstalledRuntimeStatus(value) {
32
+ return value === 'available' || value === 'signed-out' || value === 'error';
33
+ }
34
+ function isMissingRuntimeStatus(value) {
35
+ return value === 'missing' || value === 'error';
36
+ }
37
+ export function normalizeResolvedCommand(value) {
38
+ if (!isRecord(value))
39
+ return null;
40
+ if (typeof value.cmd !== 'string' || !Array.isArray(value.args) || !value.args.every((arg) => typeof arg === 'string'))
41
+ return null;
42
+ if (!isResolvedCommandSource(value.source))
43
+ return null;
44
+ return {
45
+ cmd: value.cmd,
46
+ args: value.args,
47
+ source: value.source,
48
+ };
49
+ }
50
+ export function normalizeDiagnosticHints(value) {
51
+ if (!Array.isArray(value))
52
+ return undefined;
53
+ const hints = value
54
+ .filter((hint) => typeof hint === 'string' && hint.trim().length > 0)
55
+ .map((hint) => hint.trim());
56
+ return hints.length > 0 ? Array.from(new Set(hints)) : undefined;
57
+ }
58
+ function isRuntimeBridgeKind(value) {
59
+ return value === 'codex-app-server' || value === 'claude-sdk' || value === 'claude-cli';
60
+ }
61
+ export function normalizeRuntimeBridge(value) {
62
+ if (!isRecord(value))
63
+ return undefined;
64
+ if (!isRuntimeBridgeKind(value.kind) || typeof value.label !== 'string' || !value.label.trim())
65
+ return undefined;
66
+ return {
67
+ kind: value.kind,
68
+ label: value.label.trim(),
69
+ ...(typeof value.fallback === 'boolean' ? { fallback: value.fallback } : {}),
70
+ ...(typeof value.reason === 'string' && value.reason.trim()
71
+ ? { reason: compactRuntimeFailureMessage(value.reason, { runtime: value.kind === 'claude-cli' || value.kind === 'claude-sdk' ? 'claude' : 'codex' }) }
72
+ : {}),
73
+ };
74
+ }
75
+ export function normalizeInstalled(value) {
76
+ if (!isRecord(value))
77
+ return null;
78
+ if (typeof value.id !== 'string' || typeof value.name !== 'string' || typeof value.binaryPath !== 'string')
79
+ return null;
80
+ const resolved = normalizeResolvedCommand(value.resolvedCommand);
81
+ const diagnosticHints = normalizeDiagnosticHints(value.diagnosticHints);
82
+ const runtimeBridge = normalizeRuntimeBridge(value.runtimeBridge);
83
+ return {
84
+ id: value.id,
85
+ name: value.name,
86
+ binaryPath: value.binaryPath,
87
+ ...(resolved ? { resolvedCommand: resolved } : {}),
88
+ ...(isInstalledRuntimeStatus(value.status) ? { status: value.status } : {}),
89
+ ...(typeof value.reason === 'string' && value.reason.trim() ? { reason: value.reason } : {}),
90
+ ...(diagnosticHints ? { diagnosticHints } : {}),
91
+ ...(runtimeBridge ? { runtimeBridge } : {}),
92
+ };
93
+ }
94
+ export function normalizeMissing(value) {
95
+ if (!isRecord(value))
96
+ return null;
97
+ if (typeof value.id !== 'string' || typeof value.name !== 'string' || typeof value.installCmd !== 'string')
98
+ return null;
99
+ const diagnosticHints = normalizeDiagnosticHints(value.diagnosticHints);
100
+ return {
101
+ id: value.id,
102
+ name: value.name,
103
+ installCmd: value.installCmd,
104
+ ...(typeof value.packageName === 'string' ? { packageName: value.packageName } : {}),
105
+ ...(isMissingRuntimeStatus(value.status) ? { status: value.status } : {}),
106
+ ...(typeof value.reason === 'string' && value.reason.trim() ? { reason: value.reason } : {}),
107
+ ...(diagnosticHints ? { diagnosticHints } : {}),
108
+ };
109
+ }
110
+ export function isCodexAgent(agent) {
111
+ const name = agent.name.toLowerCase();
112
+ return agent.id === 'codex' || agent.id === 'codex-acp' || name === 'codex' || name.includes('codex');
113
+ }
114
+ export function isClaudeAgent(agent) {
115
+ const name = agent.name.toLowerCase();
116
+ return agent.id === 'claude' || agent.id === 'claude-code' || name.includes('claude');
117
+ }
118
+ export function isNativeRuntimeId(value) {
119
+ return value === 'codex' || value === 'claude';
120
+ }
121
+ export function compactRuntimeHintsForDescriptor(hints, runtime, reason) {
122
+ return compactRuntimeDiagnosticHints(hints, { runtime }).filter((hint) => hint !== reason);
123
+ }
124
+ //# sourceMappingURL=detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/agent-runtime/detection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ export * from './child-process.js';
1
2
  export * from './claude-code-cli.js';
2
3
  export * from './claude-code-sdk.js';
3
4
  export * from './codex-env.js';
4
5
  export * from './runtime-env.js';
6
+ export * from './registry.js';
5
7
  export * from './codex-app-server.js';
6
8
  export * from './run.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
@@ -1,7 +1,9 @@
1
+ export * from './child-process.js';
1
2
  export * from './claude-code-cli.js';
2
3
  export * from './claude-code-sdk.js';
3
4
  export * from './codex-env.js';
4
5
  export * from './runtime-env.js';
6
+ export * from './registry.js';
5
7
  export * from './codex-app-server.js';
6
8
  export * from './run.js';
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,152 @@
1
+ import type { AcpAgentOverride } from '../protocols/acp/index.js';
2
+ import type { AgentRuntimeEnvironmentSettings } from './runtime-env.js';
3
+ export type AgentRuntimeKind = 'mindos' | 'acp' | 'codex' | 'claude';
4
+ export type AgentRuntimeCategory = 'mindos' | 'native' | 'acp' | 'cloud';
5
+ export type NativeRuntimeId = 'codex' | 'claude';
6
+ export type AgentRuntimeStatus = 'available' | 'missing' | 'signed-out' | 'error';
7
+ export type AgentRuntimeCapabilities = {
8
+ ownsModelSelection: boolean;
9
+ supportsResume: boolean;
10
+ supportsFreshSession: boolean;
11
+ supportsListSessions: boolean;
12
+ supportsAttachExisting: boolean;
13
+ supportsFork: boolean;
14
+ supportsArchive: boolean;
15
+ supportsInterrupt: boolean;
16
+ supportsModelList: boolean;
17
+ supportsApprovals: boolean;
18
+ supportsUserInput: boolean;
19
+ supportsToolEvents: boolean;
20
+ supportsRuntimeStatus: boolean;
21
+ supportsDiffs: boolean;
22
+ supportsCheckpoints: boolean;
23
+ supportsBackgroundRuns: boolean;
24
+ supportsMcpConfig: boolean;
25
+ };
26
+ export type AgentRuntimeHarnessCapabilities = {
27
+ session: 'none' | 'local-id' | 'native-thread' | 'cloud-task';
28
+ eventStream: Array<'text' | 'tool-events' | 'thread-turn-item' | 'runtime-status' | 'permissions' | 'user-input'>;
29
+ workspace: 'local-cwd' | 'local-worktree' | 'container' | 'cloud-vm';
30
+ permissions: 'none' | 'mindos-only' | 'runtime-bridged';
31
+ tools: Array<'shell' | 'file' | 'git' | 'browser' | 'mcp' | 'plugins' | 'skills'>;
32
+ output: Array<'text' | 'diff' | 'checkpoint' | 'artifact' | 'branch' | 'pr'>;
33
+ };
34
+ export type AgentRuntimeAdapter = 'mindos' | 'codex-app-server' | 'codex-sdk' | 'claude-cli' | 'claude-sdk' | 'acp';
35
+ export type AgentRuntimeOwner = 'mindos' | 'external';
36
+ export type AgentRuntimeBridge = {
37
+ kind: 'codex-app-server' | 'claude-sdk' | 'claude-cli';
38
+ label: string;
39
+ fallback?: boolean;
40
+ reason?: string;
41
+ };
42
+ export type AgentRuntimeDescriptor = {
43
+ id: string;
44
+ name: string;
45
+ kind: AgentRuntimeKind;
46
+ category?: AgentRuntimeCategory;
47
+ runtimeId?: string;
48
+ adapter: AgentRuntimeAdapter;
49
+ modelOwner: AgentRuntimeOwner;
50
+ authOwner: AgentRuntimeOwner;
51
+ permissionOwner: AgentRuntimeOwner;
52
+ sessionOwner: AgentRuntimeOwner;
53
+ status: AgentRuntimeStatus;
54
+ capabilities: AgentRuntimeCapabilities;
55
+ harnessCapabilities?: AgentRuntimeHarnessCapabilities;
56
+ runtimeBridge?: AgentRuntimeBridge;
57
+ description?: string;
58
+ sourceAgentId?: string;
59
+ canonicalAgentId?: string;
60
+ mcpAgentKey?: string;
61
+ aliases?: string[];
62
+ binaryPath?: string;
63
+ resolvedCommand?: {
64
+ cmd: string;
65
+ args: string[];
66
+ source: 'user-override' | 'descriptor' | 'registry';
67
+ };
68
+ installCmd?: string;
69
+ packageName?: string;
70
+ availability?: {
71
+ checkedAt: string;
72
+ sources: Array<'acp-detect' | 'acp-registry' | 'mcp-agents' | 'native-health' | 'settings'>;
73
+ reason?: string;
74
+ diagnosticHints?: string[];
75
+ stale?: boolean;
76
+ };
77
+ };
78
+ export type DetectedRuntimeAgent = {
79
+ id: string;
80
+ name: string;
81
+ binaryPath: string;
82
+ resolvedCommand?: NonNullable<AgentRuntimeDescriptor['resolvedCommand']>;
83
+ status?: Exclude<AgentRuntimeStatus, 'missing'>;
84
+ reason?: string;
85
+ diagnosticHints?: string[];
86
+ runtimeBridge?: AgentRuntimeBridge;
87
+ };
88
+ export type MissingRuntimeAgent = {
89
+ id: string;
90
+ name: string;
91
+ installCmd: string;
92
+ packageName?: string;
93
+ status?: Extract<AgentRuntimeStatus, 'missing' | 'error'>;
94
+ reason?: string;
95
+ diagnosticHints?: string[];
96
+ };
97
+ export type AgentRuntimesPayload = {
98
+ runtimes: AgentRuntimeDescriptor[];
99
+ installed: DetectedRuntimeAgent[];
100
+ notInstalled: MissingRuntimeAgent[];
101
+ };
102
+ export type AgentRuntimePayload = {
103
+ runtime: AgentRuntimeDescriptor;
104
+ };
105
+ export type AgentRuntimesSettings = {
106
+ acpAgents?: Record<string, AcpAgentOverride>;
107
+ agentRuntimeEnv?: AgentRuntimeEnvironmentSettings;
108
+ };
109
+ export type NativeRuntimeHealthResult = {
110
+ status: Exclude<AgentRuntimeStatus, 'missing'>;
111
+ reason?: string;
112
+ diagnosticHints?: string[];
113
+ runtimeBridge?: AgentRuntimeBridge;
114
+ };
115
+ export type NativeRuntimeHealthInput = {
116
+ runtime: NativeRuntimeId;
117
+ agent: DetectedRuntimeAgent;
118
+ timeoutMs?: number;
119
+ };
120
+ export type AgentRuntimesServices = {
121
+ readSettings?(): AgentRuntimesSettings;
122
+ detectLocalAcpAgents?(options?: {
123
+ overrides?: Record<string, AcpAgentOverride>;
124
+ }): Promise<{
125
+ installed: unknown[];
126
+ notInstalled: unknown[];
127
+ }>;
128
+ checkNativeRuntimeHealth?(input: NativeRuntimeHealthInput): Promise<NativeRuntimeHealthResult>;
129
+ resolveRuntimeCommand?(command: string): Promise<string | null>;
130
+ now?(): number;
131
+ };
132
+ export declare const RUNTIME_DETECTION_TIMEOUT_MS = 5000;
133
+ export declare const NATIVE_HEALTH_TIMEOUT_MS = 20000;
134
+ export declare const nativeRuntimeDefinitions: Array<{
135
+ id: 'codex-acp' | 'claude';
136
+ name: string;
137
+ runtime: NativeRuntimeId;
138
+ command: string;
139
+ installCmd: string;
140
+ }>;
141
+ export declare function buildAgentRuntimesPayload(input: {
142
+ installed: unknown[];
143
+ notInstalled: unknown[];
144
+ checkedAt: string;
145
+ }): AgentRuntimesPayload;
146
+ export declare function buildAcpScopedPayload(input: {
147
+ installed: unknown[];
148
+ notInstalled: unknown[];
149
+ checkedAt: string;
150
+ }): AgentRuntimesPayload;
151
+ export declare function applyNativeRuntimeHealth(installed: unknown[], services: AgentRuntimesServices, checkNativeRuntimeHealthFallback: (input: NativeRuntimeHealthInput) => Promise<NativeRuntimeHealthResult>): Promise<unknown[]>;
152
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { acpRuntimeDescriptor, mindosRuntimeDescriptor, nativeDescriptor, } from './descriptors.js';
2
+ import { classifyRuntimeFailure, isClaudeAgent, isCodexAgent, normalizeInstalled, normalizeMissing, } from './detection.js';
3
+ export const RUNTIME_DETECTION_TIMEOUT_MS = 5000;
4
+ export const NATIVE_HEALTH_TIMEOUT_MS = 20000;
5
+ export const nativeRuntimeDefinitions = [
6
+ { id: 'codex-acp', name: 'Codex', runtime: 'codex', command: 'codex', installCmd: 'npm install -g @openai/codex' },
7
+ { id: 'claude', name: 'Claude Code', runtime: 'claude', command: 'claude', installCmd: 'npm install -g @anthropic-ai/claude-code' },
8
+ ];
9
+ export function buildAgentRuntimesPayload(input) {
10
+ const installed = input.installed.map(normalizeInstalled).filter((agent) => !!agent);
11
+ const notInstalled = input.notInstalled.map(normalizeMissing).filter((agent) => !!agent);
12
+ const codexInstalled = installed.find(isCodexAgent);
13
+ const claudeInstalled = installed.find(isClaudeAgent);
14
+ const codexMissing = notInstalled.find(isCodexAgent);
15
+ const claudeMissing = notInstalled.find(isClaudeAgent);
16
+ const runtimes = [
17
+ mindosRuntimeDescriptor(input.checkedAt),
18
+ nativeDescriptor({
19
+ id: 'codex',
20
+ name: 'Codex',
21
+ checkedAt: input.checkedAt,
22
+ ...(codexInstalled ? { source: codexInstalled } : {}),
23
+ ...(codexMissing ? { missing: codexMissing } : {}),
24
+ }),
25
+ nativeDescriptor({
26
+ id: 'claude',
27
+ name: 'Claude Code',
28
+ checkedAt: input.checkedAt,
29
+ ...(claudeInstalled ? { source: claudeInstalled } : {}),
30
+ ...(claudeMissing ? { missing: claudeMissing } : {}),
31
+ }),
32
+ ...installed
33
+ .filter((agent) => !isCodexAgent(agent) && !isClaudeAgent(agent))
34
+ .map((agent) => acpRuntimeDescriptor(agent, input.checkedAt)),
35
+ ];
36
+ return { runtimes, installed, notInstalled };
37
+ }
38
+ export function buildAcpScopedPayload(input) {
39
+ const installed = input.installed
40
+ .map(normalizeInstalled)
41
+ .filter((agent) => !!agent && !isCodexAgent(agent) && !isClaudeAgent(agent));
42
+ const notInstalled = input.notInstalled
43
+ .map(normalizeMissing)
44
+ .filter((agent) => !!agent && !isCodexAgent(agent) && !isClaudeAgent(agent));
45
+ const runtimes = installed.map((agent) => acpRuntimeDescriptor(agent, input.checkedAt));
46
+ return { runtimes, installed, notInstalled };
47
+ }
48
+ export async function applyNativeRuntimeHealth(installed, services, checkNativeRuntimeHealthFallback) {
49
+ const checkNativeRuntimeHealth = services.checkNativeRuntimeHealth ?? checkNativeRuntimeHealthFallback;
50
+ const normalized = installed.map((agent) => ({ raw: agent, detected: normalizeInstalled(agent) }));
51
+ const enriched = await Promise.all(normalized.map(async ({ raw, detected }) => {
52
+ if (!detected)
53
+ return raw;
54
+ const runtime = isCodexAgent(detected) ? 'codex' : isClaudeAgent(detected) ? 'claude' : null;
55
+ if (!runtime)
56
+ return raw;
57
+ if (detected.status)
58
+ return raw;
59
+ try {
60
+ const health = await checkNativeRuntimeHealth({
61
+ runtime,
62
+ agent: detected,
63
+ timeoutMs: NATIVE_HEALTH_TIMEOUT_MS,
64
+ });
65
+ return {
66
+ ...(raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : detected),
67
+ status: health.status,
68
+ ...(health.reason ? { reason: health.reason } : {}),
69
+ ...(health.diagnosticHints ? { diagnosticHints: health.diagnosticHints } : {}),
70
+ ...(health.runtimeBridge ? { runtimeBridge: health.runtimeBridge } : {}),
71
+ };
72
+ }
73
+ catch (error) {
74
+ const result = classifyRuntimeFailure(error instanceof Error ? error.message : String(error), runtime);
75
+ return {
76
+ ...(raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : detected),
77
+ status: result.status,
78
+ ...(result.reason ? { reason: result.reason } : {}),
79
+ };
80
+ }
81
+ }));
82
+ return enriched;
83
+ }
84
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agent-runtime/registry.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,12 @@ export type MindosRuntimePermissionOption = {
49
49
  label: string;
50
50
  description?: string;
51
51
  intent?: 'allow' | 'deny' | 'cancel';
52
+ scope?: 'once' | 'session' | 'always' | 'turn';
53
+ };
54
+ export type MindosRuntimePermissionRisk = {
55
+ level: 'low' | 'medium' | 'high';
56
+ summary: string;
57
+ reasons?: string[];
52
58
  };
53
59
  export type MindosRuntimePermissionRequest = {
54
60
  runtime: 'codex' | 'claude';
@@ -57,10 +63,16 @@ export type MindosRuntimePermissionRequest = {
57
63
  input: unknown;
58
64
  options: MindosRuntimePermissionOption[];
59
65
  reason?: string;
66
+ action?: string;
67
+ resource?: string;
68
+ risk?: MindosRuntimePermissionRisk;
60
69
  };
61
70
  export type MindosRuntimePermissionResult = {
62
71
  decision: string;
63
72
  cancelled?: boolean;
73
+ decisionLabel?: string;
74
+ decisionIntent?: 'allow' | 'deny' | 'cancel';
75
+ decisionScope?: 'once' | 'session' | 'always' | 'turn';
64
76
  };
65
77
  export type MindosRuntimeUserQuestionOption = {
66
78
  label: string;