@calliopelabs/cli 3.5.3 → 3.6.0

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 (327) hide show
  1. package/README.md +8 -0
  2. package/dist/acp.d.ts +10 -3
  3. package/dist/acp.d.ts.map +1 -1
  4. package/dist/acp.js +27 -7
  5. package/dist/acp.js.map +1 -1
  6. package/dist/bin.d.ts.map +1 -1
  7. package/dist/bin.js +28 -11
  8. package/dist/bin.js.map +1 -1
  9. package/dist/brain/access.d.ts.map +1 -1
  10. package/dist/brain/access.js +2 -1
  11. package/dist/brain/access.js.map +1 -1
  12. package/dist/config.d.ts +2 -2
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +7 -6
  15. package/dist/config.js.map +1 -1
  16. package/dist/execution/authority.d.ts +4 -1
  17. package/dist/execution/authority.d.ts.map +1 -1
  18. package/dist/execution/authority.js +23 -7
  19. package/dist/execution/authority.js.map +1 -1
  20. package/dist/execution/child-grants.d.ts +2 -0
  21. package/dist/execution/child-grants.d.ts.map +1 -1
  22. package/dist/execution/child-grants.js +19 -4
  23. package/dist/execution/child-grants.js.map +1 -1
  24. package/dist/execution/delegated.d.ts +14 -0
  25. package/dist/execution/delegated.d.ts.map +1 -0
  26. package/dist/execution/delegated.js +66 -0
  27. package/dist/execution/delegated.js.map +1 -0
  28. package/dist/execution/files.js +6 -6
  29. package/dist/execution/files.js.map +1 -1
  30. package/dist/execution/guard.d.ts +5 -0
  31. package/dist/execution/guard.d.ts.map +1 -1
  32. package/dist/execution/guard.js +31 -16
  33. package/dist/execution/guard.js.map +1 -1
  34. package/dist/execution/index.d.ts +4 -0
  35. package/dist/execution/index.d.ts.map +1 -1
  36. package/dist/execution/index.js +4 -0
  37. package/dist/execution/index.js.map +1 -1
  38. package/dist/execution/ledger-cli.d.ts +2 -1
  39. package/dist/execution/ledger-cli.d.ts.map +1 -1
  40. package/dist/execution/ledger-cli.js +51 -14
  41. package/dist/execution/ledger-cli.js.map +1 -1
  42. package/dist/execution/ledger-protocol.d.ts +6 -2
  43. package/dist/execution/ledger-protocol.d.ts.map +1 -1
  44. package/dist/execution/ledger-protocol.js +110 -24
  45. package/dist/execution/ledger-protocol.js.map +1 -1
  46. package/dist/execution/ledger-server.d.ts +13 -0
  47. package/dist/execution/ledger-server.d.ts.map +1 -1
  48. package/dist/execution/ledger-server.js +57 -13
  49. package/dist/execution/ledger-server.js.map +1 -1
  50. package/dist/execution/ledger-tunnel.d.ts +50 -0
  51. package/dist/execution/ledger-tunnel.d.ts.map +1 -0
  52. package/dist/execution/ledger-tunnel.js +307 -0
  53. package/dist/execution/ledger-tunnel.js.map +1 -0
  54. package/dist/execution/ledger.d.ts +4 -0
  55. package/dist/execution/ledger.d.ts.map +1 -1
  56. package/dist/execution/ledger.js +30 -4
  57. package/dist/execution/ledger.js.map +1 -1
  58. package/dist/execution/parent-accounting.d.ts +41 -0
  59. package/dist/execution/parent-accounting.d.ts.map +1 -0
  60. package/dist/execution/parent-accounting.js +52 -0
  61. package/dist/execution/parent-accounting.js.map +1 -0
  62. package/dist/execution/parent-budget.d.ts +25 -0
  63. package/dist/execution/parent-budget.d.ts.map +1 -0
  64. package/dist/execution/parent-budget.js +102 -0
  65. package/dist/execution/parent-budget.js.map +1 -0
  66. package/dist/execution/project-spend.d.ts.map +1 -1
  67. package/dist/execution/project-spend.js +35 -5
  68. package/dist/execution/project-spend.js.map +1 -1
  69. package/dist/execution/quote.js +1 -1
  70. package/dist/execution/quote.js.map +1 -1
  71. package/dist/execution/remote-checkpoint.d.ts +15 -0
  72. package/dist/execution/remote-checkpoint.d.ts.map +1 -0
  73. package/dist/execution/remote-checkpoint.js +165 -0
  74. package/dist/execution/remote-checkpoint.js.map +1 -0
  75. package/dist/execution/remote-ledger.d.ts +12 -2
  76. package/dist/execution/remote-ledger.d.ts.map +1 -1
  77. package/dist/execution/remote-ledger.js +53 -21
  78. package/dist/execution/remote-ledger.js.map +1 -1
  79. package/dist/execution/types.d.ts +23 -5
  80. package/dist/execution/types.d.ts.map +1 -1
  81. package/dist/execution/types.js.map +1 -1
  82. package/dist/goals/supervised.js +2 -2
  83. package/dist/goals/supervised.js.map +1 -1
  84. package/dist/headless.d.ts +2 -6
  85. package/dist/headless.d.ts.map +1 -1
  86. package/dist/headless.js +17 -21
  87. package/dist/headless.js.map +1 -1
  88. package/dist/health/target.js +1 -1
  89. package/dist/health/target.js.map +1 -1
  90. package/dist/improvement/actions.d.ts +3 -4
  91. package/dist/improvement/actions.d.ts.map +1 -1
  92. package/dist/improvement/actions.js +10 -7
  93. package/dist/improvement/actions.js.map +1 -1
  94. package/dist/improvement/capabilities.d.ts +54 -0
  95. package/dist/improvement/capabilities.d.ts.map +1 -0
  96. package/dist/improvement/capabilities.js +44 -0
  97. package/dist/improvement/capabilities.js.map +1 -0
  98. package/dist/improvement/cli.d.ts +1 -1
  99. package/dist/improvement/cli.d.ts.map +1 -1
  100. package/dist/improvement/cli.js +14 -2
  101. package/dist/improvement/cli.js.map +1 -1
  102. package/dist/improvement/index.d.ts +5 -0
  103. package/dist/improvement/index.d.ts.map +1 -1
  104. package/dist/improvement/index.js +5 -0
  105. package/dist/improvement/index.js.map +1 -1
  106. package/dist/improvement/proposal-hash.d.ts +3 -0
  107. package/dist/improvement/proposal-hash.d.ts.map +1 -0
  108. package/dist/improvement/proposal-hash.js +5 -0
  109. package/dist/improvement/proposal-hash.js.map +1 -0
  110. package/dist/improvement/review-contract.d.ts +32 -0
  111. package/dist/improvement/review-contract.d.ts.map +1 -0
  112. package/dist/improvement/review-contract.js +62 -0
  113. package/dist/improvement/review-contract.js.map +1 -0
  114. package/dist/improvement/review-requests.d.ts +72 -0
  115. package/dist/improvement/review-requests.d.ts.map +1 -0
  116. package/dist/improvement/review-requests.js +63 -0
  117. package/dist/improvement/review-requests.js.map +1 -0
  118. package/dist/improvement/source-changes.d.ts +78 -0
  119. package/dist/improvement/source-changes.d.ts.map +1 -0
  120. package/dist/improvement/source-changes.js +91 -0
  121. package/dist/improvement/source-changes.js.map +1 -0
  122. package/dist/improvement/task-outcomes.d.ts +82 -0
  123. package/dist/improvement/task-outcomes.d.ts.map +1 -0
  124. package/dist/improvement/task-outcomes.js +72 -0
  125. package/dist/improvement/task-outcomes.js.map +1 -0
  126. package/dist/index.d.ts +10 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +6 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/isolation/contracts.d.ts +13 -0
  131. package/dist/isolation/contracts.d.ts.map +1 -1
  132. package/dist/isolation/contracts.js +9 -1
  133. package/dist/isolation/contracts.js.map +1 -1
  134. package/dist/isolation/coordinator.d.ts.map +1 -1
  135. package/dist/isolation/coordinator.js +4 -0
  136. package/dist/isolation/coordinator.js.map +1 -1
  137. package/dist/isolation/process.d.ts.map +1 -1
  138. package/dist/isolation/process.js +3 -1
  139. package/dist/isolation/process.js.map +1 -1
  140. package/dist/isolation/worktree.d.ts +9 -1
  141. package/dist/isolation/worktree.d.ts.map +1 -1
  142. package/dist/isolation/worktree.js +8 -3
  143. package/dist/isolation/worktree.js.map +1 -1
  144. package/dist/local-model.d.ts +4 -4
  145. package/dist/local-model.js +5 -5
  146. package/dist/local-model.js.map +1 -1
  147. package/dist/memory.d.ts +5 -3
  148. package/dist/memory.d.ts.map +1 -1
  149. package/dist/memory.js +8 -6
  150. package/dist/memory.js.map +1 -1
  151. package/dist/migration/assessment-contract.d.ts +60 -0
  152. package/dist/migration/assessment-contract.d.ts.map +1 -0
  153. package/dist/migration/assessment-contract.js +132 -0
  154. package/dist/migration/assessment-contract.js.map +1 -0
  155. package/dist/migration/assessment-schema.d.ts +19 -0
  156. package/dist/migration/assessment-schema.d.ts.map +1 -0
  157. package/dist/migration/assessment-schema.js +43 -0
  158. package/dist/migration/assessment-schema.js.map +1 -0
  159. package/dist/migration/assessment.d.ts +159 -0
  160. package/dist/migration/assessment.d.ts.map +1 -0
  161. package/dist/migration/assessment.js +219 -0
  162. package/dist/migration/assessment.js.map +1 -0
  163. package/dist/migration/cli.d.ts +6 -0
  164. package/dist/migration/cli.d.ts.map +1 -0
  165. package/dist/migration/cli.js +101 -0
  166. package/dist/migration/cli.js.map +1 -0
  167. package/dist/migration/evidence.d.ts +27 -0
  168. package/dist/migration/evidence.d.ts.map +1 -0
  169. package/dist/migration/evidence.js +124 -0
  170. package/dist/migration/evidence.js.map +1 -0
  171. package/dist/migration/example.d.ts +33 -0
  172. package/dist/migration/example.d.ts.map +1 -0
  173. package/dist/migration/example.js +28 -0
  174. package/dist/migration/example.js.map +1 -0
  175. package/dist/migration/index.d.ts +21 -0
  176. package/dist/migration/index.d.ts.map +1 -0
  177. package/dist/migration/index.js +15 -0
  178. package/dist/migration/index.js.map +1 -0
  179. package/dist/migration/inventory.d.ts +70 -0
  180. package/dist/migration/inventory.d.ts.map +1 -0
  181. package/dist/migration/inventory.js +233 -0
  182. package/dist/migration/inventory.js.map +1 -0
  183. package/dist/migration/schema.d.ts +61 -0
  184. package/dist/migration/schema.d.ts.map +1 -0
  185. package/dist/migration/schema.js +76 -0
  186. package/dist/migration/schema.js.map +1 -0
  187. package/dist/migration/verification.d.ts +146 -0
  188. package/dist/migration/verification.d.ts.map +1 -0
  189. package/dist/migration/verification.js +260 -0
  190. package/dist/migration/verification.js.map +1 -0
  191. package/dist/model-detection.d.ts.map +1 -1
  192. package/dist/model-detection.js +2 -39
  193. package/dist/model-detection.js.map +1 -1
  194. package/dist/orchestration/actions.d.ts +2 -0
  195. package/dist/orchestration/actions.d.ts.map +1 -1
  196. package/dist/orchestration/actions.js.map +1 -1
  197. package/dist/orchestration/artifact-host.d.ts +46 -0
  198. package/dist/orchestration/artifact-host.d.ts.map +1 -0
  199. package/dist/orchestration/artifact-host.js +64 -0
  200. package/dist/orchestration/artifact-host.js.map +1 -0
  201. package/dist/orchestration/coordinator-actions.d.ts +1 -1
  202. package/dist/orchestration/coordinator-actions.d.ts.map +1 -1
  203. package/dist/orchestration/coordinator-actions.js +5 -3
  204. package/dist/orchestration/coordinator-actions.js.map +1 -1
  205. package/dist/orchestration/coordinator-types.d.ts +23 -2
  206. package/dist/orchestration/coordinator-types.d.ts.map +1 -1
  207. package/dist/orchestration/coordinator.d.ts +5 -0
  208. package/dist/orchestration/coordinator.d.ts.map +1 -1
  209. package/dist/orchestration/coordinator.js +30 -13
  210. package/dist/orchestration/coordinator.js.map +1 -1
  211. package/dist/orchestration/execution-cli.d.ts +1 -1
  212. package/dist/orchestration/execution-cli.d.ts.map +1 -1
  213. package/dist/orchestration/execution-cli.js +29 -6
  214. package/dist/orchestration/execution-cli.js.map +1 -1
  215. package/dist/orchestration/execution-journal.d.ts.map +1 -1
  216. package/dist/orchestration/execution-journal.js +79 -6
  217. package/dist/orchestration/execution-journal.js.map +1 -1
  218. package/dist/orchestration/execution-store.d.ts +5 -1
  219. package/dist/orchestration/execution-store.d.ts.map +1 -1
  220. package/dist/orchestration/execution-store.js +66 -5
  221. package/dist/orchestration/execution-store.js.map +1 -1
  222. package/dist/orchestration/execution.d.ts.map +1 -1
  223. package/dist/orchestration/execution.js +37 -10
  224. package/dist/orchestration/execution.js.map +1 -1
  225. package/dist/orchestration/index.d.ts +6 -0
  226. package/dist/orchestration/index.d.ts.map +1 -1
  227. package/dist/orchestration/index.js +6 -0
  228. package/dist/orchestration/index.js.map +1 -1
  229. package/dist/orchestration/interruption.d.ts +10 -0
  230. package/dist/orchestration/interruption.d.ts.map +1 -0
  231. package/dist/orchestration/interruption.js +38 -0
  232. package/dist/orchestration/interruption.js.map +1 -0
  233. package/dist/orchestration/question-contract.d.ts +19 -0
  234. package/dist/orchestration/question-contract.d.ts.map +1 -0
  235. package/dist/orchestration/question-contract.js +21 -0
  236. package/dist/orchestration/question-contract.js.map +1 -0
  237. package/dist/orchestration/questions.d.ts +9 -0
  238. package/dist/orchestration/questions.d.ts.map +1 -0
  239. package/dist/orchestration/questions.js +75 -0
  240. package/dist/orchestration/questions.js.map +1 -0
  241. package/dist/orchestration/reviewed-ledger.d.ts +23 -0
  242. package/dist/orchestration/reviewed-ledger.d.ts.map +1 -0
  243. package/dist/orchestration/reviewed-ledger.js +49 -0
  244. package/dist/orchestration/reviewed-ledger.js.map +1 -0
  245. package/dist/orchestration/source-candidates.d.ts +64 -0
  246. package/dist/orchestration/source-candidates.d.ts.map +1 -0
  247. package/dist/orchestration/source-candidates.js +95 -0
  248. package/dist/orchestration/source-candidates.js.map +1 -0
  249. package/dist/orchestration/validation.js +1 -1
  250. package/dist/orchestration/validation.js.map +1 -1
  251. package/dist/providers/compat.d.ts +1 -1
  252. package/dist/providers/compat.d.ts.map +1 -1
  253. package/dist/providers/compat.js +4 -8
  254. package/dist/providers/compat.js.map +1 -1
  255. package/dist/providers/index.d.ts.map +1 -1
  256. package/dist/providers/index.js +6 -7
  257. package/dist/providers/index.js.map +1 -1
  258. package/dist/runlog.js +2 -2
  259. package/dist/runlog.js.map +1 -1
  260. package/dist/runtime/permissions.d.ts.map +1 -1
  261. package/dist/runtime/permissions.js +3 -2
  262. package/dist/runtime/permissions.js.map +1 -1
  263. package/dist/runtime/turn.d.ts +2 -0
  264. package/dist/runtime/turn.d.ts.map +1 -1
  265. package/dist/runtime/turn.js +21 -7
  266. package/dist/runtime/turn.js.map +1 -1
  267. package/dist/session-management/actions.js +1 -1
  268. package/dist/session-management/actions.js.map +1 -1
  269. package/dist/sessions/execution-binding.d.ts +8 -0
  270. package/dist/sessions/execution-binding.d.ts.map +1 -0
  271. package/dist/sessions/execution-binding.js +9 -0
  272. package/dist/sessions/execution-binding.js.map +1 -0
  273. package/dist/sessions/index.d.ts +1 -0
  274. package/dist/sessions/index.d.ts.map +1 -1
  275. package/dist/sessions/index.js +1 -0
  276. package/dist/sessions/index.js.map +1 -1
  277. package/dist/setup.d.ts.map +1 -1
  278. package/dist/setup.js +1 -26
  279. package/dist/setup.js.map +1 -1
  280. package/dist/source-changes/writer.d.ts +77 -0
  281. package/dist/source-changes/writer.d.ts.map +1 -0
  282. package/dist/source-changes/writer.js +189 -0
  283. package/dist/source-changes/writer.js.map +1 -0
  284. package/dist/spawning/actions.d.ts +10 -1
  285. package/dist/spawning/actions.d.ts.map +1 -1
  286. package/dist/spawning/actions.js +26 -7
  287. package/dist/spawning/actions.js.map +1 -1
  288. package/dist/spawning/cli.js +1 -1
  289. package/dist/spawning/cli.js.map +1 -1
  290. package/dist/spawning/execution.d.ts.map +1 -1
  291. package/dist/spawning/execution.js +2 -0
  292. package/dist/spawning/execution.js.map +1 -1
  293. package/dist/spawning/types.d.ts +19 -6
  294. package/dist/spawning/types.d.ts.map +1 -1
  295. package/dist/spawning/validation.d.ts +16 -0
  296. package/dist/spawning/validation.d.ts.map +1 -1
  297. package/dist/spawning/validation.js +44 -8
  298. package/dist/spawning/validation.js.map +1 -1
  299. package/dist/storage.d.ts +3 -0
  300. package/dist/storage.d.ts.map +1 -1
  301. package/dist/storage.js +6 -1
  302. package/dist/storage.js.map +1 -1
  303. package/dist/supervision/contracts.js +4 -1
  304. package/dist/supervision/contracts.js.map +1 -1
  305. package/dist/tools.d.ts +1 -0
  306. package/dist/tools.d.ts.map +1 -1
  307. package/dist/tools.js +7 -2
  308. package/dist/tools.js.map +1 -1
  309. package/dist/types.d.ts +1 -1
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/types.js +0 -1
  312. package/dist/types.js.map +1 -1
  313. package/dist/ui/regions/modal-host.d.ts.map +1 -1
  314. package/dist/ui/regions/modal-host.js +1 -3
  315. package/dist/ui/regions/modal-host.js.map +1 -1
  316. package/dist/ui/state/use-chat-controller.js +2 -2
  317. package/dist/ui/state/use-chat-controller.js.map +1 -1
  318. package/docs/README.md +66 -0
  319. package/docs/delegation-ledger.md +329 -0
  320. package/docs/migration-assessment.md +113 -0
  321. package/docs/migration-example-plan.json +88 -0
  322. package/docs/migration-example-report.json +511 -0
  323. package/docs/migration-inventory.md +63 -0
  324. package/docs/migration-playbook.md +152 -0
  325. package/docs/migration-verification.md +177 -0
  326. package/docs/releases/3.6.0.md +43 -0
  327. package/package.json +7 -2
