@tacuchi/agent-workflow-cli 22.4.2 → 24.0.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 (295) hide show
  1. package/README.md +39 -3
  2. package/dist/adapters/git-cli.js +59 -17
  3. package/dist/adapters/git-cli.js.map +1 -1
  4. package/dist/adapters/node-file-system.js +55 -1
  5. package/dist/adapters/node-file-system.js.map +1 -1
  6. package/dist/adapters/postgres-readonly-tools.js +277 -0
  7. package/dist/adapters/postgres-readonly-tools.js.map +1 -0
  8. package/dist/application/artifacts-service.js +2 -2
  9. package/dist/application/artifacts-service.js.map +1 -1
  10. package/dist/application/capability/dispatcher.js +2 -2
  11. package/dist/application/capability/dispatcher.js.map +1 -1
  12. package/dist/application/capability/installed-inventory.js +2 -2
  13. package/dist/application/capability/installed-inventory.js.map +1 -1
  14. package/dist/application/capability/readiness.js +1 -1
  15. package/dist/application/capability/readiness.js.map +1 -1
  16. package/dist/application/check-branch-service.js +2 -2
  17. package/dist/application/check-branch-service.js.map +1 -1
  18. package/dist/application/checkpoint/files-touched.js +271 -0
  19. package/dist/application/checkpoint/files-touched.js.map +1 -0
  20. package/dist/application/checkpoint/markdown.js +61 -8
  21. package/dist/application/checkpoint/markdown.js.map +1 -1
  22. package/dist/application/checkpoint/state-reader.js +8 -2
  23. package/dist/application/checkpoint/state-reader.js.map +1 -1
  24. package/dist/application/checkpoint-write-service.js +16 -5
  25. package/dist/application/checkpoint-write-service.js.map +1 -1
  26. package/dist/application/claims-ledger.js +330 -0
  27. package/dist/application/claims-ledger.js.map +1 -0
  28. package/dist/application/claims-recovery.js +338 -0
  29. package/dist/application/claims-recovery.js.map +1 -0
  30. package/dist/application/database-mcp-server.js +168 -0
  31. package/dist/application/database-mcp-server.js.map +1 -0
  32. package/dist/application/database-mcp-stdio.js +137 -0
  33. package/dist/application/database-mcp-stdio.js.map +1 -0
  34. package/dist/application/database-tool-catalog.js +226 -0
  35. package/dist/application/database-tool-catalog.js.map +1 -0
  36. package/dist/application/dev-only-services.js +154 -44
  37. package/dist/application/dev-only-services.js.map +1 -1
  38. package/dist/application/dsn-reader-service.js +1 -1
  39. package/dist/application/elicitation-server.js +382 -0
  40. package/dist/application/elicitation-server.js.map +1 -0
  41. package/dist/application/elicitation-stdio.js +48 -0
  42. package/dist/application/elicitation-stdio.js.map +1 -0
  43. package/dist/application/flow/advance.js +86 -5
  44. package/dist/application/flow/advance.js.map +1 -1
  45. package/dist/application/flow/checkout-observation.js +152 -0
  46. package/dist/application/flow/checkout-observation.js.map +1 -0
  47. package/dist/application/flow/flow-service.js +72 -13
  48. package/dist/application/flow/flow-service.js.map +1 -1
  49. package/dist/application/flow/internal-actions.js +460 -1
  50. package/dist/application/flow/internal-actions.js.map +1 -1
  51. package/dist/application/flow/internal-drive.js +22 -9
  52. package/dist/application/flow/internal-drive.js.map +1 -1
  53. package/dist/application/flow/prove.js +205 -0
  54. package/dist/application/flow/prove.js.map +1 -0
  55. package/dist/application/flow/run-journey.js +15 -0
  56. package/dist/application/flow/run-journey.js.map +1 -0
  57. package/dist/application/flow/run-projection.js +15 -3
  58. package/dist/application/flow/run-projection.js.map +1 -1
  59. package/dist/application/flow/run-state-service.js +19 -4
  60. package/dist/application/flow/run-state-service.js.map +1 -1
  61. package/dist/application/flow/submit.js +250 -72
  62. package/dist/application/flow/submit.js.map +1 -1
  63. package/dist/application/generate-launch-service.js +4 -4
  64. package/dist/application/generate-launch-service.js.map +1 -1
  65. package/dist/application/git-flow-service.js +9 -0
  66. package/dist/application/git-flow-service.js.map +1 -1
  67. package/dist/application/local-proposal.js +9 -0
  68. package/dist/application/local-proposal.js.map +1 -1
  69. package/dist/application/lock-service.js +96 -28
  70. package/dist/application/lock-service.js.map +1 -1
  71. package/dist/application/logging/log-events.js +19 -3
  72. package/dist/application/logging/log-events.js.map +1 -1
  73. package/dist/application/logging/logger.js +2 -2
  74. package/dist/application/logging/logger.js.map +1 -1
  75. package/dist/application/mcp-connections-service.js +115 -41
  76. package/dist/application/mcp-connections-service.js.map +1 -1
  77. package/dist/application/mcp-doctor-service.js +98 -54
  78. package/dist/application/mcp-doctor-service.js.map +1 -1
  79. package/dist/application/mcp-entry-classification.js +60 -0
  80. package/dist/application/mcp-entry-classification.js.map +1 -0
  81. package/dist/application/mcp-host-reader.js +114 -81
  82. package/dist/application/mcp-host-reader.js.map +1 -1
  83. package/dist/application/mcp-host-receipt-service.js +399 -0
  84. package/dist/application/mcp-host-receipt-service.js.map +1 -0
  85. package/dist/application/mcp-host-receipt-store.js +122 -0
  86. package/dist/application/mcp-host-receipt-store.js.map +1 -0
  87. package/dist/application/mcp-host-receipts.js +28 -0
  88. package/dist/application/mcp-host-receipts.js.map +1 -0
  89. package/dist/application/mcp-host-writer.js +321 -126
  90. package/dist/application/mcp-host-writer.js.map +1 -1
  91. package/dist/application/mcp-launch-probe-service.js +142 -0
  92. package/dist/application/mcp-launch-probe-service.js.map +1 -0
  93. package/dist/application/mcp-migration-service.js +351 -0
  94. package/dist/application/mcp-migration-service.js.map +1 -0
  95. package/dist/application/mcp-native-host-check-service.js +154 -0
  96. package/dist/application/mcp-native-host-check-service.js.map +1 -0
  97. package/dist/application/mcp-receipt-registration-service.js +105 -0
  98. package/dist/application/mcp-receipt-registration-service.js.map +1 -0
  99. package/dist/application/mcp-receipt-removal-service.js +62 -0
  100. package/dist/application/mcp-receipt-removal-service.js.map +1 -0
  101. package/dist/application/mcp-remove-service.js +84 -21
  102. package/dist/application/mcp-remove-service.js.map +1 -1
  103. package/dist/application/mcp-scope-common.js +2 -4
  104. package/dist/application/mcp-scope-common.js.map +1 -1
  105. package/dist/application/mcp-setup-service.js +60 -21
  106. package/dist/application/mcp-setup-service.js.map +1 -1
  107. package/dist/application/mcp-stdio-probe.js +526 -0
  108. package/dist/application/mcp-stdio-probe.js.map +1 -0
  109. package/dist/application/mcp-test-connection-service.js +23 -50
  110. package/dist/application/mcp-test-connection-service.js.map +1 -1
  111. package/dist/application/merge-state-service.js +10 -16
  112. package/dist/application/merge-state-service.js.map +1 -1
  113. package/dist/application/multiroot/claude.js +34 -15
  114. package/dist/application/multiroot/claude.js.map +1 -1
  115. package/dist/application/multiroot/codex.js +9 -5
  116. package/dist/application/multiroot/codex.js.map +1 -1
  117. package/dist/application/multiroot-service.js +20 -11
  118. package/dist/application/multiroot-service.js.map +1 -1
  119. package/dist/application/parsers/project-block.js +25 -2
  120. package/dist/application/parsers/project-block.js.map +1 -1
  121. package/dist/application/paths-service.js +30 -31
  122. package/dist/application/paths-service.js.map +1 -1
  123. package/dist/application/plan-exec-batch-service.js +549 -0
  124. package/dist/application/plan-exec-batch-service.js.map +1 -0
  125. package/dist/application/plan-exec-decision-service.js +273 -0
  126. package/dist/application/plan-exec-decision-service.js.map +1 -0
  127. package/dist/application/project-md-service.js +2 -2
  128. package/dist/application/project-md-service.js.map +1 -1
  129. package/dist/application/project-md-upsert-service.js +4 -4
  130. package/dist/application/project-md-upsert-service.js.map +1 -1
  131. package/dist/application/project-tab-data.js +12 -7
  132. package/dist/application/project-tab-data.js.map +1 -1
  133. package/dist/application/release-data-service.js +2 -2
  134. package/dist/application/release-data-service.js.map +1 -1
  135. package/dist/application/resume-service.js +32 -11
  136. package/dist/application/resume-service.js.map +1 -1
  137. package/dist/application/retirement/apply.js +84 -0
  138. package/dist/application/retirement/apply.js.map +1 -1
  139. package/dist/application/retirement/attribution.js +31 -1
  140. package/dist/application/retirement/attribution.js.map +1 -1
  141. package/dist/application/retirement/graph.js +19 -1
  142. package/dist/application/retirement/graph.js.map +1 -1
  143. package/dist/application/retirement/journal.js +11 -0
  144. package/dist/application/retirement/journal.js.map +1 -1
  145. package/dist/application/retirement/prepare.js +89 -3
  146. package/dist/application/retirement/prepare.js.map +1 -1
  147. package/dist/application/retirement/preview.js +16 -0
  148. package/dist/application/retirement/preview.js.map +1 -1
  149. package/dist/application/retirement/resolve.js +65 -0
  150. package/dist/application/retirement/resolve.js.map +1 -1
  151. package/dist/application/self/host-states.js +2 -0
  152. package/dist/application/self/host-states.js.map +1 -1
  153. package/dist/application/self/install-skill.js +21 -17
  154. package/dist/application/self/install-skill.js.map +1 -1
  155. package/dist/application/self/mcp-config.js +392 -84
  156. package/dist/application/self/mcp-config.js.map +1 -1
  157. package/dist/application/self/mcp-via-state.js +62 -0
  158. package/dist/application/self/mcp-via-state.js.map +1 -0
  159. package/dist/application/self/uninstall.js +15 -5
  160. package/dist/application/self/uninstall.js.map +1 -1
  161. package/dist/application/session-close-service.js +24 -1
  162. package/dist/application/session-close-service.js.map +1 -1
  163. package/dist/application/session-create-service.js +7 -0
  164. package/dist/application/session-create-service.js.map +1 -1
  165. package/dist/application/session-resume-service.js +2 -2
  166. package/dist/application/session-resume-service.js.map +1 -1
  167. package/dist/application/sessions-service.js +2 -4
  168. package/dist/application/sessions-service.js.map +1 -1
  169. package/dist/application/skills-resolver-service.js +4 -4
  170. package/dist/application/skills-resolver-service.js.map +1 -1
  171. package/dist/application/source-boundary-policy.js +18 -7
  172. package/dist/application/source-boundary-policy.js.map +1 -1
  173. package/dist/application/source-remove-service.js +12 -1
  174. package/dist/application/source-remove-service.js.map +1 -1
  175. package/dist/application/sources-service.js +2 -2
  176. package/dist/application/sources-service.js.map +1 -1
  177. package/dist/application/status-service.js +4 -0
  178. package/dist/application/status-service.js.map +1 -1
  179. package/dist/application/visibility-doctor-service.js +1 -1
  180. package/dist/application/visibility-doctor-service.js.map +1 -1
  181. package/dist/application/workline-index-service.js +182 -27
  182. package/dist/application/workline-index-service.js.map +1 -1
  183. package/dist/application/workspace-init-service.js +89 -271
  184. package/dist/application/workspace-init-service.js.map +1 -1
  185. package/dist/application/workspace-materialization-service.js +300 -0
  186. package/dist/application/workspace-materialization-service.js.map +1 -0
  187. package/dist/application/worktree-service.js +32 -3
  188. package/dist/application/worktree-service.js.map +1 -1
  189. package/dist/cli/commands/capability.js +4 -7
  190. package/dist/cli/commands/capability.js.map +1 -1
  191. package/dist/cli/commands/claims.js +72 -0
  192. package/dist/cli/commands/claims.js.map +1 -0
  193. package/dist/cli/commands/dev-only.js +73 -25
  194. package/dist/cli/commands/dev-only.js.map +1 -1
  195. package/dist/cli/commands/flow.js +145 -42
  196. package/dist/cli/commands/flow.js.map +1 -1
  197. package/dist/cli/commands/index.js +4 -0
  198. package/dist/cli/commands/index.js.map +1 -1
  199. package/dist/cli/commands/mcp.js +752 -76
  200. package/dist/cli/commands/mcp.js.map +1 -1
  201. package/dist/cli/commands/multiroot.js +40 -7
  202. package/dist/cli/commands/multiroot.js.map +1 -1
  203. package/dist/cli/commands/resume.js +9 -3
  204. package/dist/cli/commands/resume.js.map +1 -1
  205. package/dist/cli/commands/retirement.js +9 -0
  206. package/dist/cli/commands/retirement.js.map +1 -1
  207. package/dist/cli/commands/session-create.js +1 -1
  208. package/dist/cli/commands/session-create.js.map +1 -1
  209. package/dist/cli/commands/skills.js +1 -1
  210. package/dist/cli/commands/skills.js.map +1 -1
  211. package/dist/cli/commands/status.js +72 -24
  212. package/dist/cli/commands/status.js.map +1 -1
  213. package/dist/cli/commands/tool.js +141 -0
  214. package/dist/cli/commands/tool.js.map +1 -0
  215. package/dist/cli/commands/workspace-init.js +5 -5
  216. package/dist/cli/commands/workspace-init.js.map +1 -1
  217. package/dist/cli/help-groups.js +6 -1
  218. package/dist/cli/help-groups.js.map +1 -1
  219. package/dist/cli/main.js +272 -67
  220. package/dist/cli/main.js.map +1 -1
  221. package/dist/cli/parser.js +8 -1
  222. package/dist/cli/parser.js.map +1 -1
  223. package/dist/cli/registry.js.map +1 -1
  224. package/dist/cli/render.js +15 -2
  225. package/dist/cli/render.js.map +1 -1
  226. package/dist/cli/tui/app.js +3 -2
  227. package/dist/cli/tui/app.js.map +1 -1
  228. package/dist/cli/tui/components/workspace-init-form.js +7 -7
  229. package/dist/cli/tui/components/workspace-init-form.js.map +1 -1
  230. package/dist/cli/tui/data/workflow-content.js +2 -2
  231. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  232. package/dist/cli/tui/tabs/config-tab.js +4 -3
  233. package/dist/cli/tui/tabs/config-tab.js.map +1 -1
  234. package/dist/cli/tui/tabs/mcp-tab-helpers.js +72 -1
  235. package/dist/cli/tui/tabs/mcp-tab-helpers.js.map +1 -1
  236. package/dist/cli/tui/tabs/mcp-tab.js +101 -42
  237. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  238. package/dist/cli/tui/tabs/project-tab.js +18 -21
  239. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  240. package/dist/cli/tui/workspace-root.js +13 -0
  241. package/dist/cli/tui/workspace-root.js.map +1 -0
  242. package/dist/domain/capability/protocol.js +2 -2
  243. package/dist/domain/capability/protocol.js.map +1 -1
  244. package/dist/domain/database-tools.js +445 -0
  245. package/dist/domain/database-tools.js.map +1 -0
  246. package/dist/domain/degradation-notice.js +60 -0
  247. package/dist/domain/degradation-notice.js.map +1 -0
  248. package/dist/domain/elicitation.js +152 -0
  249. package/dist/domain/elicitation.js.map +1 -0
  250. package/dist/domain/flow/answer.js +173 -42
  251. package/dist/domain/flow/answer.js.map +1 -1
  252. package/dist/domain/flow/authority.js +184 -127
  253. package/dist/domain/flow/authority.js.map +1 -1
  254. package/dist/domain/flow/directive.js +47 -1
  255. package/dist/domain/flow/directive.js.map +1 -1
  256. package/dist/domain/flow/rules.js +7 -4
  257. package/dist/domain/flow/rules.js.map +1 -1
  258. package/dist/domain/flow/run-state.js +636 -31
  259. package/dist/domain/flow/run-state.js.map +1 -1
  260. package/dist/domain/harnesses.js +16 -0
  261. package/dist/domain/harnesses.js.map +1 -1
  262. package/dist/domain/mcp-entry.js +164 -28
  263. package/dist/domain/mcp-entry.js.map +1 -1
  264. package/dist/domain/postgres-object-search.js +320 -0
  265. package/dist/domain/postgres-object-search.js.map +1 -0
  266. package/dist/domain/redaction.js +47 -0
  267. package/dist/domain/redaction.js.map +1 -0
  268. package/dist/domain/retirement/proposal.js +1 -0
  269. package/dist/domain/retirement/proposal.js.map +1 -1
  270. package/dist/domain/structured-choice-stamp.js +32 -4
  271. package/dist/domain/structured-choice-stamp.js.map +1 -1
  272. package/dist/domain/workline-mcp-entry.js +34 -0
  273. package/dist/domain/workline-mcp-entry.js.map +1 -0
  274. package/dist/ports/postgres-tools.js +10 -0
  275. package/dist/ports/postgres-tools.js.map +1 -0
  276. package/dist/runtime/namespace-resolver.js +104 -18
  277. package/dist/runtime/namespace-resolver.js.map +1 -1
  278. package/package.json +5 -1
  279. package/skills/w/README.md +2 -2
  280. package/skills/w/SKILL.md +9 -10
  281. package/skills/w/artifacts/README.md +1 -1
  282. package/skills/w/commands/README.md +3 -3
  283. package/skills/w/commands/persist.md +3 -1
  284. package/skills/w/commands/resume.md +1 -1
  285. package/skills/w/commands/spec-new.md +2 -2
  286. package/skills/w/commands/status.md +1 -1
  287. package/skills/w/commands/workspace-init.md +9 -10
  288. package/skills/w/context/MANIFEST.json +1 -4
  289. package/skills/w/harness/HARNESS.md +1 -1
  290. package/skills/w/loops/quick-loop/LOOP.md +1 -1
  291. package/skills/w/modules/PROMPT-CONTINUITY.md +1 -1
  292. package/skills/w/modules/WORKSPACE-SCAFFOLD.md +17 -20
  293. package/skills/w/schemas/capability-descriptor.schema.json +1 -1
  294. package/dist/application/mcp-dbhub-launcher.js +0 -216
  295. package/dist/application/mcp-dbhub-launcher.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-mcp-stdio.js","sourceRoot":"","sources":["../../src/application/database-mcp-stdio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ import { DATABASE_TOOL_DESCRIPTORS, MAX_TOOL_RESULT_BYTES, isDatabaseToolName, parseDatabaseToolInput, toolFailure, toolSuccess, validateReadOnlySql, } from "../domain/database-tools.js";
