salmon-loop 0.2.3

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 (655) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +144 -0
  3. package/README.zh-CN.md +144 -0
  4. package/dist/cli/argv/headless-detection.js +60 -0
  5. package/dist/cli/argv/print-mode.js +60 -0
  6. package/dist/cli/authorization/allowlist.js +908 -0
  7. package/dist/cli/authorization/non-interactive.js +166 -0
  8. package/dist/cli/authorization/provider.js +416 -0
  9. package/dist/cli/chat-interface.js +83 -0
  10. package/dist/cli/chat.js +492 -0
  11. package/dist/cli/cli-runtime-context.js +12 -0
  12. package/dist/cli/commander-error-adapter.js +35 -0
  13. package/dist/cli/commander-error-meta.js +13 -0
  14. package/dist/cli/commands/allowlist.js +270 -0
  15. package/dist/cli/commands/chat.js +120 -0
  16. package/dist/cli/commands/config.js +250 -0
  17. package/dist/cli/commands/context.js +57 -0
  18. package/dist/cli/commands/dispatcher.js +53 -0
  19. package/dist/cli/commands/exit.js +9 -0
  20. package/dist/cli/commands/llm-output.js +135 -0
  21. package/dist/cli/commands/log-mode.js +143 -0
  22. package/dist/cli/commands/mode.js +136 -0
  23. package/dist/cli/commands/new.js +18 -0
  24. package/dist/cli/commands/parallel.js +256 -0
  25. package/dist/cli/commands/queue.js +130 -0
  26. package/dist/cli/commands/registry.js +85 -0
  27. package/dist/cli/commands/restore.js +26 -0
  28. package/dist/cli/commands/run/assistant-message.js +14 -0
  29. package/dist/cli/commands/run/config-resolution.js +37 -0
  30. package/dist/cli/commands/run/early-errors.js +108 -0
  31. package/dist/cli/commands/run/execute.js +73 -0
  32. package/dist/cli/commands/run/extensions-resolution.js +22 -0
  33. package/dist/cli/commands/run/handler.js +434 -0
  34. package/dist/cli/commands/run/headless-error-writer.js +182 -0
  35. package/dist/cli/commands/run/instruction-guard.js +24 -0
  36. package/dist/cli/commands/run/loop-params.js +46 -0
  37. package/dist/cli/commands/run/mode.js +8 -0
  38. package/dist/cli/commands/run/parse-options.js +67 -0
  39. package/dist/cli/commands/run/persist-session.js +35 -0
  40. package/dist/cli/commands/run/preflight.js +156 -0
  41. package/dist/cli/commands/run/reporter-factory.js +52 -0
  42. package/dist/cli/commands/run/runtime-llm.js +56 -0
  43. package/dist/cli/commands/run/runtime-options.js +30 -0
  44. package/dist/cli/commands/run/session.js +19 -0
  45. package/dist/cli/commands/run/structured-output.js +106 -0
  46. package/dist/cli/commands/run/types.js +2 -0
  47. package/dist/cli/commands/run/validate-options.js +28 -0
  48. package/dist/cli/commands/run/verbose.js +36 -0
  49. package/dist/cli/commands/run.js +2 -0
  50. package/dist/cli/commands/serve.js +323 -0
  51. package/dist/cli/commands/session.js +77 -0
  52. package/dist/cli/commands/snapshot-interactive.js +165 -0
  53. package/dist/cli/commands/snapshot.js +159 -0
  54. package/dist/cli/commands/status.js +17 -0
  55. package/dist/cli/commands/subagent.js +178 -0
  56. package/dist/cli/commands/subcommand-suggestions.js +63 -0
  57. package/dist/cli/commands/tool-names.js +155 -0
  58. package/dist/cli/commands/types.js +2 -0
  59. package/dist/cli/commands/utils.js +42 -0
  60. package/dist/cli/config.js +16 -0
  61. package/dist/cli/crash-reporter.js +5 -0
  62. package/dist/cli/headless/anthropic-stream-normalized-encoder.js +164 -0
  63. package/dist/cli/headless/anthropic-stream-protocol.js +62 -0
  64. package/dist/cli/headless/json-protocol.js +124 -0
  65. package/dist/cli/headless/native-stream-normalized-encoder.js +206 -0
  66. package/dist/cli/headless/openai-responses-canonical-applier.js +94 -0
  67. package/dist/cli/headless/openai-responses-state.js +294 -0
  68. package/dist/cli/headless/openai-stream-encoder.js +152 -0
  69. package/dist/cli/headless/stdout-writer.js +9 -0
  70. package/dist/cli/headless/stream-json-protocol.js +136 -0
  71. package/dist/cli/index.js +8 -0
  72. package/dist/cli/locales/en.js +409 -0
  73. package/dist/cli/locales/index.js +7 -0
  74. package/dist/cli/program-bootstrap.js +14 -0
  75. package/dist/cli/program-commands.js +106 -0
  76. package/dist/cli/program-options.js +15 -0
  77. package/dist/cli/program-output-mode.js +11 -0
  78. package/dist/cli/program-parse.js +24 -0
  79. package/dist/cli/reporters/anthropic-stream.js +77 -0
  80. package/dist/cli/reporters/base.js +2 -0
  81. package/dist/cli/reporters/json.js +69 -0
  82. package/dist/cli/reporters/openai-stream.js +72 -0
  83. package/dist/cli/reporters/standard.js +226 -0
  84. package/dist/cli/reporters/stderr-log-reporter.js +71 -0
  85. package/dist/cli/reporters/stream-json.js +111 -0
  86. package/dist/cli/run-cli.js +25 -0
  87. package/dist/cli/slash/runtime.js +240 -0
  88. package/dist/cli/ui/App.js +273 -0
  89. package/dist/cli/ui/authorization/bus.js +35 -0
  90. package/dist/cli/ui/components/CommandInput.js +200 -0
  91. package/dist/cli/ui/components/CommandSuggestionList.js +20 -0
  92. package/dist/cli/ui/components/Markdown.js +423 -0
  93. package/dist/cli/ui/components/MessageList.js +34 -0
  94. package/dist/cli/ui/components/StatusBannerLine.js +7 -0
  95. package/dist/cli/ui/components/TodoDrawer.js +60 -0
  96. package/dist/cli/ui/components/WelcomeMessage.js +14 -0
  97. package/dist/cli/ui/components/animations/StretchingThinking.js +51 -0
  98. package/dist/cli/ui/components/animations/ThinkingWave.js +15 -0
  99. package/dist/cli/ui/components/animations/TypeIndicator.js +30 -0
  100. package/dist/cli/ui/components/layout/SplitPane.js +11 -0
  101. package/dist/cli/ui/components/messageList/MessageItem.js +27 -0
  102. package/dist/cli/ui/components/messageList/QueuePreviewList.js +11 -0
  103. package/dist/cli/ui/components/messageList/items/EmphasisMessageItem.js +20 -0
  104. package/dist/cli/ui/components/messageList/items/InterruptMessageItem.js +10 -0
  105. package/dist/cli/ui/components/messageList/items/LightweightMessageItem.js +12 -0
  106. package/dist/cli/ui/components/messageList/items/StandardMessageItem.js +23 -0
  107. package/dist/cli/ui/components/messageList/items/WelcomeMessageItem.js +7 -0
  108. package/dist/cli/ui/components/messageList/messageListLayout.js +27 -0
  109. package/dist/cli/ui/components/messageList/streaming.js +51 -0
  110. package/dist/cli/ui/components/messageList/types.js +2 -0
  111. package/dist/cli/ui/components/messageList/utils.js +7 -0
  112. package/dist/cli/ui/components/sidebar/FileContext.js +8 -0
  113. package/dist/cli/ui/components/sidebar/MissionControl.js +8 -0
  114. package/dist/cli/ui/config.js +59 -0
  115. package/dist/cli/ui/hooks/useCommandLifecycle.js +110 -0
  116. package/dist/cli/ui/hooks/useCommandSuggestions.js +87 -0
  117. package/dist/cli/ui/hooks/useInputHistory.js +57 -0
  118. package/dist/cli/ui/hooks/useLoopEvents.js +382 -0
  119. package/dist/cli/ui/hooks/useLoopState.js +73 -0
  120. package/dist/cli/ui/hooks/useOnionExit.js +31 -0
  121. package/dist/cli/ui/hooks/useTerminalDimensions.js +34 -0
  122. package/dist/cli/ui/index.js +136 -0
  123. package/dist/cli/ui/selection/bus.js +35 -0
  124. package/dist/cli/ui/status/formatStatusBanner.js +8 -0
  125. package/dist/cli/ui/store/context.js +17 -0
  126. package/dist/cli/ui/store/reducer.js +264 -0
  127. package/dist/cli/ui/store/types.js +81 -0
  128. package/dist/cli/ui/styles/theme.js +295 -0
  129. package/dist/cli/ui/types.js +2 -0
  130. package/dist/cli/ui/utils/sanitizer.js +122 -0
  131. package/dist/cli/ui/utils/transcript.js +28 -0
  132. package/dist/cli/utils/asyncQueue.js +125 -0
  133. package/dist/cli/utils/audit-scope.js +10 -0
  134. package/dist/cli/utils/detectors/index.js +38 -0
  135. package/dist/cli/utils/llm-output.js +34 -0
  136. package/dist/cli/utils/outcome-reporter.js +17 -0
  137. package/dist/cli/utils/safe-fs.js +184 -0
  138. package/dist/cli/utils/verify-resolver.js +34 -0
  139. package/dist/cli/utils/worktree-prepare-resolver.js +18 -0
  140. package/dist/core/adapters/fs/atomic-file-writer.js +129 -0
  141. package/dist/core/adapters/fs/file-adapter.js +95 -0
  142. package/dist/core/adapters/fs/filesystem.js +31 -0
  143. package/dist/core/adapters/fs/index.js +5 -0
  144. package/dist/core/adapters/fs/node-fs.js +7 -0
  145. package/dist/core/adapters/fs/readonly-filesystem.js +23 -0
  146. package/dist/core/adapters/git/git-adapter.js +704 -0
  147. package/dist/core/adapters/git/git-runner.js +119 -0
  148. package/dist/core/adapters/git/lock-manager.js +314 -0
  149. package/dist/core/adapters/git/types.js +2 -0
  150. package/dist/core/adapters/path/index.js +2 -0
  151. package/dist/core/adapters/path/path-adapter.js +23 -0
  152. package/dist/core/ast/guard.js +116 -0
  153. package/dist/core/ast/index.js +4 -0
  154. package/dist/core/ast/parser.js +284 -0
  155. package/dist/core/ast/validator.js +46 -0
  156. package/dist/core/backends/salmon-loop/task-executor.js +68 -0
  157. package/dist/core/checkpoint-domain/manifest-store.js +379 -0
  158. package/dist/core/checkpoint-domain/service.js +84 -0
  159. package/dist/core/checkpoint-domain/types.js +2 -0
  160. package/dist/core/config/defaults.js +50 -0
  161. package/dist/core/config/errors.js +11 -0
  162. package/dist/core/config/file-format.js +108 -0
  163. package/dist/core/config/index.js +7 -0
  164. package/dist/core/config/limits.js +77 -0
  165. package/dist/core/config/load.js +34 -0
  166. package/dist/core/config/normalize.js +35 -0
  167. package/dist/core/config/paths.js +20 -0
  168. package/dist/core/config/redact.js +16 -0
  169. package/dist/core/config/resolve-env.js +43 -0
  170. package/dist/core/config/resolve-llm.js +130 -0
  171. package/dist/core/config/resolve.js +68 -0
  172. package/dist/core/config/resolvers/ast-validation.js +8 -0
  173. package/dist/core/config/resolvers/context.js +21 -0
  174. package/dist/core/config/resolvers/observability.js +45 -0
  175. package/dist/core/config/resolvers/output.js +8 -0
  176. package/dist/core/config/resolvers/permission-mode.js +6 -0
  177. package/dist/core/config/resolvers/security.js +14 -0
  178. package/dist/core/config/resolvers/server.js +36 -0
  179. package/dist/core/config/resolvers/tool-authorization.js +39 -0
  180. package/dist/core/config/resolvers/ui.js +26 -0
  181. package/dist/core/config/types/config-file.js +2 -0
  182. package/dist/core/config/types/primitives.js +9 -0
  183. package/dist/core/config/types/resolved.js +2 -0
  184. package/dist/core/config/types.js +4 -0
  185. package/dist/core/config/validate.js +852 -0
  186. package/dist/core/context/assembly/default-prompt-assembler.js +7 -0
  187. package/dist/core/context/assembly/prompt-assembler.js +2 -0
  188. package/dist/core/context/ast/import-extractor.js +28 -0
  189. package/dist/core/context/ast/module-resolver.js +61 -0
  190. package/dist/core/context/ast/source-outline.js +25 -0
  191. package/dist/core/context/audit-constants.js +23 -0
  192. package/dist/core/context/audit.js +54 -0
  193. package/dist/core/context/budget/dynamic-adjuster.js +149 -0
  194. package/dist/core/context/budget/example-integration.js +49 -0
  195. package/dist/core/context/budget/integration.js +93 -0
  196. package/dist/core/context/builder.js +289 -0
  197. package/dist/core/context/cache/errors.js +16 -0
  198. package/dist/core/context/cache/incremental-updater.js +131 -0
  199. package/dist/core/context/cache/index.js +25 -0
  200. package/dist/core/context/cache/path-resolver.js +127 -0
  201. package/dist/core/context/cache/prompt-caching.js +207 -0
  202. package/dist/core/context/cache/store-factory.js +63 -0
  203. package/dist/core/context/cache/store.js +193 -0
  204. package/dist/core/context/cache/types.js +15 -0
  205. package/dist/core/context/compression/js-like-comments.js +139 -0
  206. package/dist/core/context/compression/smart-compress.js +61 -0
  207. package/dist/core/context/compression/whitespace.js +26 -0
  208. package/dist/core/context/dependencies.js +102 -0
  209. package/dist/core/context/effectiveness/index.js +25 -0
  210. package/dist/core/context/effectiveness/tracker.js +253 -0
  211. package/dist/core/context/effectiveness/types.js +15 -0
  212. package/dist/core/context/formatters/index.js +7 -0
  213. package/dist/core/context/formatters/json-converter.js +662 -0
  214. package/dist/core/context/formatters/types.js +6 -0
  215. package/dist/core/context/formatters/xml-context.js +296 -0
  216. package/dist/core/context/gatherers/architecture-gatherer.js +75 -0
  217. package/dist/core/context/gatherers/artifact-gatherer.js +53 -0
  218. package/dist/core/context/gatherers/ast-gatherer.js +370 -0
  219. package/dist/core/context/gatherers/ghost-dependency-gatherer.js +46 -0
  220. package/dist/core/context/gatherers/git-diff-gatherer.js +91 -0
  221. package/dist/core/context/gatherers/git-history-gatherer.js +57 -0
  222. package/dist/core/context/gatherers/knowledge-gatherer.js +101 -0
  223. package/dist/core/context/gatherers/metadata-gatherer.js +59 -0
  224. package/dist/core/context/gatherers/primary-text-gatherer.js +36 -0
  225. package/dist/core/context/gatherers/ripgrep-gatherer.js +104 -0
  226. package/dist/core/context/hash.js +52 -0
  227. package/dist/core/context/index.js +3 -0
  228. package/dist/core/context/keywords.js +179 -0
  229. package/dist/core/context/policies/budget-policy.js +36 -0
  230. package/dist/core/context/policies/pack-until-full.js +419 -0
  231. package/dist/core/context/scoring/relevance.js +191 -0
  232. package/dist/core/context/service-deps.js +32 -0
  233. package/dist/core/context/service-helpers.js +32 -0
  234. package/dist/core/context/service.js +265 -0
  235. package/dist/core/context/steps/context-budget.js +157 -0
  236. package/dist/core/context/steps/context-gather.js +71 -0
  237. package/dist/core/context/steps/context-primary.js +19 -0
  238. package/dist/core/context/steps/context-promotion.js +78 -0
  239. package/dist/core/context/steps/context-targets.js +85 -0
  240. package/dist/core/context/steps/types.js +2 -0
  241. package/dist/core/context/summarization/index.js +27 -0
  242. package/dist/core/context/summarization/prompts.js +80 -0
  243. package/dist/core/context/summarization/summarizer.js +377 -0
  244. package/dist/core/context/summarization/types.js +29 -0
  245. package/dist/core/context/targeting/churn-policy.js +27 -0
  246. package/dist/core/context/targeting/target-resolver.js +491 -0
  247. package/dist/core/context/token/adaptive-budget.js +364 -0
  248. package/dist/core/context/token/cache.js +163 -0
  249. package/dist/core/context/token/counter.js +190 -0
  250. package/dist/core/context/token/encoding-registry.js +173 -0
  251. package/dist/core/context/token/index.js +31 -0
  252. package/dist/core/context/token/token-budget.js +213 -0
  253. package/dist/core/context/token/types.js +10 -0
  254. package/dist/core/context/truncation/index.js +23 -0
  255. package/dist/core/context/truncation/semantic-truncator.js +103 -0
  256. package/dist/core/context/truncation/strategies/error-stack.js +94 -0
  257. package/dist/core/context/truncation/strategies/generic.js +48 -0
  258. package/dist/core/context/truncation/strategies/git-diff.js +99 -0
  259. package/dist/core/context/truncation/strategies/index.js +10 -0
  260. package/dist/core/context/truncation/strategies/json.js +142 -0
  261. package/dist/core/context/truncation/strategies/log.js +131 -0
  262. package/dist/core/context/truncation/strategies/test-result.js +140 -0
  263. package/dist/core/context/truncation/type-detector.js +133 -0
  264. package/dist/core/context/truncation/types.js +16 -0
  265. package/dist/core/context/types.js +2 -0
  266. package/dist/core/extensions/index.js +118 -0
  267. package/dist/core/extensions/load.js +36 -0
  268. package/dist/core/extensions/merge.js +29 -0
  269. package/dist/core/extensions/paths.js +40 -0
  270. package/dist/core/extensions/redact.js +37 -0
  271. package/dist/core/extensions/schemas.js +70 -0
  272. package/dist/core/extensions/types.js +2 -0
  273. package/dist/core/facades/cli-authorization-allowlist.js +3 -0
  274. package/dist/core/facades/cli-authorization-non-interactive.js +3 -0
  275. package/dist/core/facades/cli-authorization-provider.js +2 -0
  276. package/dist/core/facades/cli-chat.js +11 -0
  277. package/dist/core/facades/cli-command-allowlist.js +3 -0
  278. package/dist/core/facades/cli-command-chat.js +8 -0
  279. package/dist/core/facades/cli-command-checkpoint.js +3 -0
  280. package/dist/core/facades/cli-command-config.js +10 -0
  281. package/dist/core/facades/cli-command-dispatcher.js +2 -0
  282. package/dist/core/facades/cli-command-parallel.js +8 -0
  283. package/dist/core/facades/cli-command-session.js +2 -0
  284. package/dist/core/facades/cli-command-tool-names.js +6 -0
  285. package/dist/core/facades/cli-context.js +8 -0
  286. package/dist/core/facades/cli-headless.js +3 -0
  287. package/dist/core/facades/cli-observability.js +3 -0
  288. package/dist/core/facades/cli-program-bootstrap.js +2 -0
  289. package/dist/core/facades/cli-reporters.js +5 -0
  290. package/dist/core/facades/cli-run-execute.js +3 -0
  291. package/dist/core/facades/cli-run-handler.js +7 -0
  292. package/dist/core/facades/cli-run-headless-error-writer.js +2 -0
  293. package/dist/core/facades/cli-run-loop-params.js +2 -0
  294. package/dist/core/facades/cli-run-persist-session.js +2 -0
  295. package/dist/core/facades/cli-run-runtime-llm.js +5 -0
  296. package/dist/core/facades/cli-serve.js +21 -0
  297. package/dist/core/facades/cli-slash-runtime.js +9 -0
  298. package/dist/core/facades/cli-subagent.js +2 -0
  299. package/dist/core/facades/cli-ui.js +5 -0
  300. package/dist/core/facades/cli-utils-llm-output.js +3 -0
  301. package/dist/core/facades/cli-utils-path.js +2 -0
  302. package/dist/core/facades/cli-utils-worktree.js +2 -0
  303. package/dist/core/failure/diagnostics.js +221 -0
  304. package/dist/core/feedback/index.js +28 -0
  305. package/dist/core/feedback/parsers.js +59 -0
  306. package/dist/core/feedback/patterns.js +26 -0
  307. package/dist/core/feedback/types.js +2 -0
  308. package/dist/core/grizzco/domain/grizzco-types.js +41 -0
  309. package/dist/core/grizzco/dsl/DecisionEngine.js +149 -0
  310. package/dist/core/grizzco/dsl/MicroTaskRunner.js +39 -0
  311. package/dist/core/grizzco/dsl/llm-strategy.js +80 -0
  312. package/dist/core/grizzco/dsl/strategies.js +69 -0
  313. package/dist/core/grizzco/dsl/types.js +2 -0
  314. package/dist/core/grizzco/engine/observability/event-adapter.js +41 -0
  315. package/dist/core/grizzco/engine/observability/index.js +3 -0
  316. package/dist/core/grizzco/engine/observability/loop-telemetry.js +51 -0
  317. package/dist/core/grizzco/engine/outcome/index.js +2 -0
  318. package/dist/core/grizzco/engine/outcome/loop-result-mapper.js +167 -0
  319. package/dist/core/grizzco/engine/pipeline/pipeline.js +335 -0
  320. package/dist/core/grizzco/engine/pipeline/types.js +2 -0
  321. package/dist/core/grizzco/engine/transaction/attempt-failure.js +242 -0
  322. package/dist/core/grizzco/engine/transaction/authorization-summary.js +44 -0
  323. package/dist/core/grizzco/engine/transaction/index.js +3 -0
  324. package/dist/core/grizzco/engine/transaction/report-mapper.js +50 -0
  325. package/dist/core/grizzco/engine/transaction/retry-policy.js +19 -0
  326. package/dist/core/grizzco/engine/transaction/runner-builder.js +45 -0
  327. package/dist/core/grizzco/engine/transaction/session.js +58 -0
  328. package/dist/core/grizzco/engine/transaction/transaction-runner.js +193 -0
  329. package/dist/core/grizzco/engine/transaction/types.js +2 -0
  330. package/dist/core/grizzco/execution/Executor.js +58 -0
  331. package/dist/core/grizzco/execution/RejectionManager.js +71 -0
  332. package/dist/core/grizzco/execution/WorkerFactory.js +31 -0
  333. package/dist/core/grizzco/flows/SalmonLoopFlow.js +102 -0
  334. package/dist/core/grizzco/runtime/apply-back-runtime.js +136 -0
  335. package/dist/core/grizzco/runtime/apply-back-utils.js +13 -0
  336. package/dist/core/grizzco/runtime/host/host-runner.js +99 -0
  337. package/dist/core/grizzco/runtime/host/index.js +2 -0
  338. package/dist/core/grizzco/runtime/host/types.js +2 -0
  339. package/dist/core/grizzco/services/CachedService.js +42 -0
  340. package/dist/core/grizzco/services/implementations/default/GitConfigService.js +38 -0
  341. package/dist/core/grizzco/services/implementations/mock/MockLockService.js +11 -0
  342. package/dist/core/grizzco/services/implementations/mock/MockUserQuotaService.js +11 -0
  343. package/dist/core/grizzco/services/registry.js +30 -0
  344. package/dist/core/grizzco/services/types.js +2 -0
  345. package/dist/core/grizzco/steps/answer.js +75 -0
  346. package/dist/core/grizzco/steps/apply-back.js +46 -0
  347. package/dist/core/grizzco/steps/apply.js +136 -0
  348. package/dist/core/grizzco/steps/ast-validate.js +37 -0
  349. package/dist/core/grizzco/steps/audit.js +311 -0
  350. package/dist/core/grizzco/steps/context.js +74 -0
  351. package/dist/core/grizzco/steps/display-answer.js +6 -0
  352. package/dist/core/grizzco/steps/display-report.js +158 -0
  353. package/dist/core/grizzco/steps/display-research.js +6 -0
  354. package/dist/core/grizzco/steps/displayReview.js +6 -0
  355. package/dist/core/grizzco/steps/explore.js +245 -0
  356. package/dist/core/grizzco/steps/extractIssues.js +27 -0
  357. package/dist/core/grizzco/steps/generateFixPlan.js +13 -0
  358. package/dist/core/grizzco/steps/generateReview.js +71 -0
  359. package/dist/core/grizzco/steps/patch.js +220 -0
  360. package/dist/core/grizzco/steps/plan.js +191 -0
  361. package/dist/core/grizzco/steps/preflight.js +93 -0
  362. package/dist/core/grizzco/steps/prepare-deps.js +49 -0
  363. package/dist/core/grizzco/steps/read-only-shrink.js +4 -0
  364. package/dist/core/grizzco/steps/research.js +188 -0
  365. package/dist/core/grizzco/steps/rollback.js +138 -0
  366. package/dist/core/grizzco/steps/shrink.js +64 -0
  367. package/dist/core/grizzco/steps/validate.js +40 -0
  368. package/dist/core/grizzco/steps/verify.js +136 -0
  369. package/dist/core/grizzco/validation/AstValidationService.js +133 -0
  370. package/dist/core/grizzco/validation/ContextValidator.js +17 -0
  371. package/dist/core/grizzco/validation/ast-validation-policy.js +11 -0
  372. package/dist/core/grizzco/workers/direct-write-worker.js +44 -0
  373. package/dist/core/grizzco/workers/git-apply-worker.js +75 -0
  374. package/dist/core/grizzco/workers/i-merge-worker.js +2 -0
  375. package/dist/core/grizzco/workers/mm-three-way-worker.js +117 -0
  376. package/dist/core/grizzco/workers/no-op-worker.js +18 -0
  377. package/dist/core/grizzco/workers/overwrite-binary-worker.js +29 -0
  378. package/dist/core/grizzco/workers/strata-sync-worker.js +69 -0
  379. package/dist/core/grizzco/workers/three-way-merge-worker.js +84 -0
  380. package/dist/core/grizzco/workers/three-way-staged-worker.js +93 -0
  381. package/dist/core/grizzco/workers/union-merge-worker.js +71 -0
  382. package/dist/core/history/input-history.js +55 -0
  383. package/dist/core/intent/chat-intent.js +250 -0
  384. package/dist/core/interaction/events/bus.js +52 -0
  385. package/dist/core/interaction/model/events.js +2 -0
  386. package/dist/core/interaction/model/index.js +3 -0
  387. package/dist/core/interaction/model/task-state.js +9 -0
  388. package/dist/core/interaction/model/transition-policy.js +50 -0
  389. package/dist/core/interaction/model/types.js +2 -0
  390. package/dist/core/interaction/orchestration/facade.js +190 -0
  391. package/dist/core/interaction/orchestration/index.js +2 -0
  392. package/dist/core/interaction/orchestration/store.js +32 -0
  393. package/dist/core/interaction/sync/task-sync-engine.js +57 -0
  394. package/dist/core/interaction/turn-stop-reason.js +27 -0
  395. package/dist/core/language-support/index.js +3 -0
  396. package/dist/core/language-support/orchestrator.js +37 -0
  397. package/dist/core/language-support/strategies/extension-candidate-strategy.js +27 -0
  398. package/dist/core/language-support/strategies/index.js +3 -0
  399. package/dist/core/language-support/strategies/language-query-strategy.js +26 -0
  400. package/dist/core/llm/ai-sdk/chat-executor.js +88 -0
  401. package/dist/core/llm/ai-sdk/langfuse-headers.js +28 -0
  402. package/dist/core/llm/ai-sdk/message-mapper.js +240 -0
  403. package/dist/core/llm/ai-sdk/observation-context.js +16 -0
  404. package/dist/core/llm/ai-sdk/provider-factory.js +29 -0
  405. package/dist/core/llm/ai-sdk/request-params.js +18 -0
  406. package/dist/core/llm/ai-sdk/request-runtime.js +168 -0
  407. package/dist/core/llm/ai-sdk/result-mapper.js +31 -0
  408. package/dist/core/llm/ai-sdk/retry-classifier.js +82 -0
  409. package/dist/core/llm/ai-sdk/retry-executor.js +38 -0
  410. package/dist/core/llm/ai-sdk.js +92 -0
  411. package/dist/core/llm/audit.js +2 -0
  412. package/dist/core/llm/base-url.js +18 -0
  413. package/dist/core/llm/contracts/repair.js +68 -0
  414. package/dist/core/llm/errors.js +172 -0
  415. package/dist/core/llm/factory.js +21 -0
  416. package/dist/core/llm/http/index.js +2 -0
  417. package/dist/core/llm/index.js +6 -0
  418. package/dist/core/llm/message-composition.js +25 -0
  419. package/dist/core/llm/openai.js +69 -0
  420. package/dist/core/llm/output-policy.js +192 -0
  421. package/dist/core/llm/phase-router.js +55 -0
  422. package/dist/core/llm/redact.js +37 -0
  423. package/dist/core/llm/registry.js +81 -0
  424. package/dist/core/llm/retry-utils.js +114 -0
  425. package/dist/core/llm/stream-utils.js +87 -0
  426. package/dist/core/llm/utils.js +82 -0
  427. package/dist/core/observability/audit-file.js +199 -0
  428. package/dist/core/observability/audit-trail.js +125 -0
  429. package/dist/core/observability/authorization-decisions.js +54 -0
  430. package/dist/core/observability/debug-artifacts.js +61 -0
  431. package/dist/core/observability/error-envelope.js +63 -0
  432. package/dist/core/observability/error-mapping.js +271 -0
  433. package/dist/core/observability/ignored-error.js +6 -0
  434. package/dist/core/observability/logger.js +457 -0
  435. package/dist/core/observability/loop-event-reporter.js +46 -0
  436. package/dist/core/observability/monitor.js +240 -0
  437. package/dist/core/observability/run-outcome-reporter.js +15 -0
  438. package/dist/core/observability/token-usage.js +36 -0
  439. package/dist/core/observability/ui-log-sanitize.js +35 -0
  440. package/dist/core/patch/aggregator.js +93 -0
  441. package/dist/core/patch/diff.js +298 -0
  442. package/dist/core/permission-gate/default-gate.js +115 -0
  443. package/dist/core/permission-gate/gate.js +2 -0
  444. package/dist/core/permission-gate/types.js +2 -0
  445. package/dist/core/plan/index.js +2 -0
  446. package/dist/core/plan/manager.js +123 -0
  447. package/dist/core/plan/markdown-editor.js +238 -0
  448. package/dist/core/plan/storage.js +75 -0
  449. package/dist/core/plan/types.js +2 -0
  450. package/dist/core/plugin/interface.js +2 -0
  451. package/dist/core/plugin/loader.js +130 -0
  452. package/dist/core/plugin/registry.js +90 -0
  453. package/dist/core/plugin/validator.js +98 -0
  454. package/dist/core/prompts/registry.js +189 -0
  455. package/dist/core/prompts/runtime.js +69 -0
  456. package/dist/core/prompts/schema.js +2 -0
  457. package/dist/core/prompts/templates/phases/explore_user.hbs +26 -0
  458. package/dist/core/prompts/templates/phases/patch_user.hbs +57 -0
  459. package/dist/core/prompts/templates/phases/plan_user.hbs +33 -0
  460. package/dist/core/prompts/templates/system/_context_json_legend.hbs +21 -0
  461. package/dist/core/prompts/templates/system/_tool_defs.hbs +60 -0
  462. package/dist/core/prompts/templates/system/explore_system.hbs +26 -0
  463. package/dist/core/prompts/templates/system/main_system.hbs +18 -0
  464. package/dist/core/prompts/templates/system/patch_system.hbs +10 -0
  465. package/dist/core/prompts/templates/system/plan_system.hbs +1 -0
  466. package/dist/core/prompts/templates/system/reflection.hbs +39 -0
  467. package/dist/core/protocols/a2a/agent-card.js +30 -0
  468. package/dist/core/protocols/a2a/mapper.js +14 -0
  469. package/dist/core/protocols/a2a/sdk/auth-middleware.js +31 -0
  470. package/dist/core/protocols/a2a/sdk/executor.js +301 -0
  471. package/dist/core/protocols/a2a/sdk/server.js +24 -0
  472. package/dist/core/protocols/a2a/task-projection.js +45 -0
  473. package/dist/core/protocols/acp/acp-command-runner.js +204 -0
  474. package/dist/core/protocols/acp/acp-filesystem.js +43 -0
  475. package/dist/core/protocols/acp/checkpoint-meta.js +2 -0
  476. package/dist/core/protocols/acp/formal-agent.js +1201 -0
  477. package/dist/core/protocols/acp/handlers.js +51 -0
  478. package/dist/core/protocols/acp/permission-provider.js +122 -0
  479. package/dist/core/protocols/acp/stdio-server.js +116 -0
  480. package/dist/core/reflection/engine.js +55 -0
  481. package/dist/core/reflection/types.js +2 -0
  482. package/dist/core/runtime/agent-server-runtime.js +88 -0
  483. package/dist/core/runtime/bun-runtime.js +26 -0
  484. package/dist/core/runtime/command-runner-context.js +16 -0
  485. package/dist/core/runtime/exit-codes.js +11 -0
  486. package/dist/core/runtime/fastify-fetch-bridge.js +51 -0
  487. package/dist/core/runtime/fastify-server-bundle.js +26 -0
  488. package/dist/core/runtime/initialize.js +132 -0
  489. package/dist/core/runtime/loop-finalize.js +71 -0
  490. package/dist/core/runtime/loop-run-lifecycle.js +73 -0
  491. package/dist/core/runtime/loop-run-reporter.js +19 -0
  492. package/dist/core/runtime/loop-runtime-config.js +26 -0
  493. package/dist/core/runtime/loop-session-runner.js +30 -0
  494. package/dist/core/runtime/loop.js +84 -0
  495. package/dist/core/runtime/paths.js +84 -0
  496. package/dist/core/runtime/process-runner.js +16 -0
  497. package/dist/core/runtime/process-types.js +2 -0
  498. package/dist/core/runtime/semaphore.js +41 -0
  499. package/dist/core/runtime/sidecar-fastify-plugin.js +35 -0
  500. package/dist/core/runtime/sidecar-paths.js +47 -0
  501. package/dist/core/runtime/sidecar-route-catalog.js +103 -0
  502. package/dist/core/runtime/spawn-command.js +392 -0
  503. package/dist/core/runtime/spawn-interactive.js +71 -0
  504. package/dist/core/security/redaction.js +160 -0
  505. package/dist/core/session/compression.js +323 -0
  506. package/dist/core/session/flow.js +85 -0
  507. package/dist/core/session/manager.js +313 -0
  508. package/dist/core/session/pruning-strategy.js +153 -0
  509. package/dist/core/session/session-context-builder.js +122 -0
  510. package/dist/core/session/summary-sync.js +82 -0
  511. package/dist/core/session/token-tracker.js +82 -0
  512. package/dist/core/session/types.js +2 -0
  513. package/dist/core/skills/bridge.js +33 -0
  514. package/dist/core/skills/index.js +8 -0
  515. package/dist/core/skills/loader.js +80 -0
  516. package/dist/core/skills/parser.js +66 -0
  517. package/dist/core/skills/runtime/MicroTaskRunner.js +102 -0
  518. package/dist/core/skills/runtime/SkillRunner.js +108 -0
  519. package/dist/core/skills/strategy.js +29 -0
  520. package/dist/core/skills/types.js +2 -0
  521. package/dist/core/slash/index.js +6 -0
  522. package/dist/core/slash/parser.js +33 -0
  523. package/dist/core/slash/registry.js +78 -0
  524. package/dist/core/slash/router.js +76 -0
  525. package/dist/core/slash/steps/slash-decide.js +19 -0
  526. package/dist/core/slash/steps/slash-execute.js +73 -0
  527. package/dist/core/slash/steps/types.js +2 -0
  528. package/dist/core/slash/strategy.js +33 -0
  529. package/dist/core/slash/types.js +2 -0
  530. package/dist/core/strata/checkpoint/manager.js +492 -0
  531. package/dist/core/strata/checkpoint/snapshot-audit.js +88 -0
  532. package/dist/core/strata/checkpoint/snapshot-create.js +79 -0
  533. package/dist/core/strata/checkpoint/snapshot-write-tree.js +72 -0
  534. package/dist/core/strata/engine/shadow-merge-engine.js +394 -0
  535. package/dist/core/strata/index.js +15 -0
  536. package/dist/core/strata/interaction/content-guardian.js +59 -0
  537. package/dist/core/strata/interaction/file-system-provider.js +89 -0
  538. package/dist/core/strata/layers/file-state-resolver.js +157 -0
  539. package/dist/core/strata/layers/immutable-git-layer.js +42 -0
  540. package/dist/core/strata/layers/shadow-driver/copy-backend.js +114 -0
  541. package/dist/core/strata/layers/shadow-driver/env.js +29 -0
  542. package/dist/core/strata/layers/shadow-driver/error-classifier.js +41 -0
  543. package/dist/core/strata/layers/shadow-driver/index.js +17 -0
  544. package/dist/core/strata/layers/shadow-driver/readonly-lock.js +221 -0
  545. package/dist/core/strata/layers/shadow-driver/shadow-driver.js +234 -0
  546. package/dist/core/strata/layers/shadow-driver/strategy.js +86 -0
  547. package/dist/core/strata/layers/sidecar-layer.js +96 -0
  548. package/dist/core/strata/layers/worktree.js +240 -0
  549. package/dist/core/strata/runtime/environment.js +377 -0
  550. package/dist/core/strata/runtime/synchronizer.js +819 -0
  551. package/dist/core/strata/types.js +46 -0
  552. package/dist/core/streaming/canonical/canonical-responses-event-emitter.js +326 -0
  553. package/dist/core/streaming/canonical/function-call-item-id.js +13 -0
  554. package/dist/core/streaming/canonical/parts-from-llm-stream-chunk.js +54 -0
  555. package/dist/core/streaming/canonical/responses-event-emitter.js +127 -0
  556. package/dist/core/streaming/canonical/responses-events.js +2 -0
  557. package/dist/core/streaming/normalized-events.js +9 -0
  558. package/dist/core/streaming/normalized-from-text.js +47 -0
  559. package/dist/core/streaming/stream-assembler.js +347 -0
  560. package/dist/core/structured-output/index.js +3 -0
  561. package/dist/core/structured-output/json-extract.js +70 -0
  562. package/dist/core/structured-output/json-schema-validator.js +90 -0
  563. package/dist/core/structured-output/types.js +2 -0
  564. package/dist/core/sub-agent/artifacts/store.js +141 -0
  565. package/dist/core/sub-agent/artifacts/types.js +2 -0
  566. package/dist/core/sub-agent/controller.js +69 -0
  567. package/dist/core/sub-agent/core/loop.js +79 -0
  568. package/dist/core/sub-agent/core/manager.js +246 -0
  569. package/dist/core/sub-agent/registry-defaults.js +52 -0
  570. package/dist/core/sub-agent/registry.js +35 -0
  571. package/dist/core/sub-agent/tools/task-spawn.js +29 -0
  572. package/dist/core/sub-agent/types.js +23 -0
  573. package/dist/core/target-runtime/command-resolver.js +42 -0
  574. package/dist/core/target-runtime/index.js +3 -0
  575. package/dist/core/target-runtime/profile.js +73 -0
  576. package/dist/core/testgen/detector.js +17 -0
  577. package/dist/core/testgen/index.js +38 -0
  578. package/dist/core/testgen/templates.js +46 -0
  579. package/dist/core/tools/audit.js +140 -0
  580. package/dist/core/tools/authorization/types.js +2 -0
  581. package/dist/core/tools/budget.js +118 -0
  582. package/dist/core/tools/builtin/artifact.js +29 -0
  583. package/dist/core/tools/builtin/ast-grep.js +107 -0
  584. package/dist/core/tools/builtin/ast.js +62 -0
  585. package/dist/core/tools/builtin/code-search/backends/powershell.js +84 -0
  586. package/dist/core/tools/builtin/code-search/backends/rg.js +85 -0
  587. package/dist/core/tools/builtin/code-search/executor.js +87 -0
  588. package/dist/core/tools/builtin/code-search/parse/plain-grep.js +59 -0
  589. package/dist/core/tools/builtin/code-search/parse/rg-json.js +31 -0
  590. package/dist/core/tools/builtin/code-search/spec.js +82 -0
  591. package/dist/core/tools/builtin/fs.js +243 -0
  592. package/dist/core/tools/builtin/git.js +118 -0
  593. package/dist/core/tools/builtin/index.js +80 -0
  594. package/dist/core/tools/builtin/interaction.js +120 -0
  595. package/dist/core/tools/builtin/knowledge.js +98 -0
  596. package/dist/core/tools/builtin/plan.js +148 -0
  597. package/dist/core/tools/builtin/proposal.js +207 -0
  598. package/dist/core/tools/builtin/shell.js +71 -0
  599. package/dist/core/tools/builtin/verify.js +41 -0
  600. package/dist/core/tools/capability/executor.js +84 -0
  601. package/dist/core/tools/capability/runner.js +50 -0
  602. package/dist/core/tools/capability/types.js +2 -0
  603. package/dist/core/tools/dispatcher.js +80 -0
  604. package/dist/core/tools/headless-payload.js +37 -0
  605. package/dist/core/tools/loader.js +100 -0
  606. package/dist/core/tools/mapper.js +142 -0
  607. package/dist/core/tools/mcp/client.js +308 -0
  608. package/dist/core/tools/mcp/loader.js +110 -0
  609. package/dist/core/tools/mcp/schema.js +54 -0
  610. package/dist/core/tools/mcp/streamable-http.js +101 -0
  611. package/dist/core/tools/mcp/types.js +26 -0
  612. package/dist/core/tools/parallel/isolation.js +25 -0
  613. package/dist/core/tools/parallel/lock-manager.js +124 -0
  614. package/dist/core/tools/parallel/persistence.js +126 -0
  615. package/dist/core/tools/parallel/plan-builder.js +66 -0
  616. package/dist/core/tools/parallel/plan.js +2 -0
  617. package/dist/core/tools/parallel/refs.js +7 -0
  618. package/dist/core/tools/parallel/resolve-args.js +50 -0
  619. package/dist/core/tools/parallel/resource-helpers.js +35 -0
  620. package/dist/core/tools/parallel/resources.js +2 -0
  621. package/dist/core/tools/parallel/scheduler.js +372 -0
  622. package/dist/core/tools/parser.js +89 -0
  623. package/dist/core/tools/permissions/permission-rules.js +503 -0
  624. package/dist/core/tools/plugins/loader.js +102 -0
  625. package/dist/core/tools/policy.js +87 -0
  626. package/dist/core/tools/registry.js +29 -0
  627. package/dist/core/tools/router.js +514 -0
  628. package/dist/core/tools/sanitize.js +78 -0
  629. package/dist/core/tools/schema-utils.js +71 -0
  630. package/dist/core/tools/session.js +1105 -0
  631. package/dist/core/tools/streaming/ToolCallAccumulator.js +64 -0
  632. package/dist/core/tools/types.js +2 -0
  633. package/dist/core/types/authorization.js +2 -0
  634. package/dist/core/types/context.js +2 -0
  635. package/dist/core/types/errors.js +29 -0
  636. package/dist/core/types/execution.js +65 -0
  637. package/dist/core/types/index.js +9 -0
  638. package/dist/core/types/llm.js +9 -0
  639. package/dist/core/types/loop.js +2 -0
  640. package/dist/core/types/planning.js +2 -0
  641. package/dist/core/types/runtime.js +2 -0
  642. package/dist/core/types/usage.js +2 -0
  643. package/dist/core/ui/kaomoji.js +5 -0
  644. package/dist/core/utils/path.js +116 -0
  645. package/dist/core/utils/platform-shell.js +10 -0
  646. package/dist/core/utils/sanitizer.js +107 -0
  647. package/dist/core/verification/runner.js +265 -0
  648. package/dist/integrations/langfuse/litellm-langfuse-outcome-reporter.js +272 -0
  649. package/dist/integrations/langfuse/outcome-proxy.js +68 -0
  650. package/dist/interfaces/cli/task-runner.js +11 -0
  651. package/dist/languages/typescript/index.js +178 -0
  652. package/dist/locales/en.js +679 -0
  653. package/dist/locales/index.js +11 -0
  654. package/dist/utils/eol.js +35 -0
  655. package/package.json +153 -0