@@ -0,0 +1,146 @@
1
+ import type { CommandEvidence } from '../isolation/contracts.js';
2
+ export declare const VERIFIER_VERSION = "byte-parity-v1";
3
+ export declare const VERIFICATION_ADAPTER = "javascript-to-typescript-cli/v1";
4
+ export type SourcePin = {
5
+ revision: string;
6
+ path: string;
7
+ object: string;
8
+ };
9
+ export type ExpectedBehavior = {
10
+ exitCode: number;
11
+ stdout: string;
12
+ stderr: string;
13
+ };
14
+ export type BehaviorFingerprint = {
15
+ exitCode: number;
16
+ stdout: {
17
+ sha256: string;
18
+ bytes: number;
19
+ };
20
+ stderr: {
21
+ sha256: string;
22
+ bytes: number;
23
+ };
24
+ };
25
+ export type VerificationPlan = {
26
+ format: 'calliope.migration.verification-plan/v1';
27
+ adapter: typeof VERIFICATION_ADAPTER;
28
+ verifier: typeof VERIFIER_VERSION;
29
+ runtime: {
30
+ image: string;
31
+ node: string;
32
+ };
33
+ source: SourcePin;
34
+ candidate: SourcePin;
35
+ negative: SourcePin;
36
+ rules: SourcePin;
37
+ cases: {
38
+ id: string;
39
+ argument: string;
40
+ expected: ExpectedBehavior;
41
+ }[];
42
+ negativeControl: {
43
+ caseId: string;
44
+ expected: ExpectedBehavior;
45
+ };
46
+ limits: {
47
+ commandTimeoutMs: number;
48
+ totalMs: number;
49
+ };
50
+ };
51
+ export type BaselinePlan = Omit<VerificationPlan, 'format' | 'candidate'> & {
52
+ format: 'calliope.migration.baseline-plan/v1';
53
+ };
54
+ export declare const byteFingerprint: (text: string) => {
55
+ sha256: string;
56
+ bytes: number;
57
+ };
58
+ export declare const behaviorFingerprint: (value: ExpectedBehavior) => BehaviorFingerprint;
59
+ export declare function compareBehavior(a: BehaviorFingerprint, b: BehaviorFingerprint): boolean;
60
+ /** Adversarial sanity checks run before any repository code, including the baseline. */
61
+ export declare function comparatorHealthy(compare?: typeof compareBehavior): boolean;
62
+ export declare function analyzeVerificationPlan(value: unknown): {
63
+ plan: VerificationPlan;
64
+ digest: string;
65
+ commandCount: number;
66
+ };
67
+ export declare function analyzeBaselinePlan(value: unknown): {
68
+ plan: BaselinePlan;
69
+ digest: string;
70
+ commandCount: number;
71
+ };
72
+ export interface VerificationOptions {
73
+ signal?: AbortSignal;
74
+ /** Host authority. Never accept an approval callback from agent-authored JSON. */
75
+ approve: (request: {
76
+ digest: string;
77
+ repository: string;
78
+ pins: SourcePin[];
79
+ image: string;
80
+ commandCount: number;
81
+ totalMs: number;
82
+ }) => Promise<boolean>;
83
+ /** A host may impose an earlier inherited deadline and reserve commands in its ledger. */
84
+ deadline?: number;
85
+ reserveCommand?: (request: {
86
+ digest: string;
87
+ phase: string;
88
+ caseId: string | null;
89
+ command: number;
90
+ }) => Promise<boolean>;
91
+ }
92
+ type Phase = 'runtime' | 'baseline' | 'negative-control' | 'candidate';
93
+ type Outcome = 'passed' | 'baseline-verified' | 'input-failure' | 'baseline-failure' | 'verifier-failure' | 'regression' | 'environment-failure' | 'cancelled';
94
+ /** The existing isolated-command owner executes every observation; no provider or worker scheduler. */
95
+ export declare function verifyMigration(repository: string, input: unknown, options: VerificationOptions): Promise<FullVerificationReport>;
96
+ /** Establish the original contract and reject a known regression before a candidate exists. */
97
+ export declare function verifyMigrationBaseline(repository: string, input: unknown, options: VerificationOptions): Promise<BaselineReport>;
98
+ type ExecutionReport = Awaited<ReturnType<typeof executeVerification>>;
99
+ type FullVerificationReport = Omit<ExecutionReport, 'pins' | 'outcome'> & {
100
+ pins: Pick<VerificationPlan, 'source' | 'candidate' | 'negative' | 'rules'>;
101
+ outcome: Exclude<Outcome, 'baseline-verified'>;
102
+ };
103
+ type BaselineReport = Omit<ExecutionReport, 'pins' | 'outcome'> & {
104
+ pins: Pick<BaselinePlan, 'source' | 'negative' | 'rules'>;
105
+ outcome: Exclude<Outcome, 'passed' | 'regression'>;
106
+ };
107
+ declare function executeVerification(repository: string, analysis: {
108
+ plan: VerificationPlan | BaselinePlan;
109
+ digest: string;
110
+ commandCount: number;
111
+ }, options: VerificationOptions): Promise<{
112
+ format: string;
113
+ verifier: string;
114
+ adapter: "javascript-to-typescript-cli/v1";
115
+ planDigest: string;
116
+ runtime: {
117
+ image: string;
118
+ node: string;
119
+ };
120
+ pins: {
121
+ source: SourcePin;
122
+ negative: SourcePin;
123
+ rules: SourcePin;
124
+ candidate?: undefined;
125
+ } | {
126
+ source: SourcePin;
127
+ candidate: SourcePin;
128
+ negative: SourcePin;
129
+ rules: SourcePin;
130
+ };
131
+ outcome: Outcome;
132
+ reason: string;
133
+ observations: {
134
+ phase: Phase;
135
+ caseId: string | null;
136
+ matches: boolean | null;
137
+ evidence: Omit<CommandEvidence, 'stdout' | 'stderr'>;
138
+ }[];
139
+ commandsUsed: number;
140
+ commandLimit: number;
141
+ retainedWorkspace: string | null;
142
+ limitations: string[];
143
+ digest: string;
144
+ }>;
145
+ export {};
146
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/migration/verification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, lstatSync, rmSync, realpathSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ import { canonicalJson, digest } from '../approvals/index.js';
6
+ import { throwIfCancelled, cancellable } from '../cancellation.js';
7
+ import { worktreeGit } from '../isolation/worktree.js';
8
+ import { assertLocalIsolationImage, runIsolatedCommand } from '../isolation/process.js';
9
+ import { inventorySource, MigrationError, sourcePath } from './inventory.js';
10
+ export const VERIFIER_VERSION = 'byte-parity-v1';
11
+ export const VERIFICATION_ADAPTER = 'javascript-to-typescript-cli/v1';
12
+ function fail(message) { throw new MigrationError('invalid', message); }
13
+ const hash = (s) => typeof s === 'string' && /^[a-f0-9]{64}$/.test(s);
14
+ const oid = (s) => typeof s === 'string' && /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(s);
15
+ function shape(v, keys) {
16
+ if (!v || typeof v !== 'object' || Array.isArray(v) || Object.keys(v).length !== keys.length || keys.some(k => !Object.hasOwn(v, k)))
17
+ fail('Invalid migration verification fields.');
18
+ }
19
+ function expected(v) {
20
+ shape(v, ['exitCode', 'stdout', 'stderr']);
21
+ if (!Number.isSafeInteger(v.exitCode) || Number(v.exitCode) < 0 || Number(v.exitCode) > 124 ||
22
+ typeof v.stdout !== 'string' || typeof v.stderr !== 'string' || Buffer.byteLength(v.stdout) > 8192 || Buffer.byteLength(v.stderr) > 8192)
23
+ fail('Use bounded expected output and exit codes 0–124.');
24
+ }
25
+ export const byteFingerprint = (text) => ({ sha256: digest(text), bytes: Buffer.byteLength(text) });
26
+ export const behaviorFingerprint = (value) => ({ exitCode: value.exitCode, stdout: byteFingerprint(value.stdout), stderr: byteFingerprint(value.stderr) });
27
+ export function compareBehavior(a, b) {
28
+ return a.exitCode === b.exitCode && a.stdout.sha256 === b.stdout.sha256 && a.stdout.bytes === b.stdout.bytes && a.stderr.sha256 === b.stderr.sha256 && a.stderr.bytes === b.stderr.bytes;
29
+ }
30
+ /** Adversarial sanity checks run before any repository code, including the baseline. */
31
+ export function comparatorHealthy(compare = compareBehavior) {
32
+ const a = behaviorFingerprint({ exitCode: 0, stdout: 'public result\n', stderr: 'notice\n' });
33
+ try {
34
+ return compare(a, { ...a, stdout: { ...a.stdout }, stderr: { ...a.stderr } }) && !compare(a, { ...a, exitCode: 1 }) &&
35
+ !compare(a, { ...a, stdout: byteFingerprint('public RESULT\n') }) &&
36
+ !compare(a, { ...a, stderr: byteFingerprint('NOTICE\n') }) &&
37
+ !compare(a, { ...a, stdout: { ...a.stdout, bytes: a.stdout.bytes + 1 } }) &&
38
+ !compare(a, { ...a, stderr: { ...a.stderr, bytes: a.stderr.bytes + 1 } });
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ export function analyzeVerificationPlan(value) {
45
+ return analyzePlan(value, false);
46
+ }
47
+ export function analyzeBaselinePlan(value) {
48
+ return analyzePlan(value, true);
49
+ }
50
+ function analyzePlan(value, baselineOnly) {
51
+ let raw;
52
+ try {
53
+ raw = canonicalJson(value);
54
+ }
55
+ catch {
56
+ return fail('Use bounded plain JSON for the verification plan.');
57
+ }
58
+ if (Buffer.byteLength(raw) > 262144)
59
+ fail('Keep a verification plan within 256 KiB.');
60
+ const v = JSON.parse(raw);
61
+ shape(v, ['format', 'adapter', 'verifier', 'runtime', 'source', ...(baselineOnly ? [] : ['candidate']), 'negative', 'rules', 'cases', 'negativeControl', 'limits']);
62
+ if (v.format !== (baselineOnly ? 'calliope.migration.baseline-plan/v1' : 'calliope.migration.verification-plan/v1') || v.adapter !== VERIFICATION_ADAPTER || v.verifier !== VERIFIER_VERSION)
63
+ fail('Unsupported migration adapter or verifier version.');
64
+ shape(v.runtime, ['image', 'node']);
65
+ if (typeof v.runtime.image !== 'string' || !/^sha256:[a-f0-9]{64}$/.test(v.runtime.image) || typeof v.runtime.node !== 'string' || !/^v24\.\d+\.\d+$/.test(v.runtime.node))
66
+ fail('Pin a local Linux image and its exact Node 24 runtime version.');
67
+ for (const role of ['source', ...(baselineOnly ? [] : ['candidate']), 'negative', 'rules']) {
68
+ const pin = v[role];
69
+ shape(pin, ['revision', 'path', 'object']);
70
+ if (!oid(pin.revision) || !oid(pin.object) || typeof pin.path !== 'string' || pin.path === '.')
71
+ fail('Pin every program and rulebook to a full Git commit, path and blob.');
72
+ sourcePath(pin.path);
73
+ if (role === 'source' && !pin.path.endsWith('.mjs') || ['candidate', 'negative'].includes(role) && !pin.path.endsWith('.mts'))
74
+ fail('This adapter compares self-contained .mjs and .mts command-line programs.');
75
+ }
76
+ if (!Array.isArray(v.cases) || !v.cases.length || v.cases.length > 8)
77
+ fail('Provide 1–8 public-interface cases.');
78
+ const ids = new Set();
79
+ for (const row of v.cases) {
80
+ shape(row, ['id', 'argument', 'expected']);
81
+ if (typeof row.id !== 'string' || !/^[a-zA-Z0-9_-]{1,64}$/.test(row.id) || ids.has(row.id) || typeof row.argument !== 'string' || !row.argument.length || row.argument.length > 8192 || /[\x00-\x1f\x7f]/.test(row.argument))
82
+ fail('Use unique case IDs and one bounded argument per case.');
83
+ ids.add(row.id);
84
+ expected(row.expected);
85
+ }
86
+ shape(v.negativeControl, ['caseId', 'expected']);
87
+ if (typeof v.negativeControl.caseId !== 'string' || !ids.has(v.negativeControl.caseId))
88
+ fail('Select a declared case for the negative control.');
89
+ expected(v.negativeControl.expected);
90
+ shape(v.limits, ['commandTimeoutMs', 'totalMs']);
91
+ if (!Number.isSafeInteger(v.limits.commandTimeoutMs) || Number(v.limits.commandTimeoutMs) < 100 || Number(v.limits.commandTimeoutMs) > 10000 ||
92
+ !Number.isSafeInteger(v.limits.totalMs) || Number(v.limits.totalMs) < Number(v.limits.commandTimeoutMs) || Number(v.limits.totalMs) > 300000)
93
+ fail('Bound each command to 100–10,000ms and the full observation to at most 300,000ms.');
94
+ const plan = v;
95
+ // Validate declared data independently of the comparator being qualified.
96
+ if (canonicalJson(plan.negativeControl.expected) === canonicalJson(plan.cases.find(c => c.id === plan.negativeControl.caseId).expected))
97
+ fail('The known negative control must differ from the baseline behavior.');
98
+ return { plan, digest: digest(raw), commandCount: (baselineOnly ? 1 : 2) * plan.cases.length + 2 };
99
+ }
100
+ class SourceInputError extends MigrationError {
101
+ constructor(message) { super('invalid', message); }
102
+ }
103
+ /** The existing isolated-command owner executes every observation; no provider or worker scheduler. */
104
+ export async function verifyMigration(repository, input, options) {
105
+ return executeVerification(repository, analyzeVerificationPlan(input), options);
106
+ }
107
+ /** Establish the original contract and reject a known regression before a candidate exists. */
108
+ export async function verifyMigrationBaseline(repository, input, options) {
109
+ return executeVerification(repository, analyzeBaselinePlan(input), options);
110
+ }
111
+ async function executeVerification(repository, analysis, options) {
112
+ const { plan, digest: planDigest, commandCount } = analysis;
113
+ const baselineOnly = plan.format === 'calliope.migration.baseline-plan/v1';
114
+ const pins = plan.format === 'calliope.migration.baseline-plan/v1'
115
+ ? { source: plan.source, negative: plan.negative, rules: plan.rules }
116
+ : { source: plan.source, candidate: plan.candidate, negative: plan.negative, rules: plan.rules };
117
+ if (!options || typeof options.approve !== 'function' || options.deadline !== undefined && !Number.isFinite(options.deadline))
118
+ fail('A host approval hook and a valid inherited deadline are required.');
119
+ throwIfCancelled(options.signal);
120
+ if (typeof repository !== 'string' || repository.length > 4096 || /[\x00-\x1f\x7f]/.test(repository))
121
+ fail('Select a local repository root.');
122
+ try {
123
+ repository = realpathSync(repository);
124
+ }
125
+ catch {
126
+ throw new MigrationError('unavailable', 'The selected repository is unavailable.');
127
+ }
128
+ const approved = await cancellable(options.approve({ digest: planDigest, repository, pins: JSON.parse(JSON.stringify(Object.values(pins))), image: plan.runtime.image, commandCount, totalMs: plan.limits.totalMs }), options.signal);
129
+ if (!approved)
130
+ fail('Migration verification was not approved; no program was executed.');
131
+ const deadline = Math.min(Date.now() + plan.limits.totalMs, options.deadline ?? Infinity);
132
+ if (deadline <= Date.now())
133
+ fail('The inherited verification deadline has expired.');
134
+ const timer = new AbortController(), signal = AbortSignal.any([timer.signal, ...(options.signal ? [options.signal] : [])]);
135
+ const alarm = setTimeout(() => timer.abort(), Math.max(1, deadline - Date.now()));
136
+ const checkBudget = () => { if (Date.now() >= deadline)
137
+ timer.abort(); throwIfCancelled(signal); };
138
+ const observations = [];
139
+ let scratch, safeToRemove = true, outcome = 'environment-failure', reason = 'Verification did not complete.', commands = 0;
140
+ const programs = new Map();
141
+ try {
142
+ if (!comparatorHealthy()) {
143
+ outcome = 'verifier-failure';
144
+ reason = 'Comparator self-test failed.';
145
+ }
146
+ else {
147
+ // Read only exact approved Git objects. The working checkout is never executed.
148
+ const material = [];
149
+ for (const [role, pin] of Object.entries(pins)) {
150
+ const inventory = await inventorySource({ repository, revision: pin.revision, readPaths: [pin.path] }, { signal });
151
+ const file = inventory.files[0];
152
+ if (inventory.files.length !== 1 || !file || file.path !== pin.path || !['100644', '100755'].includes(file.mode) || file.object !== pin.object || file.bytes === null || file.bytes > 65536)
153
+ throw new SourceInputError('A source/rule pin is stale, unsupported or exceeds 64 KiB. Replan before execution.');
154
+ const text = await worktreeGit(repository, ['--no-replace-objects', 'cat-file', 'blob', pin.object], signal);
155
+ const bytes = Buffer.byteLength(text), object = createHash(pin.object.length === 40 ? 'sha1' : 'sha256').update(`blob ${bytes}\0`).update(text).digest('hex');
156
+ if (object !== pin.object || bytes !== file.bytes)
157
+ throw new SourceInputError('Source bytes changed or are not valid UTF-8.');
158
+ if (role !== 'rules')
159
+ material.push({ role, text, extension: role === 'source' ? 'mjs' : 'mts' });
160
+ }
161
+ await assertLocalIsolationImage(plan.runtime.image, signal);
162
+ scratch = mkdtempSync(join(tmpdir(), 'calliope-migration-check-'));
163
+ for (const { role, text, extension } of material) {
164
+ const directory = join(scratch, role);
165
+ mkdirSync(directory, { mode: 0o700 });
166
+ const file = join(directory, `program.${extension}`);
167
+ writeFileSync(file, text, { mode: 0o400, flag: 'wx' });
168
+ programs.set(role, { directory, file, bytes: digest(text), extension });
169
+ }
170
+ const observe = async (phase, role, caseId, argument) => {
171
+ checkBudget();
172
+ if (++commands > commandCount || options.reserveCommand && !await cancellable(options.reserveCommand({ digest: planDigest, phase, caseId, command: commands }), signal))
173
+ fail('The host command allowance refused verification.');
174
+ checkBudget();
175
+ const program = programs.get(role);
176
+ const unchanged = () => lstatSync(program.file).isFile() && !lstatSync(program.file).isSymbolicLink() && lstatSync(program.file).size <= 65536 && digest(readFileSync(program.file, 'utf8')) === program.bytes;
177
+ if (!unchanged())
178
+ throw new SourceInputError('The isolated source snapshot changed.');
179
+ const argv = phase === 'runtime' ? ['node', '--version'] : ['node', `/project/program.${program.extension}`, argument];
180
+ safeToRemove = false; // A lost runner result must retain the mount for inspection.
181
+ const receipt = await runIsolatedCommand(plan.runtime.image, { artifactId: `${phase}-${caseId ?? 'version'}`, argv, timeoutMs: Math.max(1, Math.min(plan.limits.commandTimeoutMs, deadline - Date.now())) }, [{ source: program.directory, target: '/project' }], signal);
182
+ safeToRemove = receipt.cleanupConfirmed;
183
+ const { stdout: _stdout, stderr: _stderr, ...evidence } = receipt;
184
+ const row = { phase, caseId, matches: null, evidence };
185
+ observations.push(row);
186
+ const outputs = receipt.outputDigests;
187
+ if (!unchanged() || !receipt.cleanupConfirmed || receipt.truncated || !['passed', 'failed'].includes(receipt.outcome) || !outputs || outputs.version !== 1 ||
188
+ !hash(outputs.stdout.sha256) || !hash(outputs.stderr.sha256))
189
+ return null;
190
+ return { exitCode: receipt.exitCode, stdout: outputs.stdout, stderr: outputs.stderr };
191
+ };
192
+ const check = async (phase, role, id, want, argument) => {
193
+ const got = await observe(phase, role, id, argument);
194
+ if (!got)
195
+ return null;
196
+ const matches = compareBehavior(got, behaviorFingerprint(want));
197
+ observations.at(-1).matches = matches;
198
+ return { got, matches };
199
+ };
200
+ const run = async () => {
201
+ const runtime = await check('runtime', 'source', null, { exitCode: 0, stdout: plan.runtime.node + '\n', stderr: '' });
202
+ if (!runtime?.matches)
203
+ return { outcome: 'environment-failure', reason: 'The pinned runtime was unavailable or did not match.' };
204
+ for (const c of plan.cases) {
205
+ const baseline = await check('baseline', 'source', c.id, c.expected, c.argument);
206
+ if (!baseline)
207
+ return { outcome: 'environment-failure', reason: 'Baseline observation was incomplete.' };
208
+ if (!baseline.matches)
209
+ return { outcome: 'baseline-failure', reason: 'The original program does not meet the pinned public-interface contract.' };
210
+ }
211
+ const c = plan.cases.find(row => row.id === plan.negativeControl.caseId);
212
+ const negative = await check('negative-control', 'negative', c.id, plan.negativeControl.expected, c.argument);
213
+ if (!negative)
214
+ return { outcome: 'environment-failure', reason: 'Negative-control observation was incomplete.' };
215
+ if (!negative.matches || compareBehavior(negative.got, behaviorFingerprint(c.expected)))
216
+ return { outcome: 'verifier-failure', reason: 'The known regression was not reproduced and rejected as expected.' };
217
+ if (baselineOnly)
218
+ return { outcome: 'baseline-verified', reason: 'Baseline and known-regression observations satisfy the declared contract. No candidate was read or executed.' };
219
+ let regression = false;
220
+ for (const item of plan.cases) {
221
+ const candidate = await check('candidate', 'candidate', item.id, item.expected, item.argument);
222
+ if (!candidate)
223
+ return { outcome: 'environment-failure', reason: 'Candidate observation was incomplete.' };
224
+ if (!candidate.matches)
225
+ regression = true;
226
+ }
227
+ return { outcome: regression ? 'regression' : 'passed', reason: regression ? 'Candidate behavior differs on at least one declared case.' : 'Baseline, negative control and candidate observations satisfy the declared contract.' };
228
+ };
229
+ ({ outcome, reason } = await run());
230
+ }
231
+ }
232
+ catch (error) {
233
+ outcome = options.signal?.aborted ? 'cancelled' : error instanceof SourceInputError ? 'input-failure' : 'environment-failure';
234
+ reason = error instanceof MigrationError ? error.message : timer.signal.aborted ? 'Verification exceeded its total deadline.' : 'Verification could not obtain complete native execution evidence.';
235
+ }
236
+ finally {
237
+ clearTimeout(alarm);
238
+ if (scratch && safeToRemove) {
239
+ try {
240
+ rmSync(scratch, { recursive: true });
241
+ scratch = undefined;
242
+ }
243
+ catch { /* Retain the exact scratch path for host cleanup. */ }
244
+ }
245
+ }
246
+ if (options.signal?.aborted) {
247
+ outcome = 'cancelled';
248
+ reason = 'Verification cancelled.';
249
+ }
250
+ else if (timer.signal.aborted || Date.now() >= deadline) {
251
+ outcome = 'environment-failure';
252
+ reason = 'Verification exceeded its total deadline.';
253
+ }
254
+ const report = { format: baselineOnly ? 'calliope.migration.baseline-report/v1' : 'calliope.migration.verification-report/v1', verifier: VERIFIER_VERSION, adapter: plan.adapter, planDigest, runtime: plan.runtime,
255
+ pins, outcome, reason, observations,
256
+ commandsUsed: commands, commandLimit: commandCount, retainedWorkspace: scratch ?? null,
257
+ limitations: ['Only declared cases of this self-contained command-line interface were compared; this is not proof of general program equivalence.', 'No TypeScript type-check, dependency install, migration dispatch or rollout was performed.'] };
258
+ return { ...report, digest: digest(canonicalJson(report)) };
259
+ }
260
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/migration/verification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-detection.d.ts","sourceRoot":"","sources":["../src/model-detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,EAA+I,KAAK,SAAS,EAA0B,MAAM,mBAAmB,CAAC;AACxN,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;yEACqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAoCD,wFAAwF;AACxF,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAMrH;AAkID,8EAA8E;AAC9E,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,SAAS,CAG1F;AAMD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,SAAS,CAIlF;AAED,+EAA+E;AAC/E,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAoBlI;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqC5F;AAifD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBrE;AAkSD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAQ5D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CASjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAY1F;AAwDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBnF;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAchF"}
1
+ {"version":3,"file":"model-detection.d.ts","sourceRoot":"","sources":["../src/model-detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,EAA+I,KAAK,SAAS,EAA0B,MAAM,mBAAmB,CAAC;AACxN,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;yEACqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAoCD,wFAAwF;AACxF,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAOrH;AA4HD,8EAA8E;AAC9E,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,SAAS,CAG1F;AAMD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,SAAS,CAIlF;AAED,+EAA+E;AAC/E,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAoBlI;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqC5F;AA8eD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBrE;AAmQD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAQ5D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CASjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAY1F;AAwDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBnF;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAchF"}
@@ -54,6 +54,8 @@ async function modelPages(endpoint, kind, headers) {
54
54
  }
55
55
  /** Scope transport cancellation to this discovery call, including concurrent probes. */
56
56
  export async function getAvailableModels(provider, options = {}) {
57
+ if (String(provider) === 'litellm')
58
+ throw new ModelDiscoveryError('LiteLLM support has been removed. Select a supported provider explicitly.');
57
59
  throwIfCancelled(options.signal);
58
60
  return discoveryContext.run({ ...options, cleanups: [] }, async () => {
59
61
  try {
@@ -146,12 +148,6 @@ const INCOMPATIBLE_MODEL_PATTERNS = {
146
148
  /^all-minilm/, // Sentence transformers
147
149
  /^bge-/, // BGE embedding models
148
150
  ],
149
- litellm: [
150
- /embed/i, // Embedding models
151
- /whisper/i, // Speech models
152
- /dall-e/i, // Image models
153
- /tts/i, // Text-to-speech
154
- ],
155
151
  ai21: [
156
152
  /embed/i, // Embedding models
157
153
  ],
@@ -332,9 +328,6 @@ async function loadAvailableModels(provider, options) {
332
328
  case 'ollama':
333
329
  models = await getOllamaModels();
334
330
  break;
335
- case 'litellm':
336
- models = await getLiteLLMModels();
337
- break;
338
331
  case 'ai21':
339
332
  case 'huggingface':
340
333
  case 'fireworks':
@@ -732,36 +725,6 @@ export async function getOllamaFallbackModel() {
732
725
  return null;
733
726
  }
734
727
  }
735
- /**
736
- * Get LiteLLM models
737
- */
738
- async function getLiteLLMModels() {
739
- let baseUrl = config.getBaseUrl('litellm') || 'http://localhost:4000';
740
- // Strip /v1 suffix if present to avoid double /v1
741
- if (baseUrl.endsWith('/v1')) {
742
- baseUrl = baseUrl.slice(0, -3);
743
- }
744
- try {
745
- const response = await fetchModelMetadata(`${baseUrl}/v1/models`);
746
- if (!response.ok) {
747
- throw new Error(`LiteLLM API error: ${response.status}`);
748
- }
749
- const data = await response.json();
750
- return data.data
751
- .filter(model => isCompatibleModel(model.id, 'litellm'))
752
- .map((model) => ({
753
- id: model.id,
754
- name: model.id,
755
- description: 'Proxied via LiteLLM',
756
- ...compatibleMetadata(model),
757
- }));
758
- }
759
- catch (error) {
760
- if (error instanceof ModelDiscoveryError || error instanceof SyntaxError || error instanceof TypeError)
761
- throw error;
762
- throw new Error(`Failed to connect to LiteLLM at ${baseUrl}`);
763
- }
764
- }
765
728
  /**
766
729
  * Get Bedrock models — dynamic discovery via AWS APIs, gateway, or minimal fallback
767
730
  */