2
+ import { buildPostgresObjectSearchQuery, normalizePostgresObjectSearchRows, } from "../domain/postgres-object-search.js";
3
+ import { PostgresToolError, } from "../ports/postgres-tools.js";
4
+ import { readDsnFile } from "./dsn-reader-service.js";
5
+ import { resolveMcpConnectionSelection, } from "./mcp-connections-service.js";
6
+ /**
7
+ * The deep module for database tools. Its small interface is shared by direct
8
+ * CLI and MCP adapters; connection lookup, validation, policy, handler choice
9
+ * and response encoding stay local instead of drifting across transports.
10
+ */
11
+ export class DatabaseToolCatalog {
12
+ deps;
13
+ constructor(deps) {
14
+ this.deps = deps;
15
+ }
16
+ list(connection) {
17
+ const selected = this.selectConnection(connection);
18
+ if (!selected.ok)
19
+ return { payload: sanitizeSelectionFailure(selected.response), exitCode: 2 };
20
+ return { payload: { tools: DATABASE_TOOL_DESCRIPTORS }, exitCode: 0 };
21
+ }
22
+ async call(call) {
23
+ const prepared = this.prepareCall(call);
24
+ if (!prepared.ok)
25
+ return prepared.outcome;
26
+ if (prepared.value.tool === "execute_sql")
27
+ return await this.executeSql(prepared.value);
28
+ return await this.searchObjects(prepared.value);
29
+ }
30
+ prepareCall(call) {
31
+ if (!isDatabaseToolName(call.tool))
32
+ return {
33
+ ok: false,
34
+ outcome: failureOutcome("TOOL_NOT_FOUND", "La tool solicitada no existe.", 2),
35
+ };
36
+ const selected = this.selectConnection(call.connection);
37
+ if (!selected.ok) {
38
+ return {
39
+ ok: false,
40
+ outcome: { response: sanitizeSelectionFailure(selected.response), exitCode: 2 },
41
+ };
42
+ }
43
+ const dsn = this.resolveDsn(selected.connection);
44
+ if (!dsn.ok)
45
+ return { ok: false, outcome: { response: dsn.response, exitCode: 2 } };
46
+ const parsed = parseDatabaseToolInput(call.tool, call.input);
47
+ if (!parsed.ok)
48
+ return { ok: false, outcome: failureFromResponse(parsed.response, 2) };
49
+ if (call.tool === "execute_sql") {
50
+ return {
51
+ ok: true,
52
+ value: {
53
+ tool: call.tool,
54
+ input: parsed.value,
55
+ dsn: dsn.value,
56
+ ...(call.signal === undefined ? {} : { signal: call.signal }),
57
+ },
58
+ };
59
+ }
60
+ return {
61
+ ok: true,
62
+ value: {
63
+ tool: call.tool,
64
+ input: parsed.value,
65
+ dsn: dsn.value,
66
+ ...(call.signal === undefined ? {} : { signal: call.signal }),
67
+ },
68
+ };
69
+ }
70
+ async executeSql(call) {
71
+ const policy = validateReadOnlySql(call.input.sql);
72
+ if (!policy.ok) {
73
+ return failureFromResponse(policy.response, policy.response.code === "INVALID_SQL" ? 2 : 1);
74
+ }
75
+ return await this.runDatabaseOperation(async () => {
76
+ const result = call.signal === undefined
77
+ ? await this.deps.postgres.execute(call.input.sql, call.dsn)
78
+ : await this.deps.postgres.execute(call.input.sql, call.dsn, { signal: call.signal });
79
+ return this.enforceResultLimit(toolSuccess({
80
+ statements: [
81
+ {
82
+ sql: call.input.sql,
83
+ rows: result.rows,
84
+ count: result.rows.length,
85
+ ...(result.truncated ? { truncated: true } : {}),
86
+ },
87
+ ],
88
+ source_id: "default",
89
+ }));
90
+ });
91
+ }
92
+ async searchObjects(call) {
93
+ // Ask for one extra row so `truncated` means an observed row was
94
+ // omitted, rather than a guess based on a LIMIT boundary.
95
+ const query = buildPostgresObjectSearchQuery({ ...call.input, limit: call.input.limit + 1 });
96
+ return await this.runDatabaseOperation(async () => {
97
+ const result = call.signal === undefined
98
+ ? await this.deps.postgres.query(query.sql, query.values, call.dsn)
99
+ : await this.deps.postgres.query(query.sql, query.values, call.dsn, {
100
+ signal: call.signal,
101
+ });
102
+ const rows = normalizePostgresObjectSearchRows(call.input, result.rows.slice(0, call.input.limit));
103
+ return this.enforceResultLimit(toolSuccess({
104
+ object_type: call.input.object_type,
105
+ pattern: call.input.pattern,
106
+ ...(call.input.schema === undefined ? {} : { schema: call.input.schema }),
107
+ ...(call.input.table === undefined ? {} : { table: call.input.table }),
108
+ detail_level: call.input.detail_level,
109
+ count: rows.length,
110
+ results: rows,
111
+ truncated: result.truncated || result.rows.length > call.input.limit,
112
+ }));
113
+ });
114
+ }
115
+ async runDatabaseOperation(operation) {
116
+ try {
117
+ return await operation();
118
+ }
119
+ catch (error) {
120
+ if (error instanceof PostgresToolError) {
121
+ return failureOutcome(error.code, error.message, databaseErrorExitCode(error.code));
122
+ }
123
+ return failureOutcome("DATABASE_QUERY_FAILED", "La base de datos no pudo completar la operación.", 1);
124
+ }
125
+ }
126
+ async inspectRole(connection) {
127
+ const selected = this.selectConnection(connection);
128
+ if (!selected.ok)
129
+ return { inspection: selected.response, exitCode: 2 };
130
+ const dsn = this.resolveDsn(selected.connection);
131
+ if (!dsn.ok)
132
+ return { inspection: dsn.response, exitCode: 2 };
133
+ try {
134
+ return { inspection: await this.deps.postgres.inspectRole(dsn.value), exitCode: 0 };
135
+ }
136
+ catch (error) {
137
+ if (error instanceof PostgresToolError) {
138
+ return {
139
+ inspection: toolFailure(error.code, error.message),
140
+ exitCode: databaseErrorExitCode(error.code),
141
+ };
142
+ }
143
+ return {
144
+ inspection: toolFailure("DATABASE_QUERY_FAILED", "No se pudo verificar el rol PostgreSQL."),
145
+ exitCode: 1,
146
+ };
147
+ }
148
+ }
149
+ selectConnection(connection) {
150
+ let selection;
151
+ try {
152
+ selection = resolveMcpConnectionSelection(this.deps.paths, { instance: connection });
153
+ }
154
+ catch {
155
+ return {
156
+ ok: false,
157
+ response: toolFailure("MCP_CONNECTION_INVALID", "No se pudo resolver la conexión solicitada."),
158
+ };
159
+ }
160
+ if (!selection.ok)
161
+ return { ok: false, response: toolFailure(selection.code, selection.message) };
162
+ const selected = selection.connections[0];
163
+ if (selected === undefined) {
164
+ return {
165
+ ok: false,
166
+ response: toolFailure("MCP_CONNECTION_NOT_REGISTERED", "La conexión no está registrada."),
167
+ };
168
+ }
169
+ if (selected.provider !== "postgres") {
170
+ return {
171
+ ok: false,
172
+ response: toolFailure("TOOL_PROVIDER_UNSUPPORTED", "Esta tool sólo admite conexiones PostgreSQL."),
173
+ };
174
+ }
175
+ return { ok: true, connection: selected };
176
+ }
177
+ resolveDsn(connection) {
178
+ const environment = this.deps.env.get(connection.dsnVar);
179
+ if (environment !== undefined && environment.length > 0)
180
+ return { ok: true, value: environment };
181
+ try {
182
+ const file = readDsnFile(this.deps.paths).values[connection.dsnVar];
183
+ if (file !== undefined && file.length > 0)
184
+ return { ok: true, value: file };
185
+ }
186
+ catch {
187
+ return {
188
+ ok: false,
189
+ response: toolFailure("DATABASE_CONNECTION_INVALID", "No se pudo leer la configuración de conexión."),
190
+ };
191
+ }
192
+ return {
193
+ ok: false,
194
+ response: toolFailure("DATABASE_CONNECTION_MISSING", `La conexión '${connection.name}' no tiene un DSN disponible.`),
195
+ };
196
+ }
197
+ enforceResultLimit(response) {
198
+ try {
199
+ const bytes = new TextEncoder().encode(JSON.stringify(response)).byteLength;
200
+ if (bytes > MAX_TOOL_RESULT_BYTES) {
201
+ return failureOutcome("RESULT_TOO_LARGE", "El resultado serializado supera 4 MiB.", 1);
202
+ }
203
+ return { response, exitCode: 0 };
204
+ }
205
+ catch {
206
+ return failureOutcome("RESULT_TOO_LARGE", "El resultado no se puede serializar de forma segura.", 1);
207
+ }
208
+ }
209
+ }
210
+ function failureOutcome(code, message, exitCode) {
211
+ return { response: toolFailure(code, message), exitCode };
212
+ }
213
+ function failureFromResponse(response, exitCode) {
214
+ return { response, exitCode };
215
+ }
216
+ function databaseErrorExitCode(code) {
217
+ return code === "DATABASE_CONNECTION_FAILED" ||
218
+ code === "DATABASE_CONNECTION_INVALID" ||
219
+ code === "INVALID_SQL"
220
+ ? 2
221
+ : 1;
222
+ }
223
+ function sanitizeSelectionFailure(response) {
224
+ return toolFailure(response.code, "No se pudo resolver la conexión solicitada.");
225
+ }
226
+ //# sourceMappingURL=database-tool-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-tool-catalog.js","sourceRoot":"","sources":["../../src/application/database-tool-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,qBAAqB,EAIrB,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAGL,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAEL,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AAiDtC;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,IAA6B;QAA7B,SAAI,GAAJ,IAAI,CAAyB;IAAG,CAAC;IAE9D,IAAI,CAAC,UAAkB;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC/F,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAsB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1C,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxF,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAEO,WAAW,CAAC,IAAsB;QACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,+BAA+B,EAAE,CAAC,CAAC;aAC9E,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,EAAE,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;aAChF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,MAAM,CAAC,KAAwB;oBACtC,GAAG,EAAE,GAAG,CAAC,KAAK;oBACd,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;iBAC9D;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,MAAM,CAAC,KAA2B;gBACzC,GAAG,EAAE,GAAG,CAAC,KAAK;gBACd,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;aAC9D;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,IAAwD;QAExD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS;gBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;gBAC5D,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC,kBAAkB,CAC5B,WAAW,CAAC;gBACV,UAAU,EAAE;oBACV;wBACE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;wBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;wBACzB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjD;iBACF;gBACD,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAA2D;QAE3D,iEAAiE;QACjE,0DAA0D;QAC1D,MAAM,KAAK,GAAG,8BAA8B,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS;gBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;gBACnE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;oBAChE,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;YACT,MAAM,IAAI,GAAG,iCAAiC,CAC5C,IAAI,CAAC,KAAK,EACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACvC,CAAC;YACF,OAAO,IAAI,CAAC,kBAAkB,CAC5B,WAAW,CAAC;gBACV,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;gBACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACzE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACrC,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;aACrE,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,SAA6C;QAE7C,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,OAAO,cAAc,CACnB,uBAAuB,EACvB,kDAAkD,EAClD,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,OAAO;oBACL,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;oBAClD,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC5C,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,UAAU,EAAE,WAAW,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;gBAC3F,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,UAAkB;QAElB,IAAI,SAA2D,CAAC;QAChE,IAAI,CAAC;YACH,SAAS,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,WAAW,CACnB,wBAAwB,EACxB,6CAA6C,CAC9C;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,EAAE;YACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACjF,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,WAAW,CAAC,+BAA+B,EAAE,iCAAiC,CAAC;aAC1F,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACrC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,WAAW,CACnB,2BAA2B,EAC3B,8CAA8C,CAC/C;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAEO,UAAU,CAChB,UAA+B;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,WAAW,CACnB,6BAA6B,EAC7B,+CAA+C,CAChD;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,WAAW,CACnB,6BAA6B,EAC7B,gBAAgB,UAAU,CAAC,IAAI,+BAA+B,CAC/D;SACF,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,QAAsB;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5E,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;gBAClC,OAAO,cAAc,CAAC,kBAAkB,EAAE,wCAAwC,EAAE,CAAC,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,cAAc,CACnB,kBAAkB,EAClB,sDAAsD,EACtD,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe,EAAE,QAAe;IACpE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAqB,EAAE,QAAe;IACjE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,KAAK,4BAA4B;QAC1C,IAAI,KAAK,6BAA6B;QACtC,IAAI,KAAK,aAAa;QACtB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAqB;IACrD,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;AACnF,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { existsSync, readFileSync, readdirSync, unlinkSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
- import { isAbsolute, join } from "node:path";
3
+ import { basename, isAbsolute, join } from "node:path";
4
4
  import { formatCorrelative, leadingCorrelative, maxCorrelative, nextCorrelative, sameCorrelative, } from "../domain/correlative.js";