@@ -0,0 +1,189 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import Handlebars from 'handlebars';
3
+ import { z } from 'zod';
4
+ import { readFile } from '../adapters/fs/node-fs.js';
5
+ const TEMPLATE_URLS = {
6
+ 'system/_tool_defs.hbs': new URL('./templates/system/_tool_defs.hbs', import.meta.url),
7
+ 'system/main_system.hbs': new URL('./templates/system/main_system.hbs', import.meta.url),
8
+ 'system/_context_json_legend.hbs': new URL('./templates/system/_context_json_legend.hbs', import.meta.url),
9
+ 'system/explore_system.hbs': new URL('./templates/system/explore_system.hbs', import.meta.url),
10
+ 'system/plan_system.hbs': new URL('./templates/system/plan_system.hbs', import.meta.url),
11
+ 'system/reflection.hbs': new URL('./templates/system/reflection.hbs', import.meta.url),
12
+ 'system/patch_system.hbs': new URL('./templates/system/patch_system.hbs', import.meta.url),
13
+ 'phases/explore_user.hbs': new URL('./templates/phases/explore_user.hbs', import.meta.url),
14
+ 'phases/plan_user.hbs': new URL('./templates/phases/plan_user.hbs', import.meta.url),
15
+ 'phases/patch_user.hbs': new URL('./templates/phases/patch_user.hbs', import.meta.url),
16
+ };
17
+ export class PromptRegistry {
18
+ templates = new Map();
19
+ initPromise;
20
+ tools = [];
21
+ init() {
22
+ if (this.initPromise)
23
+ return this.initPromise;
24
+ this.initPromise = (async () => {
25
+ Handlebars.registerHelper('json', (context) => JSON.stringify(context, null, 2));
26
+ Handlebars.registerHelper('is_json', (context) => typeof context === 'string' && context.trim().startsWith('{'));
27
+ await this.registerPartial('tool_defs', 'system/_tool_defs.hbs');
28
+ await this.registerPartial('context_json_legend', 'system/_context_json_legend.hbs');
29
+ await this.registerPartial('main_system', 'system/main_system.hbs');
30
+ await this.loadTemplate('explore_system', 'system/explore_system.hbs');
31
+ await this.loadTemplate('plan_system', 'system/plan_system.hbs');
32
+ await this.loadTemplate('patch_system', 'system/patch_system.hbs');
33
+ await this.loadTemplate('reflection', 'system/reflection.hbs');
34
+ await this.loadTemplate('explore', 'phases/explore_user.hbs');
35
+ await this.loadTemplate('plan', 'phases/plan_user.hbs');
36
+ await this.loadTemplate('patch', 'phases/patch_user.hbs');
37
+ })();
38
+ return this.initPromise;
39
+ }
40
+ async registerPartial(name, relativePath) {
41
+ const content = await this.readTemplate(relativePath);
42
+ Handlebars.registerPartial(name, content);
43
+ }
44
+ async loadTemplate(name, relativePath) {
45
+ const content = await this.readTemplate(relativePath);
46
+ this.templates.set(name, Handlebars.compile(content));
47
+ }
48
+ async readTemplate(relativePath) {
49
+ const url = TEMPLATE_URLS[relativePath];
50
+ if (!url) {
51
+ throw new Error(`Unknown prompt template path: ${relativePath}`);
52
+ }
53
+ const bunAny = globalThis;
54
+ const bun = bunAny.Bun;
55
+ if (bun?.file) {
56
+ return bun.file(url).text();
57
+ }
58
+ return readFile(fileURLToPath(url), 'utf-8');
59
+ }
60
+ render(name, data) {
61
+ const template = this.templates.get(name);
62
+ if (!template) {
63
+ throw new Error(`Prompt template "${name}" not found (did you call PromptRegistry.init()?)`);
64
+ }
65
+ return template(data);
66
+ }
67
+ /**
68
+ * Set the tool definitions to be injected into prompts
69
+ */
70
+ setTools(tools) {
71
+ this.tools = tools;
72
+ }
73
+ /**
74
+ * Get serializable tool definitions for template rendering
75
+ */
76
+ getToolsForTemplate() {
77
+ return this.tools.map((spec) => ({
78
+ name: spec.name,
79
+ source: spec.source,
80
+ intent: spec.intent,
81
+ description: spec.description,
82
+ riskLevel: spec.riskLevel,
83
+ sideEffects: spec.sideEffects,
84
+ allowedPhases: spec.allowedPhases,
85
+ defaultTimeoutMs: spec.defaultTimeoutMs,
86
+ // Convert Zod schemas to JSON Schema for LLM consumption
87
+ inputSchema: this.zodToJsonSchema(spec.inputSchema),
88
+ outputSchema: this.zodToJsonSchema(spec.outputSchema),
89
+ // Include usage examples if available
90
+ examples: spec.examples,
91
+ }));
92
+ }
93
+ /**
94
+ * Convert Zod schema to a JSON Schema representation
95
+ */
96
+ zodToJsonSchema(zodSchema) {
97
+ if (!zodSchema) {
98
+ return { type: 'object', description: 'Schema details unavailable' };
99
+ }
100
+ const unwrapForJsonSchema = (schema) => {
101
+ let current = schema;
102
+ for (let depth = 0; depth < 20; depth++) {
103
+ const ZodEffects = z.ZodEffects;
104
+ if (ZodEffects && current instanceof ZodEffects) {
105
+ current = current._def.schema;
106
+ continue;
107
+ }
108
+ if (current instanceof z.ZodPipe) {
109
+ current = current._def.out;
110
+ continue;
111
+ }
112
+ if (current instanceof z.ZodOptional ||
113
+ current instanceof z.ZodNullable ||
114
+ current instanceof z.ZodDefault) {
115
+ current = current._def.innerType;
116
+ continue;
117
+ }
118
+ break;
119
+ }
120
+ return current;
121
+ };
122
+ try {
123
+ const unwrapped = unwrapForJsonSchema(zodSchema);
124
+ const schema = z.toJSONSchema(unwrapped);
125
+ if (schema && typeof schema === 'object') {
126
+ const { $schema: _ignored, ...rest } = schema;
127
+ return rest;
128
+ }
129
+ }
130
+ catch (_e) {
131
+ // Fall through to best-effort fallback
132
+ }
133
+ const def = zodSchema?._def;
134
+ if (def?.description) {
135
+ return { description: def.description };
136
+ }
137
+ return { type: 'object', description: 'Schema details available at runtime' };
138
+ }
139
+ renderPlanSystem() {
140
+ return this.render('plan_system', { tools: this.getToolsForTemplate() });
141
+ }
142
+ renderPlanSystemWithRuntime(runtime) {
143
+ return this.render('plan_system', { tools: this.getToolsForTemplate(), runtime });
144
+ }
145
+ renderPatchSystem() {
146
+ return this.render('patch_system', { tools: this.getToolsForTemplate() });
147
+ }
148
+ renderPatchSystemWithRuntime(runtime) {
149
+ return this.render('patch_system', { tools: this.getToolsForTemplate(), runtime });
150
+ }
151
+ renderExploreSystem() {
152
+ return this.render('explore_system', { tools: this.getToolsForTemplate() });
153
+ }
154
+ renderExploreSystemWithRuntime(runtime) {
155
+ return this.render('explore_system', { tools: this.getToolsForTemplate(), runtime });
156
+ }
157
+ renderExplore(vars) {
158
+ return this.render('explore', vars);
159
+ }
160
+ renderPlan(vars) {
161
+ return this.render('plan', vars);
162
+ }
163
+ renderPatch(vars) {
164
+ return this.render('patch', vars);
165
+ }
166
+ renderReflection(vars) {
167
+ return this.render('reflection', vars);
168
+ }
169
+ }
170
+ export function createPromptRegistry() {
171
+ return new PromptRegistry();
172
+ }
173
+ let activePromptRegistry = null;
174
+ export function setPromptRegistry(registry) {
175
+ activePromptRegistry = registry;
176
+ }
177
+ export function getPromptRegistry() {
178
+ if (!activePromptRegistry) {
179
+ throw new Error('PromptRegistry is not initialized. Call setPromptRegistry() at startup.');
180
+ }
181
+ return activePromptRegistry;
182
+ }
183
+ export function tryGetPromptRegistry() {
184
+ return activePromptRegistry;
185
+ }
186
+ export function clearPromptRegistry() {
187
+ activePromptRegistry = null;
188
+ }
189
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1,69 @@
1
+ import { getPromptRegistry } from './registry.js';
2
+ function extractTargetFiles(plan) {
3
+ try {
4
+ const parsed = JSON.parse(plan);
5
+ if (!Array.isArray(parsed.files))
6
+ return undefined;
7
+ const files = parsed.files.filter((f) => typeof f === 'string');
8
+ return files.length > 0 ? files.join(', ') : undefined;
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ }
14
+ export async function getExplorePrompt(context, instruction, lastError) {
15
+ const promptRegistry = getPromptRegistry();
16
+ await promptRegistry.init();
17
+ return promptRegistry.renderExplore({
18
+ context,
19
+ instruction,
20
+ lastError,
21
+ });
22
+ }
23
+ export async function getExploreSystemPrompt(toolRegistry, runtime) {
24
+ const promptRegistry = getPromptRegistry();
25
+ await promptRegistry.init();
26
+ if (toolRegistry) {
27
+ promptRegistry.setTools(toolRegistry.listAll());
28
+ }
29
+ return promptRegistry.renderExploreSystemWithRuntime(runtime);
30
+ }
31
+ export async function getPlanPrompt(context, instruction, maxFilesChanged, lastError) {
32
+ const promptRegistry = getPromptRegistry();
33
+ await promptRegistry.init();
34
+ return promptRegistry.renderPlan({
35
+ context,
36
+ instruction,
37
+ maxFilesChanged,
38
+ lastError,
39
+ });
40
+ }
41
+ export async function getPatchPrompt(plan, context, maxFilesChanged, maxDiffLines, lastError) {
42
+ const promptRegistry = getPromptRegistry();
43
+ await promptRegistry.init();
44
+ return promptRegistry.renderPatch({
45
+ plan,
46
+ context,
47
+ targetFiles: extractTargetFiles(plan),
48
+ maxFilesChanged,
49
+ maxDiffLines,
50
+ lastError,
51
+ });
52
+ }
53
+ export async function getPlanSystemPrompt(toolRegistry, runtime) {
54
+ const promptRegistry = getPromptRegistry();
55
+ await promptRegistry.init();
56
+ if (toolRegistry) {
57
+ promptRegistry.setTools(toolRegistry.listAll());
58
+ }
59
+ return promptRegistry.renderPlanSystemWithRuntime(runtime);
60
+ }
61
+ export async function getPatchSystemPrompt(toolRegistry, runtime) {
62
+ const promptRegistry = getPromptRegistry();
63
+ await promptRegistry.init();
64
+ if (toolRegistry) {
65
+ promptRegistry.setTools(toolRegistry.listAll());
66
+ }
67
+ return promptRegistry.renderPatchSystemWithRuntime(runtime);
68
+ }
69
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1,26 @@
1
+ # Context Data
2
+ {{#if (is_json context)}}
3
+ {{> context_json_legend}}
4
+ {{/if}}
5
+ {{{context}}}
6
+
7
+ # Instruction
8
+ {{{instruction}}}
9
+
10
+ # Last Error
11
+ {{#if lastError}}
12
+ The previous attempt failed with the following error:
13
+ {{{lastError}}}
14
+ {{/if}}
15
+
16
+ # Task
17
+ Your task is to EXPLORE the codebase to find the relevant files and code needed to address the instruction above.
18
+ - Use `fs.list` to navigate the file structure.
19
+ - Use `code.search` to find keywords (function names, error messages, variable names).
20
+ - Use `fs.read` to inspect file contents. **Reading a file is MANDATORY for any file you identify as relevant.**
21
+ - If the instruction is ambiguous (no clear file path / module / feature), ask ONE clarification question using `interaction.ask_user` and present 2-4 options for scope.
22
+
23
+ **CRITICAL: DO NOT GUESS.** If you mention a file in your summary, you MUST have read it using `fs.read` first.
24
+
25
+ **When you have found all necessary context, reply with a summary of the files you found.**
26
+ If you cannot find relevant files after a reasonable search, you must still perform at least one `fs.read` on a reasonable starting point (for example `README.md` or `package.json`) and then explain what you tried and what additional scope information you need.
@@ -0,0 +1,57 @@
1
+ You are a code modification assistant. Please generate a unified diff format patch based on the following plan and context.
2
+
3
+ # Context Hierarchy
4
+ - **Primary Text**: The ACTUAL content of the files. This is the absolute truth you must modify.
5
+ - **Staged Diff**: Represents committed intentions or baseline changes. Respect these as part of the established direction.
6
+ - **Unstaged Diff**: Shows recent work in progress. Do not revert or overwrite these changes unless explicitly instructed.
7
+ - **Untracked Files**: New files that are not yet tracked by git.
8
+
9
+ # Plan
10
+ {{{plan}}}
11
+
12
+ # Context Data
13
+ {{#if (is_json context)}}
14
+ {{> context_json_legend}}
15
+ {{/if}}
16
+ {{{context}}}
17
+ {{#if targetFiles}}
18
+ # Target Files
19
+ {{targetFiles}}
20
+ {{/if}}
21
+ {{#if lastError}}
22
+ # Last Error
23
+ The previous attempt failed with the following error. Please fix the issue described:
24
+ {{{lastError}}}
25
+ {{/if}}
26
+
27
+ # Bad Examples (REJECTED OUTPUT)
28
+ - **Adding explanations**: "Here is the diff you requested..."
29
+ - **Markdown blocks**: ```diff ... ```
30
+ - **Multiple versions**: Providing both the old and new file contents separately.
31
+ - **Partial fixes**: "I will fix the rest in the next step."
32
+
33
+ # Validation Checklist (BEFORE OUTPUT)
34
+ 1. **Format**: Is it standard git unified diff (starting with `diff --git`)?
35
+ 2. **Paths**: Do `--- a/path` and `+++ b/path` exactly match target files?
36
+ 3. **Scope**: Does it only modify what's requested in the instruction?
37
+ 4. **Context**: Are there 8-12 lines of EXACT surrounding context for each hunk?
38
+ 5. **Cleanliness**: Is there ANY text other than the diff itself? (If yes, remove it).
39
+
40
+ # Requirements
41
+ - Must generate standard **git unified diff format**.
42
+ - **Output ONLY the final diff. Do NOT include any explanations, Markdown blocks, or commentary.**
43
+ - **If you need to fix an error, regenerate the ENTIRE diff correctly in one block.**
44
+ - **CRITICAL**: Use EXACT relative paths from the repository root in diff headers.
45
+ - Example: `--- a/src/index.js` and `+++ b/src/index.js`
46
+ - **Context Matching**: Provide 8-12 lines of surrounding code.
47
+ - Indentation and whitespace must match EXACTLY.
48
+ - **DO NOT include `index <old>..<new>` lines** (the host may strip them for safety).
49
+ - Constraints:
50
+ - Maximum {{maxFilesChanged}} files.
51
+ - Maximum {{maxDiffLines}} total diff lines.
52
+ - No file creation, deletion, or renaming.
53
+ - No unrelated refactoring or formatting.
54
+ - **DO NOT translate or modify comments unless explicitly instructed.**
55
+
56
+ Please return the patch in PURE unified diff format:
57
+
@@ -0,0 +1,33 @@
1
+ You are a code modification assistant. Please generate a detailed modification plan based on the following context and instruction.
2
+
3
+ # Context Hierarchy
4
+ - **Primary Text**: The ACTUAL content of the files. This is the only authoritative source for what lines exist.
5
+ - **Staged Diff**: Informational only. It may include changes that are NOT present in the working tree text you are patching.
6
+ - **Unstaged Diff**: Informational only. It may not fully reflect the working tree after retries.
7
+ - **Untracked Files**: New files that are not yet tracked by git.
8
+
9
+ # Context Data
10
+ {{#if (is_json context)}}
11
+ {{> context_json_legend}}
12
+ {{/if}}
13
+ {{{context}}}
14
+
15
+ # Instruction
16
+ {{{instruction}}}
17
+ {{#if lastError}}
18
+ # Last Error
19
+ The previous attempt failed with the following error. Please adjust the plan to fix this issue:
20
+ {{{lastError}}}
21
+ {{/if}}
22
+ # Requirements
23
+ - The plan must be in JSON format, containing exactly these fields: goal, files, changes, verify.
24
+ - 'goal': A brief, one-sentence description of the modification goal.
25
+ - 'files': An array of EXACT relative file paths that MUST be modified.
26
+ - 'changes': An array of strings, each clearly describing a specific logical change.
27
+ - 'verify': A verification command (e.g., `pytest`, `go test ./...`, or your project test command) or a concise description of how to verify.
28
+ - **Constraints**:
29
+ - Maximum {{maxFilesChanged}} files can be modified.
30
+ - Do NOT generate any code blocks or implementation details here.
31
+ - DO NOT include files that do not need changes.
32
+
33
+ Please return the plan in PURE JSON format without any additional text:
@@ -0,0 +1,21 @@
1
+ # Context Data Legend (Optimized JSON)
2
+ The context data uses short keys to save tokens. Please use this mapping:
3
+ - **c**: Root Context
4
+ - **m**: Manifest (Targets & Maps)
5
+ - **t**: Targets (Files of interest)
6
+ - **p**: path, **r**: reason, **c**: confidence (h=high, m=medium, l=low), **e**: evidence
7
+ - **rm**: Repo Map (Dependencies)
8
+ - **tr**: trigger (s=shallow, d=deep), **md**: maxDepth, **n**: nodes, **e**: edges
9
+ - **sm**: Symbol Map (AST relations)
10
+ - **pf**: Primary File [path, content]
11
+ - **rf**: Related Files [path, reason, mode (f=full, o=outline), content]
12
+ - **s**: Code Snippets [file, line, content]
13
+ - **d**: Diffs (s=staged, u=unstaged, g=git, ut=untracked)
14
+ - **a**: Analysis (ast results)
15
+ - **pm**: Project Metadata (pj=package.json, rh=README header, cf=config files, ai=AI rules)
16
+ - **gh**: Git History (rc=recent commits)
17
+ - **pt**: Project Topology (ms=modules, fs=folder structure)
18
+ - **ms**: name(n), path(p), role(er: c=core, a=adapter, cl=cli, u=util)
19
+ - **kb**: Knowledge Base (pr=rules, ad=decisions, up=user prefs)
20
+ - **ad**: [ [Date, Content, Files[]], ... ] (Positional tuples)
21
+ - **ra**: Runtime Artifacts (bd=build dirs, ev=env vars, lf=lock files)
@@ -0,0 +1,60 @@
1
+ {{! Tool definitions for LLM context }}
2
+ {{#if tools}}
3
+ ## Available Tools
4
+
5
+ You have access to the following tools to help complete your tasks:
6
+
7
+ {{#each tools}}
8
+ ### {{this.name}}
9
+
10
+ **Description**: {{this.description}}
11
+
12
+ **Source**: {{this.source}}
13
+
14
+ **Intent**: {{this.intent}}
15
+
16
+ **Risk Level**: {{this.riskLevel}}
17
+
18
+ **Side Effects**: {{#each this.sideEffects}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}
19
+
20
+ **Allowed Phases**: {{#each this.allowedPhases}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}
21
+
22
+ {{#if this.defaultTimeoutMs}}**Timeout**: {{this.defaultTimeoutMs}}ms{{/if}}
23
+
24
+ **Input Schema**:
25
+ ```json
26
+ {{{json this.inputSchema}}}
27
+ ```
28
+
29
+ **Output Schema**:
30
+ ```json
31
+ {{{json this.outputSchema}}}
32
+ ```
33
+
34
+ {{#if this.examples}}
35
+ **Usage Examples**:
36
+ {{#each this.examples}}
37
+ - {{this.description}}:
38
+ ```json
39
+ {{{json this.input}}}
40
+ ```
41
+ {{#if this.output}}
42
+ **Output**:
43
+ ```json
44
+ {{{json this.output}}}
45
+ ```
46
+ {{/if}}
47
+ {{/each}}
48
+ {{/if}}
49
+
50
+ {{/each}}
51
+
52
+ ## Tool Usage Guidelines
53
+
54
+ - Only call tools that are allowed in the current execution phase
55
+ - Respect side effect declarations and risk levels
56
+ - Tool calls will be validated against input schemas before execution
57
+ - High-risk tools may require additional confirmation
58
+ {{else}}
59
+ {{! No tools registered - this is expected during initialization or testing }}
60
+ {{/if}}
@@ -0,0 +1,26 @@
1
+ {{> main_system phaseInstruction="You are a code investigator. Your goal is to locate and read the files relevant to the user's request.
2
+
3
+ **Capabilities:**
4
+ - You can list directories (`fs.list`), search code (`code.search`), and read files (`fs.read`).
5
+ - You can ask the user a short clarification question (`interaction.ask_user`) when the request is ambiguous.
6
+ - You CANNOT modify files. Your role is purely investigative.
7
+
8
+ **Workflow:**
9
+ 1. Analyze the user's request to identify key terms and potential file locations.
10
+ 1. If the request does not clearly specify which files or area to focus on, ask ONE clarification question using `interaction.ask_user` with 2-4 options (for example: Focus area: `src/`, `tests/`, `docs/`, `config`).
11
+ 2. Use `fs.list` or `code.search` to locate relevant files.
12
+ 3. Use `fs.read` to examine the content of promising files.
13
+ 4. Continue exploring until you are confident you have identified the files that need to be modified.
14
+ 5. When you have found the relevant context, reply with a concise summary of your findings to complete the phase.
15
+
16
+ **Important:**
17
+ - **MANDATORY: YOU MUST READ AT LEAST ONE FILE.** Any exploration that concludes without at least one successful `fs.read` call is a violation of the execution contract and will be rejected.
18
+ - **DO NOT GUESS file contents.** You must always use `fs.read` to see the actual content of a file before claiming it is relevant.
19
+ - If you find a file that looks relevant, **YOU MUST READ IT**. The content will be automatically added to the context for the next phase.
20
+ - Tool calls must use valid JSON arguments that match the tool input schema.
21
+ - `fs.list` requires `{\"path\":\"relative/dir/from/repo/root\"}` (example: `{\"path\":\".\"}`); optionally add `includeHidden`, `maxEntries`.
22
+ - `fs.read` requires `{\"file\":\"relative/path/from/repo/root\"}` (example: `{\"file\":\"README.md\"}`).
23
+ - `code.search` requires `{\"pattern\":\"...\"}`; optionally add `glob`, `cwd`, `maxMatches`, `isRegex`.
24
+ - Be efficient. Do not read the entire codebase.
25
+ - If the user provides specific file paths, read them first.
26
+ "}}
@@ -0,0 +1,18 @@
1
+ You are SalmonLoop. {{phaseInstruction}}
2
+
3
+ {{#if runtime.plan}}
4
+ ## Runtime Plan (Local, gitignored)
5
+ Session ID: {{runtime.plan.sessionId}}
6
+ Path hint: {{runtime.plan.planPathHint}}
7
+
8
+ Guidelines:
9
+ - Use `plan.read` to obtain `baseHash`.
10
+ - Use `plan.update` with this `sessionId` to update plan steps by stable `sl:id`.
11
+ - Prefer appending tasks under `work_root` and tracking progress via `sl:status` and checkboxes.
12
+ - Keep phase outputs strictly compliant (PLAN must still be pure JSON, PATCH must still be a unified diff). Tool calls are allowed, but your final content must remain valid.
13
+ {{/if}}
14
+
15
+ ## Knowledge Retention
16
+ You have access to a cross-session knowledge base. When you learn important project-specific rules, long-term architectural decisions, or user preferences, use the `update_knowledge` tool to persist them. This helps you stay consistent in future sessions.
17
+
18
+ {{> tool_defs}}
@@ -0,0 +1,10 @@
1
+ {{> main_system phaseInstruction="Use tool calls to inspect the repository when needed. Output only a valid unified diff when patching.
2
+
3
+ CRITICAL CHARACTER FIDELITY RULE:
4
+ You MUST replicate context lines (lines starting with ' ') EXACTLY as they appear in the provided snippets.
5
+ - DO NOT remove or add hyphens.
6
+ - DO NOT normalize casing.
7
+ - DO NOT fix typos in context lines.
8
+ Failure to maintain 100% character fidelity will cause git-apply to fail.
9
+
10
+ If you used a sub-agent, prefer referencing its proposal artifacts (s8p handles) in your reasoning rather than copying large diff text. Only read artifacts via 'artifact.read' when necessary for correctness."}}
@@ -0,0 +1 @@
1
+ {{> main_system phaseInstruction="Use tool calls to inspect the repository. **DO NOT GUESS file contents.** If a tool call is necessary, call it and wait. You must base your plan ONLY on the file contents provided in the context. If you lack content for a file, use fs.read to fetch it before finalizing the plan. For complex tasks, use 'agent_dispatch' to delegate investigation."}}
@@ -0,0 +1,39 @@
1
+ You are the SalmonLoop Meta-Reflection Engine. Your goal is to derive long-term project constraints by analyzing execution history against a target environment's verification contract.
2
+
3
+ ## Environment Specification (Source of Truth)
4
+ The target environment has the following specifications. All suggested rules MUST be consistent with these facts:
5
+ {{json metadata}}
6
+
7
+ ## High-Level Instruction
8
+ {{instruction}}
9
+
10
+ ## Execution Evidence (Contract Violations)
11
+ The following attempts were made. Focus on why the "Action" violated the "Verification Contract":
12
+ {{#each history}}
13
+ ### Attempt {{this.attempt}}
14
+ - **Status**: {{#if this.error}}CONTRACT_VIOLATION{{else}}CONTRACT_SUCCESS{{/if}}
15
+ {{#if this.error}}
16
+ - **Violation Classification**: The environment signaled a failure that matches patterns of logic regression or environmental constraint breach.
17
+ - **Raw Signal Trace**:
18
+ ```
19
+ {{this.error}}
20
+ ```
21
+ {{/if}}
22
+ - **Proposed Logic (Plan)**:
23
+ {{json this.plan}}
24
+ {{/each}}
25
+
26
+ ## Reflection Task
27
+ 1. **Root Cause Analysis**: Why did the proposed logic violate the environment's contract? Cross-reference the "Raw Signal Trace" with the "Environment Specification".
28
+ 2. **Knowledge Hardening**: Define 1-2 universal rules that would have allowed a perfect execution in Attempt 1.
29
+ - **Requirement**: Every rule MUST cite an evidence source from the "Environment Specification".
30
+ 3. **Consistency Check**: Review existing "Project Rules" in the Knowledge Base (if provided in metadata or context). If a new rule contradicts or supersedes an old one, identify the old rule for deprecation.
31
+
32
+ ## Output Format
33
+ Return a PURE JSON object.
34
+ {
35
+ "lessons": ["summary"],
36
+ "suggestedRules": ["New Rule (Evidence: source)"],
37
+ "deprecatedRules": ["Exact text of old rule to remove"],
38
+ "suggestedDecisions": ["Architectural rationale"]
39
+ }
@@ -0,0 +1,30 @@
1
+ export function buildA2AAgentCard(input) {
2
+ const securitySchemes = input.security.length > 0
3
+ ? Object.fromEntries(input.security.map((scheme, index) => [
4
+ scheme.name ?? `${scheme.type}-${index}`,
5
+ { ...scheme },
6
+ ]))
7
+ : undefined;
8
+ return {
9
+ name: input.name,
10
+ url: input.url,
11
+ description: input.description ?? 'Salmon Loop agent',
12
+ version: input.version ?? '0.2.0',
13
+ protocolVersion: input.protocolVersion ?? '1.0.0',
14
+ defaultInputModes: ['text/plain'],
15
+ defaultOutputModes: ['text/plain'],
16
+ capabilities: {
17
+ pushNotifications: input.capabilityOptions?.pushNotifications ?? false,
18
+ streaming: input.capabilityOptions?.streaming ?? true,
19
+ stateTransitionHistory: input.capabilityOptions?.stateTransitionHistory ?? true,
20
+ },
21
+ skills: input.capabilities.map((capability) => ({
22
+ id: capability.id,
23
+ name: capability.title,
24
+ description: capability.title,
25
+ tags: [],
26
+ })),
27
+ securitySchemes,
28
+ };
29
+ }
30
+ //# sourceMappingURL=agent-card.js.map
@@ -0,0 +1,14 @@
1
+ export function mapA2ATaskToCanonicalTask(input) {
2
+ const instruction = input.message.parts
3
+ .filter((part) => part.type === 'text' && typeof part.text === 'string')
4
+ .map((part) => part.text)
5
+ .join('\n');
6
+ return {
7
+ id: input.id,
8
+ capability: 'patch',
9
+ state: 'accepted',
10
+ request: { instruction },
11
+ createdAt: new Date().toISOString(),
12
+ };
13
+ }
14
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1,31 @@
1
+ import { UserBuilder } from '@a2a-js/sdk/server/express';
2
+ /**
3
+ * Converts A2AAuthPolicyMiddleware to Express middleware
4
+ * Handles authentication failures by returning 401 Unauthorized
5
+ */
6
+ export function createAuthMiddlewareFromPolicy(_authPolicy) {
7
+ return async (req, res, next) => {
8
+ try {
9
+ // Note: A2AAuthPolicyMiddleware expects Fetch API Request, but Express provides its own Request
10
+ // For now, we skip the policy check and just pass through
11
+ // In a real implementation, you would need to adapt the Express Request to Fetch API Request
12
+ next();
13
+ }
14
+ catch (_error) {
15
+ res.status(500).json({ error: 'Authentication failed' });
16
+ }
17
+ };
18
+ }
19
+ /**
20
+ * Creates a UserBuilder from Express request with auth context
21
+ */
22
+ export function createUserBuilderFromAuthContext() {
23
+ return (req) => {
24
+ const authContext = req.authContext;
25
+ if (authContext) {
26
+ return UserBuilder.noAuthentication();
27
+ }
28
+ return UserBuilder.noAuthentication();
29
+ };
30
+ }
31
+ //# sourceMappingURL=auth-middleware.js.map