5
5
  import { HARNESSES, harnessById } from "../domain/harnesses.js";
6
6
  import { reservationMarker } from "../domain/reservation.js";
7
7
  import { decideResources, } from "../domain/resource-policy.js";
8
+ import { appendClaimEvent, eligibleCorrelatives, isRevoked, readClaimEvents, } from "./claims-ledger.js";
8
9
  import { withCwdLock } from "./lock-service.js";
9
10
  import { parseMdSection, parseMdValue } from "./markdown.js";
10
11
  const UNKNOWN_NOTE = "No env marker matched. Some hosts export none to their subprocesses, so this is not evidence that no host is present — run 'agent-workflow self detect-hosts' for the machine's real host states.";
@@ -190,59 +191,167 @@ export async function runLogs(env, paths, input) {
190
191
  const CLAIM_LOCK_WAIT_MS = 10_000;
191
192
  /** Upper bound on numbers skipped because a concurrent flow already took them. */
192
193
  const MAX_CLAIM_PROBES = 50;
193
- export async function runNextNumber(fs, env, paths, input) {
194
- const cwd = env.cwd();
195
- const { directory, dryRun = false, claim, owner } = input;
196
- const target = isAbsolute(directory) ? directory : join(cwd, directory);
197
- const wantsClaim = claim !== undefined && claim.length > 0 && !dryRun;
198
- if (!wantsClaim)
199
- return scan(fs, target, dryRun);
200
- // The claim becomes a real filesystem write, so it is a name and never a path:
201
- // a separator would let `--claim ../…` mint outside the directory the caller
202
- // named — and every caller of this is a command-line argument.
203
- if (/[\\/]/.test(claim)) {
204
- throw new Error(`el reclamo '${claim}' no puede contener separadores de ruta: es el resto del nombre del archivo, no una ruta`);
194
+ /**
195
+ * Resolve the call into the single write it will attempt.
196
+ *
197
+ * A claim always carries its owner here because the input type cannot express
198
+ * one without it — the anonymous durable reservation is not a call this function
199
+ * refuses, it is a call nobody can construct.
200
+ */
201
+ function mintOf(claim, publish, dryRun) {
202
+ if (dryRun)
203
+ return null;
204
+ if (publish !== undefined) {
205
+ return { kind: "publish", name: publish.name, bytes: publish.content };
206
+ }
207
+ if (claim !== undefined && claim.name.length > 0) {
208
+ return {
209
+ kind: "claim",
210
+ name: claim.name,
211
+ bytes: reservationMarker(claim.owner),
212
+ owner: claim.owner,
213
+ };
205
214
  }
206
- const marker = owner === undefined ? "" : reservationMarker(owner);
207
- const claimed = await withCwdLock(fs, paths, async () => {
208
- const state = await scan(fs, target, false);
209
- // Re-entry, before minting anything: a run that already holds this exact
210
- // slot gets it back. Handing it a second number instead would abandon the
211
- // first one, and an abandoned reservation is the empty document nobody is
212
- // coming back for.
213
- const held = owner === undefined ? null : await heldReservation(fs, target, state.files, claim, marker);
215
+ return null;
216
+ }
217
+ /**
218
+ * The mint itself, already inside the workspace lock.
219
+ *
220
+ * Extracted so `runNextNumber` reads as what it is — resolve the mode, guard the
221
+ * name, take the lock, report — instead of nesting the whole critical section
222
+ * inside its own argument list.
223
+ */
224
+ async function mintUnderLock(fs, paths, target, mint) {
225
+ const state = await scan(fs, target, false);
226
+ // Re-entry, before minting anything: a run that already holds this exact slot
227
+ // gets it back. Handing it a second number instead would abandon the first
228
+ // one, and an abandoned reservation is the empty document nobody is coming
229
+ // back for. A publication has no slot to re-enter — it never left one open.
230
+ if (mint.kind === "claim") {
231
+ const held = await heldReservation(fs, target, state.files, mint.name, mint.bytes);
214
232
  if (held !== null) {
215
233
  return {
216
234
  ...state,
217
235
  next: held.nnn,
218
236
  claimed_path: normalize(held.path),
219
- claimed_owner: owner ?? null,
237
+ claimed_owner: mint.owner,
220
238
  claim_reused: true,
221
239
  };
222
240
  }
223
- let nnn = state.next;
224
- for (let probe = 0; probe < MAX_CLAIM_PROBES; probe++, nnn = nextCorrelative(nnn)) {
225
- // Taken by NUMBER: another document already holds this correlative under
226
- // a different slug, so the name is free while the number is not.
227
- if (state.files.some((name) => hasCorrelative(name, nnn)))
228
- continue;
229
- const path = join(target, `${nnn}-${claim}`);
230
- const { created } = await fs.writeTextExclusive(path, marker);
231
- if (created) {
232
- return {
233
- ...state,
234
- next: nnn,
235
- claimed_path: normalize(path),
236
- claimed_owner: owner ?? null,
237
- claim_reused: false,
238
- };
239
- }
241
+ }
242
+ // Correlatives the ledger says came back, lowest first, BEFORE `max + 1`.
243
+ //
244
+ // The old mint computed `max + 1` and probed forward only, so a number released
245
+ // in the middle of the range was gone for good — this workspace still carries a
246
+ // permanent hole from exactly that. The disk cannot tell a number that was given
247
+ // back from one that never existed; only the record can, which is why the
248
+ // eligible set is read here and not derived from the directory listing.
249
+ const ledger = await readClaimEvents(fs, paths);
250
+ const reusable = eligibleCorrelatives(ledger.events, basename(target));
251
+ // Each reusable correlative gets ONE attempt — it is a specific number, not a
252
+ // starting point — and then `max + 1` gets the forward probe it always had.
253
+ for (const candidate of [...reusable, null]) {
254
+ let nnn = candidate ?? state.next;
255
+ const probes = candidate === null ? MAX_CLAIM_PROBES : 1;
256
+ for (let probe = 0; probe < probes; probe++, nnn = nextCorrelative(nnn)) {
257
+ const taken = await attemptAt(fs, paths, target, mint, state, nnn, ledger.events);
258
+ if (taken !== null)
259
+ return taken;
240
260
  }
241
- throw new Error(`no se pudo reclamar un correlativo en ${target}: ${MAX_CLAIM_PROBES} números consecutivos ya estaban tomados`);
242
- }, { waitMs: CLAIM_LOCK_WAIT_MS });
243
- if ("error" in claimed)
244
- throw new Error(`no se pudo reclamar el correlativo: ${claimed.error}`);
245
- return claimed;
261
+ }
262
+ throw new Error(`no se pudo ${mint.kind === "publish" ? "publicar" : "reclamar"} un correlativo en ${target}: ${MAX_CLAIM_PROBES} números consecutivos ya estaban tomados`);
263
+ }
264
+ /**
265
+ * Take exactly this correlative, or answer `null` so the caller tries the next.
266
+ *
267
+ * Everything here happens under the mint's lock. The record is written in the
268
+ * same breath as the slot for the same reason the release is: a reservation
269
+ * without its line is a claim nobody can account for once the marker is gone.
270
+ */
271
+ async function attemptAt(fs, paths, target, mint, state, nnn, events) {
272
+ // Taken by NUMBER: another document already holds this correlative under a
273
+ // different slug, so the name is free while the number is not. A released
274
+ // correlative can also have been taken again since, which is why the record
275
+ // answers "was it given back" and the disk answers "is it free now".
276
+ if (state.files.some((name) => hasCorrelative(name, nnn)))
277
+ return null;
278
+ // Never hand out a claim key that is already FENCED.
279
+ //
280
+ // A revocation is permanent and keyed by category/correlative/name/owner, so a
281
+ // recovery followed by the same owner re-claiming the same document name used to
282
+ // mint the identical key — and the publication point then refused it forever.
283
+ // The run walked away holding a slot it could never complete, and the refusal's
284
+ // advice ("ask for a new one") looped straight back to the same key through the
285
+ // idempotent re-entry. Skipping it here is what keeps the eligible set from
286
+ // handing back a number that is only nominally free.
287
+ if (mint.kind === "claim" &&
288
+ isRevoked(events, {
289
+ category: basename(target),
290
+ correlative: nnn,
291
+ name: mint.name,
292
+ owner: mint.owner,
293
+ })) {
294
+ return null;
295
+ }
296
+ const path = join(target, `${nnn}-${mint.name}`);
297
+ // Atomic AND exclusive. The marker goes through the same primitive as a
298
+ // document on purpose: a half-written marker IS the anonymous zero-byte
299
+ // placeholder this mechanism exists to retire, and there is no reason to keep a
300
+ // way of producing one.
301
+ const { created } = await fs.publishTextExclusive(path, mint.bytes);
302
+ if (!created)
303
+ return null;
304
+ if (mint.kind === "publish") {
305
+ // A publication leaves no reservation, so it has no lifecycle to record: the
306
+ // document on disk IS the whole story, and `scan` already reads its
307
+ // correlative as spent straight from the file.
308
+ return { ...state, next: nnn, published_path: normalize(path) };
309
+ }
310
+ await appendClaimEvent(fs, paths, {
311
+ at: new Date().toISOString(),
312
+ event: "claimed",
313
+ claim: {
314
+ category: basename(target),
315
+ correlative: nnn,
316
+ name: mint.name,
317
+ owner: mint.owner,
318
+ },
319
+ cause: "aw next-number --claim",
320
+ });
321
+ return {
322
+ ...state,
323
+ next: nnn,
324
+ claimed_path: normalize(path),
325
+ claimed_owner: mint.owner,
326
+ claim_reused: false,
327
+ };
328
+ }
329
+ export async function runNextNumber(fs, _env, paths, input) {
330
+ // `paths` is the WorklineDirectory resolved once at bootstrap. A nested
331
+ // invocation still numbers the workspace's docs tree; it must not quietly
332
+ // create a second docs/ under the raw process cwd.
333
+ const cwd = paths.workspaceDir();
334
+ const { directory, dryRun = false, claim, publish } = input;
335
+ const target = isAbsolute(directory) ? directory : join(cwd, directory);
336
+ if (claim !== undefined && publish !== undefined) {
337
+ throw new Error("reclamar y publicar se excluyen: un reclamo reserva el número para escribirlo después, una publicación lo asigna y escribe el documento en el mismo acto");
338
+ }
339
+ const mint = mintOf(claim, publish, dryRun);
340
+ if (mint === null)
341
+ return scan(fs, target, dryRun);
342
+ // The mint becomes a real filesystem write, so it is a name and never a path:
343
+ // a separator would let `../…` land outside the directory the caller named —
344
+ // and every caller of this is a command-line argument.
345
+ if (/[\\/]/.test(mint.name)) {
346
+ throw new Error(`el nombre '${mint.name}' no puede contener separadores de ruta: es el resto del nombre del archivo, no una ruta`);
347
+ }
348
+ const minted = await withCwdLock(fs, paths, () => mintUnderLock(fs, paths, target, mint), {
349
+ waitMs: CLAIM_LOCK_WAIT_MS,
350
+ });
351
+ if ("error" in minted) {
352
+ throw new Error(`no se pudo tomar el correlativo: ${minted.error}`);
353
+ }
354
+ return minted;
246
355
  }
247
356
  /**
248
357
  * The slot this owner already holds under this exact name, if any.
@@ -302,6 +411,7 @@ async function scan(fs, target, dryRun) {
302
411
  files,
303
412
  claimed_path: null,
304
413
  claimed_owner: null,
414
+ published_path: null,
305
415
  claim_reused: false,
306
416
  };
307
417
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAgC,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAGL,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiC7D,MAAM,YAAY,GAChB,mMAAmM,CAAC;AAEtM;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,KAAkB,CAAC,KAAK,IAAI,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,MAAyC,EACzC,SAAqB;IAErB,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACpC,4EAA4E;QAC5E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,2EAA2E;QAC3E,wDAAwD;QACxD,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,2EAA2E;IAC3E,8EAA8E;IAC9E,mEAAmE;IACnE,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;QACnE,eAAe,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC5F,sBAAsB,EAAE,KAAK;QAC7B,YAAY,EAAE,SAAS;QACvB,qBAAqB,EAAE,QAAQ,CAAC,GAAG;QACnC,eAAe,EAAE,cAAc;QAC/B,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,SAAoB,EACpB,WAAmB,EACnB,QAAwC,EACxC,cAAwB;IAExB,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,SAAS,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;QAChF,eAAe,EAAE,iBAAiB,CAChC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CACtE;QACD,sBAAsB,EAAE,SAAS,EAAE,SAAS,KAAK,UAAU;QAC3D,YAAY,EAAE,WAAW;QACzB,qBAAqB,EAAE,QAAQ,CAAC,GAAG;QACnC,eAAe,EAAE,cAAc;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA6B;IACtD,OAAO;QACL,aAAa,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACnE,gBAAgB,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAyC;IAItE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,MAAM,EAAE,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAkB,EAClB,KAAmB;IAEnB,MAAM,MAAM,GAAmB;QAC7B,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;QAC3B,MAAM,EAAE,SAAS;QACjB,uBAAuB,EAAE,KAAK;KAC/B,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACtC,SAAS,GAAG,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IACtE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,WAAW,EAAE,CAAC;IAChF,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChD,MAAM,CAAC,oBAAoB,GAAG,QAAQ,KAAK,MAAM,CAAC;QAClD,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAwBD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAY,EACZ,KAAmB,EACnB,KAAgB;IAEhB,oFAAoF;IACpF,kFAAkF;IAClF,KAAK,GAAG,CAAC;IACT,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,2CAA2C;QAC3C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,gEAAgE;IAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,SAAS,CAAC,MAAM;QACzB,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AA4DD;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAsB;IAEtB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,+EAA+E;IAC/E,6EAA6E;IAC7E,+DAA+D;IAC/D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,0FAA0F,CAC/G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,EAAE,EACF,KAAK,EACL,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,mBAAmB;QACnB,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7F,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,aAAa,EAAE,KAAK,IAAI,IAAI;gBAC5B,YAAY,EAAE,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,gBAAgB,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAClF,yEAAyE;YACzE,iEAAiE;YACjE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAAE,SAAS;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;oBACL,GAAG,KAAK;oBACR,IAAI,EAAE,GAAG;oBACT,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;oBAC7B,aAAa,EAAE,KAAK,IAAI,IAAI;oBAC5B,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yCAAyC,MAAM,KAAK,gBAAgB,0CAA0C,CAC/G,CAAC;IACJ,CAAC,EACD,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAC/B,CAAC;IAEF,IAAI,OAAO,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAC5B,EAAkB,EAClB,MAAc,EACd,KAAwB,EACxB,KAAa,EACb,MAAc;IAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE;YAAE,SAAS;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM;gBAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI,CACjB,EAAkB,EAClB,MAAc,EACd,MAAe;IAEf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,IAAI;gBAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,MAAM;QACN,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QACxE,KAAK;QACL,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export function dsnKeyForInstance(instance) {
25
25
  return `DB_${normalizeMcpInstance(instance).replace(/-/g, "_").toUpperCase()}_DSN`;
26
26
  }
27
27
  /**
28
- * Single resolution path shared by the dbhub launcher and the connection
28
+ * Single resolution path shared by the database tool catalog and the connection
29
29
  * tester. The caller supplies the exact variable registered for the connection;
30
30
  * the environment wins over the local dsn.env file for that one name only.
31
31
  *