sqlew 4.3.1 → 5.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 (841) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/LICENSE +1 -1
  3. package/NOTICE +2 -2
  4. package/README.md +112 -42
  5. package/assets/claude-md-snippets/plan-mode-integration.md +54 -0
  6. package/assets/claude-md-snippets/queue-monitoring.md +84 -0
  7. package/dist/backend/backend-factory.d.ts +67 -0
  8. package/dist/backend/backend-factory.d.ts.map +1 -0
  9. package/dist/backend/backend-factory.js +171 -0
  10. package/dist/backend/backend-factory.js.map +1 -0
  11. package/dist/backend/index.d.ts +12 -0
  12. package/dist/backend/index.d.ts.map +1 -0
  13. package/dist/backend/index.js +13 -0
  14. package/dist/backend/index.js.map +1 -0
  15. package/dist/backend/inference.d.ts +38 -0
  16. package/dist/backend/inference.d.ts.map +1 -0
  17. package/dist/backend/inference.js +76 -0
  18. package/dist/backend/inference.js.map +1 -0
  19. package/dist/backend/local-backend.d.ts +40 -0
  20. package/dist/backend/local-backend.d.ts.map +1 -0
  21. package/dist/backend/local-backend.js +410 -0
  22. package/dist/backend/local-backend.js.map +1 -0
  23. package/dist/backend/transforming-backend.d.ts +47 -0
  24. package/dist/backend/transforming-backend.d.ts.map +1 -0
  25. package/dist/backend/transforming-backend.js +80 -0
  26. package/dist/backend/transforming-backend.js.map +1 -0
  27. package/dist/backend/types.d.ts +58 -0
  28. package/dist/backend/types.d.ts.map +1 -0
  29. package/dist/backend/types.js +7 -0
  30. package/dist/backend/types.js.map +1 -0
  31. package/dist/cli/db-dump.js +45 -45
  32. package/dist/cli/db-dump.js.map +1 -1
  33. package/dist/cli/db-export.js +30 -30
  34. package/dist/cli/db-export.js.map +1 -1
  35. package/dist/cli/db-import.d.ts.map +1 -1
  36. package/dist/cli/db-import.js +32 -33
  37. package/dist/cli/db-import.js.map +1 -1
  38. package/dist/cli/hooks/check-completion.d.ts +1 -0
  39. package/dist/cli/hooks/check-completion.d.ts.map +1 -1
  40. package/dist/cli/hooks/check-completion.js +15 -26
  41. package/dist/cli/hooks/check-completion.js.map +1 -1
  42. package/dist/cli/hooks/mark-done.d.ts +1 -0
  43. package/dist/cli/hooks/mark-done.d.ts.map +1 -1
  44. package/dist/cli/hooks/mark-done.js +12 -17
  45. package/dist/cli/hooks/mark-done.js.map +1 -1
  46. package/dist/cli/hooks/on-enter-plan.js +2 -2
  47. package/dist/cli/hooks/on-enter-plan.js.map +1 -1
  48. package/dist/cli/hooks/on-session-start.d.ts +23 -0
  49. package/dist/cli/hooks/on-session-start.d.ts.map +1 -0
  50. package/dist/cli/hooks/on-session-start.js +70 -0
  51. package/dist/cli/hooks/on-session-start.js.map +1 -0
  52. package/dist/cli/hooks/on-stop.js +5 -5
  53. package/dist/cli/hooks/on-stop.js.map +1 -1
  54. package/dist/cli/hooks/{plan-toml-parser.d.ts → plan-parser.d.ts} +1 -1
  55. package/dist/cli/hooks/plan-parser.d.ts.map +1 -0
  56. package/dist/cli/hooks/{plan-toml-parser.js → plan-parser.js} +1 -1
  57. package/dist/cli/hooks/plan-parser.js.map +1 -0
  58. package/dist/cli/hooks/plan-pattern-extractor.d.ts.map +1 -1
  59. package/dist/cli/hooks/plan-pattern-extractor.js +6 -3
  60. package/dist/cli/hooks/plan-pattern-extractor.js.map +1 -1
  61. package/dist/cli/hooks/plan-processor.js +1 -1
  62. package/dist/cli/hooks/plan-processor.js.map +1 -1
  63. package/dist/cli/hooks/stdin-parser.d.ts +4 -0
  64. package/dist/cli/hooks/stdin-parser.d.ts.map +1 -1
  65. package/dist/cli/hooks/stdin-parser.js.map +1 -1
  66. package/dist/cli/hooks/suggest.js +2 -2
  67. package/dist/cli/hooks/suggest.js.map +1 -1
  68. package/dist/cli/hooks/track-plan.d.ts.map +1 -1
  69. package/dist/cli/hooks/track-plan.js +24 -18
  70. package/dist/cli/hooks/track-plan.js.map +1 -1
  71. package/dist/cli.d.ts.map +1 -1
  72. package/dist/cli.js +72 -72
  73. package/dist/cli.js.map +1 -1
  74. package/dist/config/cloud-config-loader.d.ts +107 -0
  75. package/dist/config/cloud-config-loader.d.ts.map +1 -0
  76. package/dist/config/cloud-config-loader.js +273 -0
  77. package/dist/config/cloud-config-loader.js.map +1 -0
  78. package/dist/config/global-config.d.ts +10 -10
  79. package/dist/config/global-config.d.ts.map +1 -1
  80. package/dist/config/global-config.js +12 -12
  81. package/dist/config/global-config.js.map +1 -1
  82. package/dist/config/loader.d.ts.map +1 -1
  83. package/dist/config/loader.js +5 -1
  84. package/dist/config/loader.js.map +1 -1
  85. package/dist/config/minimal-generator.d.ts.map +1 -1
  86. package/dist/config/minimal-generator.js +22 -72
  87. package/dist/config/minimal-generator.js.map +1 -1
  88. package/dist/config/types.d.ts +59 -1
  89. package/dist/config/types.d.ts.map +1 -1
  90. package/dist/config/types.js +14 -0
  91. package/dist/config/types.js.map +1 -1
  92. package/dist/constants.d.ts +1 -29
  93. package/dist/constants.d.ts.map +1 -1
  94. package/dist/constants.js +1 -38
  95. package/dist/constants.js.map +1 -1
  96. package/dist/database/initialization/cleanup.d.ts.map +1 -1
  97. package/dist/database/initialization/cleanup.js +0 -13
  98. package/dist/database/initialization/cleanup.js.map +1 -1
  99. package/dist/database/initialization/init.d.ts.map +1 -1
  100. package/dist/database/initialization/init.js +0 -9
  101. package/dist/database/initialization/init.js.map +1 -1
  102. package/dist/database/initialization/schema-version.d.ts +4 -4
  103. package/dist/database/initialization/schema-version.js +9 -9
  104. package/dist/database/initialization/schema-version.js.map +1 -1
  105. package/dist/database/migrations/v4/20260107000000_v5_drop_task_file_tables.d.ts +36 -0
  106. package/dist/database/migrations/v4/20260107000000_v5_drop_task_file_tables.d.ts.map +1 -0
  107. package/dist/database/migrations/v4/20260107000000_v5_drop_task_file_tables.js +135 -0
  108. package/dist/database/migrations/v4/20260107000000_v5_drop_task_file_tables.js.map +1 -0
  109. package/dist/database/migrations/v4/20260107000001_v5_drop_legacy_tables.d.ts +20 -0
  110. package/dist/database/migrations/v4/20260107000001_v5_drop_legacy_tables.d.ts.map +1 -0
  111. package/dist/database/migrations/v4/20260107000001_v5_drop_legacy_tables.js +168 -0
  112. package/dist/database/migrations/v4/20260107000001_v5_drop_legacy_tables.js.map +1 -0
  113. package/dist/database/migrations/v4/20260108000000_v5_rename_to_m_t_prefix.d.ts +23 -0
  114. package/dist/database/migrations/v4/20260108000000_v5_rename_to_m_t_prefix.d.ts.map +1 -0
  115. package/dist/database/migrations/v4/20260108000000_v5_rename_to_m_t_prefix.js +570 -0
  116. package/dist/database/migrations/v4/20260108000000_v5_rename_to_m_t_prefix.js.map +1 -0
  117. package/dist/database/migrations/v4/20260109000000_v5_drop_help_tables.d.ts +29 -0
  118. package/dist/database/migrations/v4/20260109000000_v5_drop_help_tables.d.ts.map +1 -0
  119. package/dist/database/migrations/v4/20260109000000_v5_drop_help_tables.js +80 -0
  120. package/dist/database/migrations/v4/20260109000000_v5_drop_help_tables.js.map +1 -0
  121. package/dist/database/operations/inserts.js +11 -11
  122. package/dist/database/operations/inserts.js.map +1 -1
  123. package/dist/database/operations/queries.js +9 -9
  124. package/dist/database/operations/queries.js.map +1 -1
  125. package/dist/formatters/adr-formatter.d.ts +22 -0
  126. package/dist/formatters/adr-formatter.d.ts.map +1 -0
  127. package/dist/formatters/adr-formatter.js +127 -0
  128. package/dist/formatters/adr-formatter.js.map +1 -0
  129. package/dist/formatters/confluence-formatter.d.ts +26 -0
  130. package/dist/formatters/confluence-formatter.d.ts.map +1 -0
  131. package/dist/formatters/confluence-formatter.js +129 -0
  132. package/dist/formatters/confluence-formatter.js.map +1 -0
  133. package/dist/formatters/index.d.ts +34 -0
  134. package/dist/formatters/index.d.ts.map +1 -0
  135. package/dist/formatters/index.js +57 -0
  136. package/dist/formatters/index.js.map +1 -0
  137. package/dist/formatters/markdown-formatter.d.ts +16 -0
  138. package/dist/formatters/markdown-formatter.d.ts.map +1 -0
  139. package/dist/formatters/markdown-formatter.js +110 -0
  140. package/dist/formatters/markdown-formatter.js.map +1 -0
  141. package/dist/formatters/notion-formatter.d.ts +29 -0
  142. package/dist/formatters/notion-formatter.d.ts.map +1 -0
  143. package/dist/formatters/notion-formatter.js +177 -0
  144. package/dist/formatters/notion-formatter.js.map +1 -0
  145. package/dist/formatters/types.d.ts +31 -0
  146. package/dist/formatters/types.d.ts.map +1 -0
  147. package/dist/formatters/types.js +6 -0
  148. package/dist/formatters/types.js.map +1 -0
  149. package/dist/help-data/_schema.toml +21 -0
  150. package/dist/help-data/constraint.toml +259 -0
  151. package/dist/help-data/decision.toml +833 -0
  152. package/dist/help-data/example.toml +177 -0
  153. package/dist/help-data/help.toml +246 -0
  154. package/dist/help-data/queue.toml +134 -0
  155. package/dist/help-data/suggest.toml +219 -0
  156. package/dist/help-data/use-cases/_categories.toml +22 -0
  157. package/dist/help-data/use-cases/constraint-basic.toml +34 -0
  158. package/dist/help-data/use-cases/cross-tool-workflow.toml +50 -0
  159. package/dist/help-data/use-cases/decision-intelligence-duplicate.toml +35 -0
  160. package/dist/help-data/use-cases/decision-intelligence-related.toml +35 -0
  161. package/dist/help-data/use-cases/decision-tracking-basic.toml +42 -0
  162. package/dist/help-data/use-cases/decision-tracking-versions.toml +42 -0
  163. package/dist/help-data/use_case.toml +147 -0
  164. package/dist/help-loader.d.ts +194 -0
  165. package/dist/help-loader.d.ts.map +1 -0
  166. package/dist/help-loader.js +419 -0
  167. package/dist/help-loader.js.map +1 -0
  168. package/dist/index.js +15 -10
  169. package/dist/index.js.map +1 -1
  170. package/dist/init-rules.d.ts +42 -0
  171. package/dist/init-rules.d.ts.map +1 -0
  172. package/dist/init-rules.js +217 -0
  173. package/dist/init-rules.js.map +1 -0
  174. package/dist/schema.d.ts +4 -6
  175. package/dist/schema.d.ts.map +1 -1
  176. package/dist/schema.js +28 -45
  177. package/dist/schema.js.map +1 -1
  178. package/dist/server/setup.d.ts +0 -10
  179. package/dist/server/setup.d.ts.map +1 -1
  180. package/dist/server/setup.js +97 -89
  181. package/dist/server/setup.js.map +1 -1
  182. package/dist/server/shutdown.d.ts +1 -1
  183. package/dist/server/shutdown.d.ts.map +1 -1
  184. package/dist/server/shutdown.js +1 -16
  185. package/dist/server/shutdown.js.map +1 -1
  186. package/dist/server/tool-handlers.d.ts +15 -0
  187. package/dist/server/tool-handlers.d.ts.map +1 -1
  188. package/dist/server/tool-handlers.js +47 -462
  189. package/dist/server/tool-handlers.js.map +1 -1
  190. package/dist/server/tool-registry.d.ts.map +1 -1
  191. package/dist/server/tool-registry.js +50 -62
  192. package/dist/server/tool-registry.js.map +1 -1
  193. package/dist/tests/backend/backend-factory.test.d.ts +7 -0
  194. package/dist/tests/backend/backend-factory.test.d.ts.map +1 -0
  195. package/dist/tests/backend/backend-factory.test.js +157 -0
  196. package/dist/tests/backend/backend-factory.test.js.map +1 -0
  197. package/dist/tests/backend/inference.test.d.ts +7 -0
  198. package/dist/tests/backend/inference.test.d.ts.map +1 -0
  199. package/dist/tests/backend/inference.test.js +142 -0
  200. package/dist/tests/backend/inference.test.js.map +1 -0
  201. package/dist/tests/database/multi-project/multi-project.test.js +9 -70
  202. package/dist/tests/database/multi-project/multi-project.test.js.map +1 -1
  203. package/dist/tests/database/sql-dump/table-ordering.test.js +14 -14
  204. package/dist/tests/database/sql-dump/table-ordering.test.js.map +1 -1
  205. package/dist/tests/docker/cross-database.test.js +32 -32
  206. package/dist/tests/docker/cross-database.test.js.map +1 -1
  207. package/dist/tests/docker/dump-import.test.js +55 -55
  208. package/dist/tests/docker/dump-import.test.js.map +1 -1
  209. package/dist/tests/docker/fk-constraints.test.js +3 -3
  210. package/dist/tests/docker/indexes.test.js +34 -34
  211. package/dist/tests/docker/integration.test.js +33 -33
  212. package/dist/tests/docker/multi-project-migration.test.js +47 -47
  213. package/dist/tests/docker/multi-project-migration.test.js.map +1 -1
  214. package/dist/tests/docker/native/constraint-operations.test.js +49 -49
  215. package/dist/tests/docker/native/constraint-operations.test.js.map +1 -1
  216. package/dist/tests/docker/native/db-init.d.ts +3 -1
  217. package/dist/tests/docker/native/db-init.d.ts.map +1 -1
  218. package/dist/tests/docker/native/db-init.js +14 -12
  219. package/dist/tests/docker/native/db-init.js.map +1 -1
  220. package/dist/tests/docker/native/decision-operations.test.js +91 -91
  221. package/dist/tests/docker/native/decision-operations.test.js.map +1 -1
  222. package/dist/tests/docker/native/help-system.test.d.ts +2 -2
  223. package/dist/tests/docker/native/help-system.test.js +113 -138
  224. package/dist/tests/docker/native/help-system.test.js.map +1 -1
  225. package/dist/tests/docker/native/suggest-tool.test.d.ts +2 -2
  226. package/dist/tests/docker/native/suggest-tool.test.js +35 -35
  227. package/dist/tests/docker/native/suggest-tool.test.js.map +1 -1
  228. package/dist/tests/docker/native/test-harness.d.ts +6 -12
  229. package/dist/tests/docker/native/test-harness.d.ts.map +1 -1
  230. package/dist/tests/docker/native/test-harness.js +74 -156
  231. package/dist/tests/docker/native/test-harness.js.map +1 -1
  232. package/dist/tests/docker/schema-migration.test.js +6 -6
  233. package/dist/tests/feature/decision/batch-validation-comprehensive.test.d.ts +3 -7
  234. package/dist/tests/feature/decision/batch-validation-comprehensive.test.d.ts.map +1 -1
  235. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js +7 -318
  236. package/dist/tests/feature/decision/batch-validation-comprehensive.test.js.map +1 -1
  237. package/dist/tests/feature/help/help-system.test.d.ts +6 -6
  238. package/dist/tests/feature/help/help-system.test.js +166 -124
  239. package/dist/tests/feature/help/help-system.test.js.map +1 -1
  240. package/dist/tests/integration/auto-trigger-suggestions.test.js +22 -22
  241. package/dist/tests/integration/auto-trigger-suggestions.test.js.map +1 -1
  242. package/dist/tests/integration/decision-intelligence-e2e.test.js +23 -22
  243. package/dist/tests/integration/decision-intelligence-e2e.test.js.map +1 -1
  244. package/dist/tests/integration/e2e-workflow1-debug.test.js +3 -3
  245. package/dist/tests/integration/e2e-workflow1-debug.test.js.map +1 -1
  246. package/dist/tests/integration/hybrid-similarity-detection.test.js +25 -25
  247. package/dist/tests/integration/hybrid-similarity-detection.test.js.map +1 -1
  248. package/dist/tests/integration/suggest-simple.test.js +18 -0
  249. package/dist/tests/integration/suggest-simple.test.js.map +1 -1
  250. package/dist/tests/migrations/test-all-versions.js +212 -212
  251. package/dist/tests/migrations/test-all-versions.js.map +1 -1
  252. package/dist/tests/migrations/v4/v4-fresh-install.test.js +29 -29
  253. package/dist/tests/migrations/v4/v4-fresh-install.test.js.map +1 -1
  254. package/dist/tests/migrations/v4/v4-migrate-data.test.js +20 -20
  255. package/dist/tests/migrations/v4/v4-migrate-data.test.js.map +1 -1
  256. package/dist/tests/test-v4-native-rdbms.js +20 -20
  257. package/dist/tests/test-v4-native-rdbms.js.map +1 -1
  258. package/dist/tests/unit/config/cloud-config-loader.test.d.ts +2 -0
  259. package/dist/tests/unit/config/cloud-config-loader.test.d.ts.map +1 -0
  260. package/dist/tests/unit/config/cloud-config-loader.test.js +103 -0
  261. package/dist/tests/unit/config/cloud-config-loader.test.js.map +1 -0
  262. package/dist/tests/unit/config/{plan-toml-cache.test.d.ts → plan-cache.test.d.ts} +1 -1
  263. package/dist/tests/unit/config/plan-cache.test.d.ts.map +1 -0
  264. package/dist/tests/unit/config/{plan-toml-cache.test.js → plan-cache.test.js} +32 -32
  265. package/dist/tests/unit/config/plan-cache.test.js.map +1 -0
  266. package/dist/tests/unit/hooks/{plan-toml-parser.test.d.ts → plan-parser.test.d.ts} +1 -1
  267. package/dist/tests/unit/hooks/plan-parser.test.d.ts.map +1 -0
  268. package/dist/tests/unit/hooks/{plan-toml-parser.test.js → plan-parser.test.js} +179 -179
  269. package/dist/tests/unit/hooks/plan-parser.test.js.map +1 -0
  270. package/dist/tests/unit/server/tool-handlers.test.d.ts +7 -0
  271. package/dist/tests/unit/server/tool-handlers.test.d.ts.map +1 -0
  272. package/dist/tests/unit/server/tool-handlers.test.js +76 -0
  273. package/dist/tests/unit/server/tool-handlers.test.js.map +1 -0
  274. package/dist/tests/unit/utils/config-loader.test.js +17 -17
  275. package/dist/tests/unit/utils/connection-hash.test.d.ts +2 -0
  276. package/dist/tests/unit/utils/connection-hash.test.d.ts.map +1 -0
  277. package/dist/tests/unit/utils/connection-hash.test.js +57 -0
  278. package/dist/tests/unit/utils/connection-hash.test.js.map +1 -0
  279. package/dist/tests/unit/utils/environment-detector.test.d.ts +2 -0
  280. package/dist/tests/unit/utils/environment-detector.test.d.ts.map +1 -0
  281. package/dist/tests/unit/utils/environment-detector.test.js +43 -0
  282. package/dist/tests/unit/utils/environment-detector.test.js.map +1 -0
  283. package/dist/tests/unit/utils/path-utils.test.d.ts +2 -0
  284. package/dist/tests/unit/utils/path-utils.test.d.ts.map +1 -0
  285. package/dist/tests/unit/utils/path-utils.test.js +72 -0
  286. package/dist/tests/unit/utils/path-utils.test.js.map +1 -0
  287. package/dist/tests/unit/utils/project-detector.test.js +14 -13
  288. package/dist/tests/unit/utils/project-detector.test.js.map +1 -1
  289. package/dist/tests/unit/validation/parameter-validation.test.d.ts +2 -1
  290. package/dist/tests/unit/validation/parameter-validation.test.d.ts.map +1 -1
  291. package/dist/tests/unit/validation/parameter-validation.test.js +5 -133
  292. package/dist/tests/unit/validation/parameter-validation.test.js.map +1 -1
  293. package/dist/tests/unit/validation/policy-validation.test.js +15 -15
  294. package/dist/tests/unit/validation/policy-validation.test.js.map +1 -1
  295. package/dist/tests/utils/db-schema.js +48 -48
  296. package/dist/tests/utils/db-seeding.js +11 -11
  297. package/dist/tests/utils/db-seeding.js.map +1 -1
  298. package/dist/tests/utils/json-export-import.test.d.ts +6 -0
  299. package/dist/tests/utils/json-export-import.test.d.ts.map +1 -0
  300. package/dist/tests/utils/json-export-import.test.js +474 -0
  301. package/dist/tests/utils/json-export-import.test.js.map +1 -0
  302. package/dist/tests/utils/test-helpers.js +59 -59
  303. package/dist/tests/utils/test-helpers.js.map +1 -1
  304. package/dist/tools/constraints/actions/activate.d.ts +2 -2
  305. package/dist/tools/constraints/actions/activate.d.ts.map +1 -1
  306. package/dist/tools/constraints/actions/activate.js +12 -12
  307. package/dist/tools/constraints/actions/activate.js.map +1 -1
  308. package/dist/tools/constraints/actions/add.js +3 -3
  309. package/dist/tools/constraints/actions/add.js.map +1 -1
  310. package/dist/tools/constraints/actions/deactivate.js +6 -6
  311. package/dist/tools/constraints/actions/deactivate.js.map +1 -1
  312. package/dist/tools/constraints/actions/get.d.ts +2 -2
  313. package/dist/tools/constraints/actions/get.js +9 -9
  314. package/dist/tools/constraints/actions/get.js.map +1 -1
  315. package/dist/tools/constraints/actions/suggest-pending.js +2 -2
  316. package/dist/tools/constraints/actions/suggest-pending.js.map +1 -1
  317. package/dist/tools/constraints/index.d.ts +1 -1
  318. package/dist/tools/constraints/index.d.ts.map +1 -1
  319. package/dist/tools/constraints/index.js +1 -1
  320. package/dist/tools/constraints/index.js.map +1 -1
  321. package/dist/tools/context/actions/create-policy.js +3 -3
  322. package/dist/tools/context/actions/create-policy.js.map +1 -1
  323. package/dist/tools/context/actions/create-template.js +2 -2
  324. package/dist/tools/context/actions/create-template.js.map +1 -1
  325. package/dist/tools/context/actions/export.d.ts +35 -0
  326. package/dist/tools/context/actions/export.d.ts.map +1 -0
  327. package/dist/tools/context/actions/export.js +93 -0
  328. package/dist/tools/context/actions/export.js.map +1 -0
  329. package/dist/tools/context/actions/hard-delete.js +11 -11
  330. package/dist/tools/context/actions/hard-delete.js.map +1 -1
  331. package/dist/tools/context/actions/has-updates.d.ts +1 -1
  332. package/dist/tools/context/actions/has-updates.d.ts.map +1 -1
  333. package/dist/tools/context/actions/has-updates.js +5 -13
  334. package/dist/tools/context/actions/has-updates.js.map +1 -1
  335. package/dist/tools/context/actions/list-policies.js +1 -1
  336. package/dist/tools/context/actions/list-policies.js.map +1 -1
  337. package/dist/tools/context/actions/list-templates.js +2 -2
  338. package/dist/tools/context/actions/list-templates.js.map +1 -1
  339. package/dist/tools/context/actions/list.js +1 -1
  340. package/dist/tools/context/actions/list.js.map +1 -1
  341. package/dist/tools/context/actions/search-layer.js +8 -8
  342. package/dist/tools/context/actions/search-layer.js.map +1 -1
  343. package/dist/tools/context/actions/set-from-policy.js +1 -1
  344. package/dist/tools/context/actions/set-from-policy.js.map +1 -1
  345. package/dist/tools/context/actions/set-from-template.js +2 -2
  346. package/dist/tools/context/actions/set-from-template.js.map +1 -1
  347. package/dist/tools/context/actions/versions.js +3 -3
  348. package/dist/tools/context/actions/versions.js.map +1 -1
  349. package/dist/tools/context/index.d.ts +1 -0
  350. package/dist/tools/context/index.d.ts.map +1 -1
  351. package/dist/tools/context/index.js +2 -0
  352. package/dist/tools/context/index.js.map +1 -1
  353. package/dist/tools/context/internal/queries.d.ts.map +1 -1
  354. package/dist/tools/context/internal/queries.js +54 -43
  355. package/dist/tools/context/internal/queries.js.map +1 -1
  356. package/dist/tools/context/types.d.ts +1 -1
  357. package/dist/tools/context/types.d.ts.map +1 -1
  358. package/dist/tools/example/actions/get.d.ts +8 -3
  359. package/dist/tools/example/actions/get.d.ts.map +1 -1
  360. package/dist/tools/example/actions/get.js +29 -30
  361. package/dist/tools/example/actions/get.js.map +1 -1
  362. package/dist/tools/example/actions/list-all.d.ts +8 -2
  363. package/dist/tools/example/actions/list-all.d.ts.map +1 -1
  364. package/dist/tools/example/actions/list-all.js +37 -29
  365. package/dist/tools/example/actions/list-all.js.map +1 -1
  366. package/dist/tools/example/actions/search.d.ts +8 -3
  367. package/dist/tools/example/actions/search.d.ts.map +1 -1
  368. package/dist/tools/example/actions/search.js +29 -43
  369. package/dist/tools/example/actions/search.js.map +1 -1
  370. package/dist/tools/help/actions/batch-guide.js +5 -5
  371. package/dist/tools/help/actions/batch-guide.js.map +1 -1
  372. package/dist/tools/help/actions/query-action.d.ts +7 -3
  373. package/dist/tools/help/actions/query-action.d.ts.map +1 -1
  374. package/dist/tools/help/actions/query-action.js +35 -6
  375. package/dist/tools/help/actions/query-action.js.map +1 -1
  376. package/dist/tools/help/actions/query-params.d.ts +5 -3
  377. package/dist/tools/help/actions/query-params.d.ts.map +1 -1
  378. package/dist/tools/help/actions/query-params.js +28 -6
  379. package/dist/tools/help/actions/query-params.js.map +1 -1
  380. package/dist/tools/help/actions/query-tool.d.ts +5 -3
  381. package/dist/tools/help/actions/query-tool.d.ts.map +1 -1
  382. package/dist/tools/help/actions/query-tool.js +23 -6
  383. package/dist/tools/help/actions/query-tool.js.map +1 -1
  384. package/dist/tools/help/actions/workflow-hints.d.ts +5 -3
  385. package/dist/tools/help/actions/workflow-hints.d.ts.map +1 -1
  386. package/dist/tools/help/actions/workflow-hints.js +21 -6
  387. package/dist/tools/help/actions/workflow-hints.js.map +1 -1
  388. package/dist/tools/queue/actions/clear.d.ts +19 -0
  389. package/dist/tools/queue/actions/clear.d.ts.map +1 -0
  390. package/dist/tools/queue/actions/clear.js +79 -0
  391. package/dist/tools/queue/actions/clear.js.map +1 -0
  392. package/dist/tools/queue/actions/list.d.ts +16 -0
  393. package/dist/tools/queue/actions/list.d.ts.map +1 -0
  394. package/dist/tools/queue/actions/list.js +95 -0
  395. package/dist/tools/queue/actions/list.js.map +1 -0
  396. package/dist/tools/queue/actions/remove.d.ts +19 -0
  397. package/dist/tools/queue/actions/remove.d.ts.map +1 -0
  398. package/dist/tools/queue/actions/remove.js +81 -0
  399. package/dist/tools/queue/actions/remove.js.map +1 -0
  400. package/dist/tools/queue/index.d.ts +13 -0
  401. package/dist/tools/queue/index.d.ts.map +1 -0
  402. package/dist/tools/queue/index.js +13 -0
  403. package/dist/tools/queue/index.js.map +1 -0
  404. package/dist/tools/queue/types.d.ts +87 -0
  405. package/dist/tools/queue/types.d.ts.map +1 -0
  406. package/dist/tools/queue/types.js +9 -0
  407. package/dist/tools/queue/types.js.map +1 -0
  408. package/dist/tools/suggest/actions/by-context.d.ts.map +1 -1
  409. package/dist/tools/suggest/actions/by-context.js +3 -1
  410. package/dist/tools/suggest/actions/by-context.js.map +1 -1
  411. package/dist/tools/suggest/actions/by-key.d.ts.map +1 -1
  412. package/dist/tools/suggest/actions/by-key.js +3 -1
  413. package/dist/tools/suggest/actions/by-key.js.map +1 -1
  414. package/dist/tools/suggest/actions/by-tags.d.ts +2 -2
  415. package/dist/tools/suggest/actions/by-tags.js +3 -3
  416. package/dist/tools/suggest/actions/by-tags.js.map +1 -1
  417. package/dist/tools/suggest/internal/constraint-queries.d.ts +4 -4
  418. package/dist/tools/suggest/internal/constraint-queries.js +14 -14
  419. package/dist/tools/suggest/internal/constraint-queries.js.map +1 -1
  420. package/dist/tools/suggest/internal/queries.d.ts +4 -4
  421. package/dist/tools/suggest/internal/queries.js +25 -25
  422. package/dist/tools/suggest/internal/queries.js.map +1 -1
  423. package/dist/tools/use_case/actions/get.d.ts +5 -3
  424. package/dist/tools/use_case/actions/get.d.ts.map +1 -1
  425. package/dist/tools/use_case/actions/get.js +20 -6
  426. package/dist/tools/use_case/actions/get.js.map +1 -1
  427. package/dist/tools/use_case/actions/list-all.d.ts +5 -3
  428. package/dist/tools/use_case/actions/list-all.d.ts.map +1 -1
  429. package/dist/tools/use_case/actions/list-all.js +36 -6
  430. package/dist/tools/use_case/actions/list-all.js.map +1 -1
  431. package/dist/tools/use_case/actions/search.d.ts +6 -3
  432. package/dist/tools/use_case/actions/search.d.ts.map +1 -1
  433. package/dist/tools/use_case/actions/search.js +37 -67
  434. package/dist/tools/use_case/actions/search.js.map +1 -1
  435. package/dist/tools/use_case/help/example.js +17 -17
  436. package/dist/tools/use_case/help/example.js.map +1 -1
  437. package/dist/types.d.ts +82 -153
  438. package/dist/types.d.ts.map +1 -1
  439. package/dist/types.js +0 -10
  440. package/dist/types.js.map +1 -1
  441. package/dist/utils/action-specs/constraint-specs.js +6 -6
  442. package/dist/utils/action-specs/constraint-specs.js.map +1 -1
  443. package/dist/utils/action-specs/index.d.ts +0 -2
  444. package/dist/utils/action-specs/index.d.ts.map +1 -1
  445. package/dist/utils/action-specs/index.js +0 -6
  446. package/dist/utils/action-specs/index.js.map +1 -1
  447. package/dist/utils/batch-validation.d.ts +1 -1
  448. package/dist/utils/batch-validation.js +3 -3
  449. package/dist/utils/batch-validation.js.map +1 -1
  450. package/dist/utils/case-insensitive-validator.d.ts +2 -2
  451. package/dist/utils/case-insensitive-validator.js +2 -2
  452. package/dist/utils/connection-hash.d.ts +37 -0
  453. package/dist/utils/connection-hash.d.ts.map +1 -0
  454. package/dist/utils/connection-hash.js +55 -0
  455. package/dist/utils/connection-hash.js.map +1 -0
  456. package/dist/utils/db-aggregations.js +16 -16
  457. package/dist/utils/db-aggregations.js.map +1 -1
  458. package/dist/utils/enum-converter.d.ts +0 -21
  459. package/dist/utils/enum-converter.d.ts.map +1 -1
  460. package/dist/utils/enum-converter.js +1 -23
  461. package/dist/utils/enum-converter.js.map +1 -1
  462. package/dist/utils/environment-detector.d.ts +30 -0
  463. package/dist/utils/environment-detector.d.ts.map +1 -0
  464. package/dist/utils/environment-detector.js +86 -0
  465. package/dist/utils/environment-detector.js.map +1 -0
  466. package/dist/utils/example-filter.d.ts +34 -0
  467. package/dist/utils/example-filter.d.ts.map +1 -0
  468. package/dist/utils/example-filter.js +45 -0
  469. package/dist/utils/example-filter.js.map +1 -0
  470. package/dist/utils/exporter/export.d.ts +2 -16
  471. package/dist/utils/exporter/export.d.ts.map +1 -1
  472. package/dist/utils/exporter/export.js +49 -130
  473. package/dist/utils/exporter/export.js.map +1 -1
  474. package/dist/utils/hook-queue.d.ts +60 -0
  475. package/dist/utils/hook-queue.d.ts.map +1 -1
  476. package/dist/utils/hook-queue.js +114 -11
  477. package/dist/utils/hook-queue.js.map +1 -1
  478. package/dist/utils/importer/import.d.ts.map +1 -1
  479. package/dist/utils/importer/import.js +33 -188
  480. package/dist/utils/importer/import.js.map +1 -1
  481. package/dist/utils/importer/master-tables.d.ts +2 -1
  482. package/dist/utils/importer/master-tables.d.ts.map +1 -1
  483. package/dist/utils/importer/master-tables.js +35 -81
  484. package/dist/utils/importer/master-tables.js.map +1 -1
  485. package/dist/utils/param-normalizer.d.ts +0 -1
  486. package/dist/utils/param-normalizer.d.ts.map +1 -1
  487. package/dist/utils/param-normalizer.js +1 -3
  488. package/dist/utils/param-normalizer.js.map +1 -1
  489. package/dist/utils/path-utils.d.ts +46 -0
  490. package/dist/utils/path-utils.d.ts.map +1 -0
  491. package/dist/utils/path-utils.js +74 -0
  492. package/dist/utils/path-utils.js.map +1 -0
  493. package/dist/utils/policy-validator.js +1 -1
  494. package/dist/utils/policy-validator.js.map +1 -1
  495. package/dist/utils/project-context.d.ts +23 -0
  496. package/dist/utils/project-context.d.ts.map +1 -1
  497. package/dist/utils/project-context.js +45 -3
  498. package/dist/utils/project-context.js.map +1 -1
  499. package/dist/utils/project-root.d.ts +2 -2
  500. package/dist/utils/project-root.js +2 -2
  501. package/dist/utils/sql-dump/core/index-export.js +7 -7
  502. package/dist/utils/sql-dump/schema/indexes.js +24 -24
  503. package/dist/utils/sql-dump/schema/tables.js +44 -44
  504. package/dist/utils/token-logging.js +6 -6
  505. package/dist/utils/token-logging.js.map +1 -1
  506. package/dist/utils/validators.js +1 -1
  507. package/dist/utils/validators.js.map +1 -1
  508. package/dist/utils/view-queries.d.ts +0 -8
  509. package/dist/utils/view-queries.d.ts.map +1 -1
  510. package/dist/utils/view-queries.js +29 -84
  511. package/dist/utils/view-queries.js.map +1 -1
  512. package/dist/watcher/index.d.ts +1 -4
  513. package/dist/watcher/index.d.ts.map +1 -1
  514. package/dist/watcher/index.js +1 -3
  515. package/dist/watcher/index.js.map +1 -1
  516. package/dist/watcher/queue-watcher.d.ts +10 -3
  517. package/dist/watcher/queue-watcher.d.ts.map +1 -1
  518. package/dist/watcher/queue-watcher.js +24 -21
  519. package/dist/watcher/queue-watcher.js.map +1 -1
  520. package/docs/CONFIGURATION.md +14 -14
  521. package/docs/DATABASE_AUTH.md +1 -1
  522. package/docs/HOOKS_GUIDE.md +30 -50
  523. package/docs/HOW_TO_UNINSTALL.md +199 -0
  524. package/docs/MIGRATION_CLEANUP_GUIDE.md +212 -0
  525. package/docs/MIGRATION_TO_SAAS.md +176 -0
  526. package/docs/SLASH_COMMANDS.md +1 -1
  527. package/docs/cli/DATABASE_MIGRATION.md +13 -13
  528. package/docs/cli/DATA_EXPORT_IMPORT.md +71 -69
  529. package/package.json +10 -8
  530. package/saas-connector/LICENSE +190 -0
  531. package/saas-connector/README.md +122 -0
  532. package/saas-connector/dist/auth/auth-manager.d.ts +6 -0
  533. package/saas-connector/dist/auth/auth-manager.d.ts.map +1 -0
  534. package/saas-connector/dist/auth/auth-manager.js +39 -0
  535. package/saas-connector/dist/auth/auth-manager.js.map +7 -0
  536. package/saas-connector/dist/backend/saas-backend.d.ts +20 -0
  537. package/saas-connector/dist/backend/saas-backend.d.ts.map +1 -0
  538. package/saas-connector/dist/backend/saas-backend.js +104 -0
  539. package/saas-connector/dist/backend/saas-backend.js.map +7 -0
  540. package/saas-connector/dist/client/http-client.d.ts +33 -0
  541. package/saas-connector/dist/client/http-client.d.ts.map +1 -0
  542. package/saas-connector/dist/client/http-client.js +226 -0
  543. package/saas-connector/dist/client/http-client.js.map +7 -0
  544. package/saas-connector/dist/client/types.d.ts +62 -0
  545. package/saas-connector/dist/client/types.d.ts.map +1 -0
  546. package/saas-connector/dist/client/types.js +17 -0
  547. package/saas-connector/dist/client/types.js.map +7 -0
  548. package/saas-connector/dist/config/constants.d.ts +14 -0
  549. package/saas-connector/dist/config/constants.d.ts.map +1 -0
  550. package/saas-connector/dist/config/constants.js +68 -0
  551. package/saas-connector/dist/config/constants.js.map +7 -0
  552. package/saas-connector/dist/errors/api-error.d.ts +26 -0
  553. package/saas-connector/dist/errors/api-error.d.ts.map +1 -0
  554. package/saas-connector/dist/errors/api-error.js +62 -0
  555. package/saas-connector/dist/errors/api-error.js.map +7 -0
  556. package/saas-connector/dist/index.d.ts +18 -0
  557. package/saas-connector/dist/index.d.ts.map +1 -0
  558. package/saas-connector/dist/index.js +51 -0
  559. package/saas-connector/dist/index.js.map +7 -0
  560. package/saas-connector/package-lock.json +518 -0
  561. package/saas-connector/package.json +34 -0
  562. package/scripts/copy-help-data.js +19 -0
  563. package/assets/config.example.toml +0 -120
  564. package/assets/kanban-style.png +0 -0
  565. package/assets/kanban-visualizer.png +0 -0
  566. package/assets/sample-agents/README.md +0 -36
  567. package/assets/sample-agents/sqlew-architect.md +0 -321
  568. package/assets/sample-agents/sqlew-researcher.md +0 -292
  569. package/assets/sample-agents/sqlew-scrum-master.md +0 -286
  570. package/assets/sample-commands/README.md +0 -56
  571. package/assets/sample-commands/sqlew.md +0 -144
  572. package/assets/sample-skills/sqlew-decision-format/SKILL.md +0 -73
  573. package/assets/sample-skills/sqlew-plan-guidance/SKILL.md +0 -62
  574. package/assets/schema.sql +0 -564
  575. package/dist/cli/hooks/init-hooks.d.ts +0 -35
  576. package/dist/cli/hooks/init-hooks.d.ts.map +0 -1
  577. package/dist/cli/hooks/init-hooks.js +0 -517
  578. package/dist/cli/hooks/init-hooks.js.map +0 -1
  579. package/dist/cli/hooks/plan-toml-parser.d.ts.map +0 -1
  580. package/dist/cli/hooks/plan-toml-parser.js.map +0 -1
  581. package/dist/init-agents.d.ts +0 -7
  582. package/dist/init-agents.d.ts.map +0 -1
  583. package/dist/init-agents.js +0 -206
  584. package/dist/init-agents.js.map +0 -1
  585. package/dist/init-commands.d.ts +0 -10
  586. package/dist/init-commands.d.ts.map +0 -1
  587. package/dist/init-commands.js +0 -46
  588. package/dist/init-commands.js.map +0 -1
  589. package/dist/init-skills.d.ts +0 -29
  590. package/dist/init-skills.d.ts.map +0 -1
  591. package/dist/init-skills.js +0 -183
  592. package/dist/init-skills.js.map +0 -1
  593. package/dist/sync-agents.d.ts +0 -13
  594. package/dist/sync-agents.d.ts.map +0 -1
  595. package/dist/sync-agents.js +0 -157
  596. package/dist/sync-agents.js.map +0 -1
  597. package/dist/sync-commands.d.ts +0 -13
  598. package/dist/sync-commands.d.ts.map +0 -1
  599. package/dist/sync-commands.js +0 -150
  600. package/dist/sync-commands.js.map +0 -1
  601. package/dist/sync-gitignore.d.ts +0 -13
  602. package/dist/sync-gitignore.d.ts.map +0 -1
  603. package/dist/sync-gitignore.js +0 -60
  604. package/dist/sync-gitignore.js.map +0 -1
  605. package/dist/tests/docker/native/task-operations.test.d.ts +0 -16
  606. package/dist/tests/docker/native/task-operations.test.d.ts.map +0 -1
  607. package/dist/tests/docker/native/task-operations.test.js +0 -800
  608. package/dist/tests/docker/native/task-operations.test.js.map +0 -1
  609. package/dist/tests/feature/decision/batch-validation-integration.test.d.ts +0 -6
  610. package/dist/tests/feature/decision/batch-validation-integration.test.d.ts.map +0 -1
  611. package/dist/tests/feature/decision/batch-validation-integration.test.js +0 -193
  612. package/dist/tests/feature/decision/batch-validation-integration.test.js.map +0 -1
  613. package/dist/tests/feature/task/auto-pruning-decision-link.test.d.ts +0 -6
  614. package/dist/tests/feature/task/auto-pruning-decision-link.test.d.ts.map +0 -1
  615. package/dist/tests/feature/task/auto-pruning-decision-link.test.js +0 -281
  616. package/dist/tests/feature/task/auto-pruning-decision-link.test.js.map +0 -1
  617. package/dist/tests/feature/task/auto-pruning-partial.test.d.ts +0 -6
  618. package/dist/tests/feature/task/auto-pruning-partial.test.d.ts.map +0 -1
  619. package/dist/tests/feature/task/auto-pruning-partial.test.js +0 -305
  620. package/dist/tests/feature/task/auto-pruning-partial.test.js.map +0 -1
  621. package/dist/tests/feature/task/auto-pruning-persistence.test.d.ts +0 -6
  622. package/dist/tests/feature/task/auto-pruning-persistence.test.d.ts.map +0 -1
  623. package/dist/tests/feature/task/auto-pruning-persistence.test.js +0 -267
  624. package/dist/tests/feature/task/auto-pruning-persistence.test.js.map +0 -1
  625. package/dist/tests/feature/task/auto-pruning-safety.test.d.ts +0 -12
  626. package/dist/tests/feature/task/auto-pruning-safety.test.d.ts.map +0 -1
  627. package/dist/tests/feature/task/auto-pruning-safety.test.js +0 -224
  628. package/dist/tests/feature/task/auto-pruning-safety.test.js.map +0 -1
  629. package/dist/tests/feature/task/dependencies.test.d.ts +0 -7
  630. package/dist/tests/feature/task/dependencies.test.d.ts.map +0 -1
  631. package/dist/tests/feature/task/dependencies.test.js +0 -656
  632. package/dist/tests/feature/task/dependencies.test.js.map +0 -1
  633. package/dist/tests/feature/task/file-actions-integration.test.d.ts +0 -10
  634. package/dist/tests/feature/task/file-actions-integration.test.d.ts.map +0 -1
  635. package/dist/tests/feature/task/file-actions-integration.test.js +0 -162
  636. package/dist/tests/feature/task/file-actions-integration.test.js.map +0 -1
  637. package/dist/tests/feature/task/file-actions-validation.test.d.ts +0 -6
  638. package/dist/tests/feature/task/file-actions-validation.test.d.ts.map +0 -1
  639. package/dist/tests/feature/task/file-actions-validation.test.js +0 -228
  640. package/dist/tests/feature/task/file-actions-validation.test.js.map +0 -1
  641. package/dist/tests/feature/task/link-file-backward-compat.test.d.ts +0 -6
  642. package/dist/tests/feature/task/link-file-backward-compat.test.d.ts.map +0 -1
  643. package/dist/tests/feature/task/link-file-backward-compat.test.js +0 -280
  644. package/dist/tests/feature/task/link-file-backward-compat.test.js.map +0 -1
  645. package/dist/tests/feature/task/watch-files-action.test.d.ts +0 -8
  646. package/dist/tests/feature/task/watch-files-action.test.d.ts.map +0 -1
  647. package/dist/tests/feature/task/watch-files-action.test.js +0 -402
  648. package/dist/tests/feature/task/watch-files-action.test.js.map +0 -1
  649. package/dist/tests/feature/task/watch-files-parameter.test.d.ts +0 -8
  650. package/dist/tests/feature/task/watch-files-parameter.test.d.ts.map +0 -1
  651. package/dist/tests/feature/task/watch-files-parameter.test.js +0 -283
  652. package/dist/tests/feature/task/watch-files-parameter.test.js.map +0 -1
  653. package/dist/tests/integration/all-features.standalone.d.ts +0 -7
  654. package/dist/tests/integration/all-features.standalone.d.ts.map +0 -1
  655. package/dist/tests/integration/all-features.standalone.js +0 -417
  656. package/dist/tests/integration/all-features.standalone.js.map +0 -1
  657. package/dist/tests/unit/config/plan-toml-cache.test.d.ts.map +0 -1
  658. package/dist/tests/unit/config/plan-toml-cache.test.js.map +0 -1
  659. package/dist/tests/unit/hooks/plan-toml-parser.test.d.ts.map +0 -1
  660. package/dist/tests/unit/hooks/plan-toml-parser.test.js.map +0 -1
  661. package/dist/tools/files/actions/check-lock.d.ts +0 -16
  662. package/dist/tools/files/actions/check-lock.d.ts.map +0 -1
  663. package/dist/tools/files/actions/check-lock.js +0 -74
  664. package/dist/tools/files/actions/check-lock.js.map +0 -1
  665. package/dist/tools/files/actions/get.d.ts +0 -16
  666. package/dist/tools/files/actions/get.d.ts.map +0 -1
  667. package/dist/tools/files/actions/get.js +0 -85
  668. package/dist/tools/files/actions/get.js.map +0 -1
  669. package/dist/tools/files/actions/record-batch.d.ts +0 -18
  670. package/dist/tools/files/actions/record-batch.d.ts.map +0 -1
  671. package/dist/tools/files/actions/record-batch.js +0 -119
  672. package/dist/tools/files/actions/record-batch.js.map +0 -1
  673. package/dist/tools/files/actions/record.d.ts +0 -16
  674. package/dist/tools/files/actions/record.d.ts.map +0 -1
  675. package/dist/tools/files/actions/record.js +0 -43
  676. package/dist/tools/files/actions/record.js.map +0 -1
  677. package/dist/tools/files/actions/sqlite-flush.d.ts +0 -27
  678. package/dist/tools/files/actions/sqlite-flush.d.ts.map +0 -1
  679. package/dist/tools/files/actions/sqlite-flush.js +0 -66
  680. package/dist/tools/files/actions/sqlite-flush.js.map +0 -1
  681. package/dist/tools/files/help/example.d.ts +0 -5
  682. package/dist/tools/files/help/example.d.ts.map +0 -1
  683. package/dist/tools/files/help/example.js +0 -109
  684. package/dist/tools/files/help/example.js.map +0 -1
  685. package/dist/tools/files/help/help.d.ts +0 -5
  686. package/dist/tools/files/help/help.d.ts.map +0 -1
  687. package/dist/tools/files/help/help.js +0 -35
  688. package/dist/tools/files/help/help.js.map +0 -1
  689. package/dist/tools/files/index.d.ts +0 -14
  690. package/dist/tools/files/index.d.ts.map +0 -1
  691. package/dist/tools/files/index.js +0 -15
  692. package/dist/tools/files/index.js.map +0 -1
  693. package/dist/tools/files/internal/queries.d.ts +0 -18
  694. package/dist/tools/files/internal/queries.d.ts.map +0 -1
  695. package/dist/tools/files/internal/queries.js +0 -54
  696. package/dist/tools/files/internal/queries.js.map +0 -1
  697. package/dist/tools/files/internal/validation.d.ts +0 -18
  698. package/dist/tools/files/internal/validation.d.ts.map +0 -1
  699. package/dist/tools/files/internal/validation.js +0 -39
  700. package/dist/tools/files/internal/validation.js.map +0 -1
  701. package/dist/tools/files/types.d.ts +0 -6
  702. package/dist/tools/files/types.d.ts.map +0 -1
  703. package/dist/tools/files/types.js +0 -6
  704. package/dist/tools/files/types.js.map +0 -1
  705. package/dist/tools/help-queries.d.ts +0 -130
  706. package/dist/tools/help-queries.d.ts.map +0 -1
  707. package/dist/tools/help-queries.js +0 -411
  708. package/dist/tools/help-queries.js.map +0 -1
  709. package/dist/tools/tasks/actions/add-dependency.d.ts +0 -12
  710. package/dist/tools/tasks/actions/add-dependency.d.ts.map +0 -1
  711. package/dist/tools/tasks/actions/add-dependency.js +0 -129
  712. package/dist/tools/tasks/actions/add-dependency.js.map +0 -1
  713. package/dist/tools/tasks/actions/archive.d.ts +0 -11
  714. package/dist/tools/tasks/actions/archive.d.ts.map +0 -1
  715. package/dist/tools/tasks/actions/archive.js +0 -58
  716. package/dist/tools/tasks/actions/archive.js.map +0 -1
  717. package/dist/tools/tasks/actions/create-batch.d.ts +0 -19
  718. package/dist/tools/tasks/actions/create-batch.d.ts.map +0 -1
  719. package/dist/tools/tasks/actions/create-batch.js +0 -103
  720. package/dist/tools/tasks/actions/create-batch.js.map +0 -1
  721. package/dist/tools/tasks/actions/create.d.ts +0 -16
  722. package/dist/tools/tasks/actions/create.d.ts.map +0 -1
  723. package/dist/tools/tasks/actions/create.js +0 -163
  724. package/dist/tools/tasks/actions/create.js.map +0 -1
  725. package/dist/tools/tasks/actions/get-dependencies.d.ts +0 -12
  726. package/dist/tools/tasks/actions/get-dependencies.d.ts.map +0 -1
  727. package/dist/tools/tasks/actions/get-dependencies.js +0 -41
  728. package/dist/tools/tasks/actions/get-dependencies.js.map +0 -1
  729. package/dist/tools/tasks/actions/get-pruned-files.d.ts +0 -13
  730. package/dist/tools/tasks/actions/get-pruned-files.d.ts.map +0 -1
  731. package/dist/tools/tasks/actions/get-pruned-files.js +0 -45
  732. package/dist/tools/tasks/actions/get-pruned-files.js.map +0 -1
  733. package/dist/tools/tasks/actions/get.d.ts +0 -12
  734. package/dist/tools/tasks/actions/get.d.ts.map +0 -1
  735. package/dist/tools/tasks/actions/get.js +0 -84
  736. package/dist/tools/tasks/actions/get.js.map +0 -1
  737. package/dist/tools/tasks/actions/link-pruned-file.d.ts +0 -14
  738. package/dist/tools/tasks/actions/link-pruned-file.d.ts.map +0 -1
  739. package/dist/tools/tasks/actions/link-pruned-file.js +0 -68
  740. package/dist/tools/tasks/actions/link-pruned-file.js.map +0 -1
  741. package/dist/tools/tasks/actions/link.d.ts +0 -14
  742. package/dist/tools/tasks/actions/link.d.ts.map +0 -1
  743. package/dist/tools/tasks/actions/link.js +0 -120
  744. package/dist/tools/tasks/actions/link.js.map +0 -1
  745. package/dist/tools/tasks/actions/list.d.ts +0 -17
  746. package/dist/tools/tasks/actions/list.d.ts.map +0 -1
  747. package/dist/tools/tasks/actions/list.js +0 -100
  748. package/dist/tools/tasks/actions/list.js.map +0 -1
  749. package/dist/tools/tasks/actions/move.d.ts +0 -13
  750. package/dist/tools/tasks/actions/move.d.ts.map +0 -1
  751. package/dist/tools/tasks/actions/move.js +0 -91
  752. package/dist/tools/tasks/actions/move.js.map +0 -1
  753. package/dist/tools/tasks/actions/remove-dependency.d.ts +0 -12
  754. package/dist/tools/tasks/actions/remove-dependency.d.ts.map +0 -1
  755. package/dist/tools/tasks/actions/remove-dependency.js +0 -36
  756. package/dist/tools/tasks/actions/remove-dependency.js.map +0 -1
  757. package/dist/tools/tasks/actions/update.d.ts +0 -10
  758. package/dist/tools/tasks/actions/update.d.ts.map +0 -1
  759. package/dist/tools/tasks/actions/update.js +0 -183
  760. package/dist/tools/tasks/actions/update.js.map +0 -1
  761. package/dist/tools/tasks/actions/watch-files.d.ts +0 -14
  762. package/dist/tools/tasks/actions/watch-files.d.ts.map +0 -1
  763. package/dist/tools/tasks/actions/watch-files.js +0 -127
  764. package/dist/tools/tasks/actions/watch-files.js.map +0 -1
  765. package/dist/tools/tasks/help/example.d.ts +0 -8
  766. package/dist/tools/tasks/help/example.d.ts.map +0 -1
  767. package/dist/tools/tasks/help/example.js +0 -225
  768. package/dist/tools/tasks/help/example.js.map +0 -1
  769. package/dist/tools/tasks/help/help.d.ts +0 -8
  770. package/dist/tools/tasks/help/help.d.ts.map +0 -1
  771. package/dist/tools/tasks/help/help.js +0 -307
  772. package/dist/tools/tasks/help/help.js.map +0 -1
  773. package/dist/tools/tasks/help/use-case.d.ts +0 -11
  774. package/dist/tools/tasks/help/use-case.d.ts.map +0 -1
  775. package/dist/tools/tasks/help/use-case.js +0 -767
  776. package/dist/tools/tasks/help/use-case.js.map +0 -1
  777. package/dist/tools/tasks/index.d.ts +0 -28
  778. package/dist/tools/tasks/index.d.ts.map +0 -1
  779. package/dist/tools/tasks/index.js +0 -33
  780. package/dist/tools/tasks/index.js.map +0 -1
  781. package/dist/tools/tasks/internal/state-machine.d.ts +0 -16
  782. package/dist/tools/tasks/internal/state-machine.d.ts.map +0 -1
  783. package/dist/tools/tasks/internal/state-machine.js +0 -36
  784. package/dist/tools/tasks/internal/state-machine.js.map +0 -1
  785. package/dist/tools/tasks/internal/task-queries.d.ts +0 -12
  786. package/dist/tools/tasks/internal/task-queries.d.ts.map +0 -1
  787. package/dist/tools/tasks/internal/task-queries.js +0 -53
  788. package/dist/tools/tasks/internal/task-queries.js.map +0 -1
  789. package/dist/tools/tasks/internal/validation.d.ts +0 -47
  790. package/dist/tools/tasks/internal/validation.d.ts.map +0 -1
  791. package/dist/tools/tasks/internal/validation.js +0 -261
  792. package/dist/tools/tasks/internal/validation.js.map +0 -1
  793. package/dist/tools/tasks/types.d.ts +0 -80
  794. package/dist/tools/tasks/types.d.ts.map +0 -1
  795. package/dist/tools/tasks/types.js +0 -68
  796. package/dist/tools/tasks/types.js.map +0 -1
  797. package/dist/tools/tasks/watcher/status.d.ts +0 -9
  798. package/dist/tools/tasks/watcher/status.d.ts.map +0 -1
  799. package/dist/tools/tasks/watcher/status.js +0 -130
  800. package/dist/tools/tasks/watcher/status.js.map +0 -1
  801. package/dist/tools/tasks.d.ts +0 -16
  802. package/dist/tools/tasks.d.ts.map +0 -1
  803. package/dist/tools/tasks.js +0 -17
  804. package/dist/tools/tasks.js.map +0 -1
  805. package/dist/utils/action-specs/file-specs.d.ts +0 -9
  806. package/dist/utils/action-specs/file-specs.d.ts.map +0 -1
  807. package/dist/utils/action-specs/file-specs.js +0 -54
  808. package/dist/utils/action-specs/file-specs.js.map +0 -1
  809. package/dist/utils/action-specs/task-specs.d.ts +0 -9
  810. package/dist/utils/action-specs/task-specs.d.ts.map +0 -1
  811. package/dist/utils/action-specs/task-specs.js +0 -143
  812. package/dist/utils/action-specs/task-specs.js.map +0 -1
  813. package/dist/utils/cleanup.d.ts +0 -69
  814. package/dist/utils/cleanup.d.ts.map +0 -1
  815. package/dist/utils/cleanup.js +0 -102
  816. package/dist/utils/cleanup.js.map +0 -1
  817. package/dist/utils/file-pruning.d.ts +0 -93
  818. package/dist/utils/file-pruning.d.ts.map +0 -1
  819. package/dist/utils/file-pruning.js +0 -194
  820. package/dist/utils/file-pruning.js.map +0 -1
  821. package/dist/utils/importer/topological-sort.d.ts +0 -61
  822. package/dist/utils/importer/topological-sort.d.ts.map +0 -1
  823. package/dist/utils/importer/topological-sort.js +0 -143
  824. package/dist/utils/importer/topological-sort.js.map +0 -1
  825. package/dist/utils/retention.d.ts +0 -65
  826. package/dist/utils/retention.d.ts.map +0 -1
  827. package/dist/utils/retention.js +0 -156
  828. package/dist/utils/retention.js.map +0 -1
  829. package/dist/utils/task-stale-detection.d.ts +0 -98
  830. package/dist/utils/task-stale-detection.d.ts.map +0 -1
  831. package/dist/utils/task-stale-detection.js +0 -479
  832. package/dist/utils/task-stale-detection.js.map +0 -1
  833. package/dist/watcher/file-watcher.d.ts +0 -131
  834. package/dist/watcher/file-watcher.d.ts.map +0 -1
  835. package/dist/watcher/file-watcher.js +0 -730
  836. package/dist/watcher/file-watcher.js.map +0 -1
  837. package/dist/watcher/test-executor.d.ts +0 -23
  838. package/dist/watcher/test-executor.d.ts.map +0 -1
  839. package/dist/watcher/test-executor.js +0 -226
  840. package/dist/watcher/test-executor.js.map +0 -1
  841. package/docs/TASK_SYSTEM_DEPRECATED.md +0 -88
@@ -0,0 +1,122 @@
1
+ # @sqlew/saas-connector
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@sqlew/saas-connector.svg)](https://www.npmjs.com/package/@sqlew/saas-connector)
4
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
5
+
6
+ > **SaaS Backend Connector for sqlew** - Cloud-based backend plugin enabling remote context storage and team collaboration
7
+
8
+ ## Overview
9
+
10
+ `@sqlew/saas-connector` is an optional plugin for [sqlew](https://github.com/sqlew-io/sqlew) that enables cloud-based context storage instead of local SQLite databases. This allows:
11
+
12
+ - **Team Collaboration** - Share architectural decisions across team members
13
+ - **Cross-Device Access** - Access your context from any machine
14
+ - **Centralized Management** - Single source of truth for project decisions
15
+ - **Backup & Sync** - Automatic cloud backup of all context data
16
+
17
+ ## Installation
18
+
19
+ This package is bundled with sqlew and typically doesn't need separate installation.
20
+
21
+ ```bash
22
+ npm install -g sqlew
23
+ ```
24
+
25
+ ## Configuration
26
+
27
+ Configure the SaaS backend in `.sqlew/config.toml`:
28
+
29
+ ```toml
30
+ [backend]
31
+ type = "saas"
32
+
33
+ [backend.saas]
34
+ api_key = "your-api-key"
35
+ project_id = "your-project-id" # Optional
36
+ ```
37
+
38
+ ## Architecture
39
+
40
+ ```
41
+ ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
42
+ │ sqlew MCP │────▶│ saas-connector │────▶│ SaaS API │
43
+ │ Server │ │ (this plugin) │ │ Backend │
44
+ └─────────────────┘ └──────────────────┘ └─────────────────┘
45
+ ```
46
+
47
+ ### Components
48
+
49
+ | Component | Description |
50
+ |-----------|-------------|
51
+ | `SaaSBackend` | Main backend implementation |
52
+ | `HttpClient` | HTTP client for API communication |
53
+ | `AuthManager` | API key authentication handler |
54
+ | `ApiError` | Standardized error handling |
55
+
56
+ ## API
57
+
58
+ ### createBackend(config)
59
+
60
+ Creates a new SaaS backend instance.
61
+
62
+ ```typescript
63
+ import { createBackend } from '@sqlew/saas-connector';
64
+
65
+ const backend = createBackend({
66
+ apiKey: 'your-api-key',
67
+ projectId: 'your-project-id',
68
+ });
69
+ ```
70
+
71
+ ### ToolBackend Interface
72
+
73
+ ```typescript
74
+ interface ToolBackend {
75
+ execute<T>(tool: string, action: string, params: Record<string, unknown>): Promise<T>;
76
+ healthCheck(): Promise<HealthCheckResult>;
77
+ disconnect(): Promise<void>;
78
+ readonly backendType: 'local' | 'saas';
79
+ readonly pluginName?: string;
80
+ }
81
+ ```
82
+
83
+ ## Supported Tools
84
+
85
+ The connector supports all core sqlew tools:
86
+ - `decision` - Architecture decision records
87
+ - `constraint` - Project constraints
88
+ - `suggest` - Decision suggestions
89
+
90
+ Some actions are handled locally (no network required):
91
+ - `help` actions
92
+ - `example` actions
93
+ - `use_case` actions
94
+
95
+ ## Version Compatibility
96
+
97
+ | saas-connector | sqlew (min) |
98
+ |----------------|-------------|
99
+ | 1.0.x | 4.4.0+ |
100
+
101
+ ## Development
102
+
103
+ ```bash
104
+ # Install dependencies
105
+ npm install
106
+
107
+ # Build
108
+ npm run build
109
+
110
+ # Type check
111
+ npm run typecheck
112
+ ```
113
+
114
+ ## License
115
+
116
+ Apache License 2.0 - See [LICENSE](LICENSE) for details.
117
+
118
+ ## Links
119
+
120
+ - [sqlew (main package)](https://github.com/sqlew-io/sqlew)
121
+ - [sqlew-plugin](https://github.com/sqlew-io/sqlew-plugin)
122
+ - [Issues](https://github.com/sqlew-io/sqlew-saas-connector/issues)
@@ -0,0 +1,6 @@
1
+ export declare class AuthManager {
2
+ private apiKey;
3
+ constructor(apiKey: string);
4
+ getAuthorizationHeader(): string;
5
+ }
6
+ //# sourceMappingURL=auth-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../../src/auth/auth-manager.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAMlC,sBAAsB,IAAI,MAAM;CAGjC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var auth_manager_exports = {};
20
+ __export(auth_manager_exports, {
21
+ AuthManager: () => AuthManager
22
+ });
23
+ module.exports = __toCommonJS(auth_manager_exports);
24
+ class AuthManager {
25
+ constructor(apiKey) {
26
+ this.apiKey = apiKey;
27
+ if (!apiKey || apiKey.trim() === "") {
28
+ throw new Error("API key is required");
29
+ }
30
+ }
31
+ getAuthorizationHeader() {
32
+ return `Bearer ${this.apiKey}`;
33
+ }
34
+ }
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ AuthManager
38
+ });
39
+ //# sourceMappingURL=auth-manager.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/auth/auth-manager.ts"],
4
+ "sourcesContent": ["export class AuthManager {\r\n constructor(private apiKey: string) {\r\n if (!apiKey || apiKey.trim() === '') {\r\n throw new Error('API key is required');\r\n }\r\n }\r\n\r\n getAuthorizationHeader(): string {\r\n return `Bearer ${this.apiKey}`;\r\n }\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,YAAY;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAClB,QAAI,CAAC,UAAU,OAAO,KAAK,MAAM,IAAI;AACnC,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,yBAAiC;AAC/B,WAAO,UAAU,KAAK,MAAM;AAAA,EAC9B;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,20 @@
1
+ import type { CloudConfig, ToolBackend, HealthCheckResult } from '../client/types';
2
+ export declare class SaaSBackend implements ToolBackend {
3
+ readonly backendType: "saas";
4
+ readonly pluginName = "saas-connector";
5
+ private httpClient;
6
+ constructor(config: CloudConfig);
7
+ execute<T>(tool: string, action: string, params: Record<string, unknown>): Promise<T>;
8
+ /**
9
+ * Normalize params for SaaS API compatibility
10
+ * Maps client param names to SaaS API expected names
11
+ */
12
+ private normalizeParams;
13
+ healthCheck(): Promise<HealthCheckResult>;
14
+ disconnect(): Promise<void>;
15
+ /**
16
+ * Set agent name for X-Agent header (called after MCP handshake)
17
+ */
18
+ setAgentName(name: string): void;
19
+ }
20
+ //# sourceMappingURL=saas-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saas-backend.d.ts","sourceRoot":"","sources":["../../src/backend/saas-backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,qBAAa,WAAY,YAAW,WAAW;IAC7C,QAAQ,CAAC,WAAW,EAAG,MAAM,CAAU;IACvC,QAAQ,CAAC,UAAU,oBAAoB;IAEvC,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,EAAE,WAAW;IAUzB,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC;IA2Bb;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkBjB,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiBzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGjC"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var saas_backend_exports = {};
20
+ __export(saas_backend_exports, {
21
+ SaaSBackend: () => SaaSBackend
22
+ });
23
+ module.exports = __toCommonJS(saas_backend_exports);
24
+ var import_http_client = require("../client/http-client");
25
+ var import_auth_manager = require("../auth/auth-manager");
26
+ var import_api_error = require("../errors/api-error");
27
+ var import_constants = require("../config/constants");
28
+ class SaaSBackend {
29
+ backendType = "saas";
30
+ pluginName = "saas-connector";
31
+ httpClient;
32
+ constructor(config) {
33
+ const authManager = new import_auth_manager.AuthManager(config.apiKey);
34
+ this.httpClient = new import_http_client.HttpClient(
35
+ authManager,
36
+ config.projectName,
37
+ config.projectId,
38
+ config.connectionIdentity
39
+ );
40
+ }
41
+ async execute(tool, action, params) {
42
+ if ((0, import_constants.isLocalOnlyAction)(tool, action)) {
43
+ throw new import_api_error.ApiError(
44
+ "LOCAL_ONLY_ACTION",
45
+ `Action '${tool}.${action}' should be handled locally (no DB access required)`,
46
+ 200
47
+ // Not an error, just a signal to fallback
48
+ );
49
+ }
50
+ if (!import_constants.SUPPORTED_TOOLS.includes(tool)) {
51
+ throw new import_api_error.ApiError(
52
+ "UNSUPPORTED_TOOL",
53
+ `Tool '${tool}' is not supported in SaaS mode. Supported tools: ${import_constants.SUPPORTED_TOOLS.join(", ")}`,
54
+ 400
55
+ );
56
+ }
57
+ const normalizedParams = this.normalizeParams(tool, action, params);
58
+ const endpoint = `/api/v1/${tool}/${action}`;
59
+ return await this.httpClient.post(endpoint, normalizedParams);
60
+ }
61
+ /**
62
+ * Normalize params for SaaS API compatibility
63
+ * Maps client param names to SaaS API expected names
64
+ */
65
+ normalizeParams(tool, action, params) {
66
+ const result = { ...params };
67
+ if (tool === "constraint" && (action === "deactivate" || action === "activate")) {
68
+ if ("constraint_id" in result && !("id" in result)) {
69
+ result.id = result.constraint_id;
70
+ delete result.constraint_id;
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ async healthCheck() {
76
+ const start = Date.now();
77
+ try {
78
+ await this.httpClient.get("/health");
79
+ return {
80
+ ok: true,
81
+ latency: Date.now() - start
82
+ };
83
+ } catch (error) {
84
+ return {
85
+ ok: false,
86
+ latency: Date.now() - start,
87
+ message: error instanceof Error ? error.message : String(error)
88
+ };
89
+ }
90
+ }
91
+ async disconnect() {
92
+ }
93
+ /**
94
+ * Set agent name for X-Agent header (called after MCP handshake)
95
+ */
96
+ setAgentName(name) {
97
+ this.httpClient.setAgentName(name);
98
+ }
99
+ }
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ SaaSBackend
103
+ });
104
+ //# sourceMappingURL=saas-backend.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/backend/saas-backend.ts"],
4
+ "sourcesContent": ["import { HttpClient } from '../client/http-client';\r\nimport { AuthManager } from '../auth/auth-manager';\r\nimport { ApiError } from '../errors/api-error';\r\nimport { SUPPORTED_TOOLS, isLocalOnlyAction } from '../config/constants';\r\nimport type {\r\n CloudConfig,\r\n ToolBackend,\r\n HealthCheckResult,\r\n} from '../client/types';\r\n\r\nexport class SaaSBackend implements ToolBackend {\r\n readonly backendType = 'saas' as const;\r\n readonly pluginName = 'saas-connector';\r\n\r\n private httpClient: HttpClient;\r\n\r\n constructor(config: CloudConfig) {\r\n const authManager = new AuthManager(config.apiKey);\r\n this.httpClient = new HttpClient(\r\n authManager,\r\n config.projectName,\r\n config.projectId,\r\n config.connectionIdentity\r\n );\r\n }\r\n\r\n async execute<T>(\r\n tool: string,\r\n action: string,\r\n params: Record<string, unknown>\r\n ): Promise<T> {\r\n // Check if this action should be handled locally (no DB access required)\r\n if (isLocalOnlyAction(tool, action)) {\r\n throw new ApiError(\r\n 'LOCAL_ONLY_ACTION',\r\n `Action '${tool}.${action}' should be handled locally (no DB access required)`,\r\n 200 // Not an error, just a signal to fallback\r\n );\r\n }\r\n\r\n // Validate supported tools\r\n if (!SUPPORTED_TOOLS.includes(tool as (typeof SUPPORTED_TOOLS)[number])) {\r\n throw new ApiError(\r\n 'UNSUPPORTED_TOOL',\r\n `Tool '${tool}' is not supported in SaaS mode. Supported tools: ${SUPPORTED_TOOLS.join(', ')}`,\r\n 400\r\n );\r\n }\r\n\r\n // Normalize params for SaaS API compatibility\r\n const normalizedParams = this.normalizeParams(tool, action, params);\r\n\r\n // Call SaaS API\r\n const endpoint = `/api/v1/${tool}/${action}`;\r\n return await this.httpClient.post<T>(endpoint, normalizedParams);\r\n }\r\n\r\n /**\r\n * Normalize params for SaaS API compatibility\r\n * Maps client param names to SaaS API expected names\r\n */\r\n private normalizeParams(\r\n tool: string,\r\n action: string,\r\n params: Record<string, unknown>\r\n ): Record<string, unknown> {\r\n const result = { ...params };\r\n\r\n // constraint.deactivate/activate: constraint_id \u2192 id\r\n if (tool === 'constraint' && (action === 'deactivate' || action === 'activate')) {\r\n if ('constraint_id' in result && !('id' in result)) {\r\n result.id = result.constraint_id;\r\n delete result.constraint_id;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async healthCheck(): Promise<HealthCheckResult> {\r\n const start = Date.now();\r\n try {\r\n await this.httpClient.get<{ status: string }>('/health');\r\n return {\r\n ok: true,\r\n latency: Date.now() - start,\r\n };\r\n } catch (error) {\r\n return {\r\n ok: false,\r\n latency: Date.now() - start,\r\n message: error instanceof Error ? error.message : String(error),\r\n };\r\n }\r\n }\r\n\r\n async disconnect(): Promise<void> {\r\n // HTTP client doesn't need explicit disconnect\r\n }\r\n\r\n /**\r\n * Set agent name for X-Agent header (called after MCP handshake)\r\n */\r\n setAgentName(name: string): void {\r\n this.httpClient.setAgentName(name);\r\n }\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAC3B,0BAA4B;AAC5B,uBAAyB;AACzB,uBAAmD;AAO5C,MAAM,YAAmC;AAAA,EACrC,cAAc;AAAA,EACd,aAAa;AAAA,EAEd;AAAA,EAER,YAAY,QAAqB;AAC/B,UAAM,cAAc,IAAI,gCAAY,OAAO,MAAM;AACjD,SAAK,aAAa,IAAI;AAAA,MACpB;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,QACJ,MACA,QACA,QACY;AAEZ,YAAI,oCAAkB,MAAM,MAAM,GAAG;AACnC,YAAM,IAAI;AAAA,QACR;AAAA,QACA,WAAW,IAAI,IAAI,MAAM;AAAA,QACzB;AAAA;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAAC,iCAAgB,SAAS,IAAwC,GAAG;AACvE,YAAM,IAAI;AAAA,QACR;AAAA,QACA,SAAS,IAAI,qDAAqD,iCAAgB,KAAK,IAAI,CAAC;AAAA,QAC5F;AAAA,MACF;AAAA,IACF;AAGA,UAAM,mBAAmB,KAAK,gBAAgB,MAAM,QAAQ,MAAM;AAGlE,UAAM,WAAW,WAAW,IAAI,IAAI,MAAM;AAC1C,WAAO,MAAM,KAAK,WAAW,KAAQ,UAAU,gBAAgB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,gBACN,MACA,QACA,QACyB;AACzB,UAAM,SAAS,EAAE,GAAG,OAAO;AAG3B,QAAI,SAAS,iBAAiB,WAAW,gBAAgB,WAAW,aAAa;AAC/E,UAAI,mBAAmB,UAAU,EAAE,QAAQ,SAAS;AAClD,eAAO,KAAK,OAAO;AACnB,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,cAA0C;AAC9C,UAAM,QAAQ,KAAK,IAAI;AACvB,QAAI;AACF,YAAM,KAAK,WAAW,IAAwB,SAAS;AACvD,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS,KAAK,IAAI,IAAI;AAAA,MACxB;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS,KAAK,IAAI,IAAI;AAAA,QACtB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,aAA4B;AAAA,EAElC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAoB;AAC/B,SAAK,WAAW,aAAa,IAAI;AAAA,EACnC;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,33 @@
1
+ import { AuthManager } from '../auth/auth-manager';
2
+ import type { ConnectionIdentity } from './types';
3
+ export declare class HttpClient {
4
+ private authManager;
5
+ private projectName?;
6
+ private projectId?;
7
+ private connectionIdentity?;
8
+ private agentName?;
9
+ constructor(authManager: AuthManager, projectName?: string | undefined, projectId?: string | undefined, connectionIdentity?: ConnectionIdentity | undefined);
10
+ /**
11
+ * Set agent name for X-Agent header (called after MCP handshake)
12
+ */
13
+ setAgentName(name: string): void;
14
+ post<T>(path: string, body: Record<string, unknown>): Promise<T>;
15
+ get<T>(path: string): Promise<T>;
16
+ private executeWithRetry;
17
+ private handleResponse;
18
+ private calculateRetryDelay;
19
+ private sleep;
20
+ }
21
+ /**
22
+ * Resolve project name to UUID via /api/v1/project/resolve
23
+ *
24
+ * This is a standalone function used before HttpClient is fully initialized,
25
+ * since we need the projectId to construct HttpClient.
26
+ *
27
+ * @param apiKey - API key for authentication
28
+ * @param projectName - Project name from config.toml
29
+ * @returns Resolved project UUID
30
+ * @throws ApiError on authentication or resolution failure
31
+ */
32
+ export declare function resolveProject(apiKey: string, projectName: string): Promise<string>;
33
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,KAAK,EAAe,kBAAkB,EAA0B,MAAM,SAAS,CAAC;AAEvF,qBAAa,UAAU;IAInB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,kBAAkB,CAAC;IAN7B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAGjB,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAGjD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1B,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuChE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAwBxB,gBAAgB;YAuChB,cAAc;IA4C5B,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,KAAK;CAGd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var http_client_exports = {};
20
+ __export(http_client_exports, {
21
+ HttpClient: () => HttpClient,
22
+ resolveProject: () => resolveProject
23
+ });
24
+ module.exports = __toCommonJS(http_client_exports);
25
+ var import_api_error = require("../errors/api-error");
26
+ var import_constants = require("../config/constants");
27
+ class HttpClient {
28
+ constructor(authManager, projectName, projectId, connectionIdentity) {
29
+ this.authManager = authManager;
30
+ this.projectName = projectName;
31
+ this.projectId = projectId;
32
+ this.connectionIdentity = connectionIdentity;
33
+ }
34
+ agentName;
35
+ /**
36
+ * Set agent name for X-Agent header (called after MCP handshake)
37
+ */
38
+ setAgentName(name) {
39
+ this.agentName = name;
40
+ }
41
+ async post(path, body) {
42
+ const url = `${import_constants.API_ENDPOINT}${path}`;
43
+ const requestBody = {
44
+ project_id: this.projectId,
45
+ project_name: this.projectName,
46
+ // Connection identification for seat-based billing (v5.0.0+)
47
+ ...this.connectionIdentity && {
48
+ connection_hash: this.connectionIdentity.connectionHash,
49
+ connection_display: {
50
+ environment: this.connectionIdentity.environment,
51
+ path_suffix: this.connectionIdentity.pathSuffix
52
+ }
53
+ },
54
+ ...body
55
+ };
56
+ return await this.executeWithRetry(async () => {
57
+ const controller = new AbortController();
58
+ const timeoutId = setTimeout(() => controller.abort(), import_constants.REQUEST_TIMEOUT);
59
+ try {
60
+ const response = await fetch(url, {
61
+ method: "POST",
62
+ headers: {
63
+ Authorization: this.authManager.getAuthorizationHeader(),
64
+ "Content-Type": "application/json",
65
+ ...this.agentName && { "X-Agent": this.agentName }
66
+ },
67
+ body: JSON.stringify(requestBody),
68
+ signal: controller.signal
69
+ });
70
+ return await this.handleResponse(response);
71
+ } finally {
72
+ clearTimeout(timeoutId);
73
+ }
74
+ });
75
+ }
76
+ async get(path) {
77
+ const url = `${import_constants.API_ENDPOINT}${path}`;
78
+ return await this.executeWithRetry(async () => {
79
+ const controller = new AbortController();
80
+ const timeoutId = setTimeout(() => controller.abort(), import_constants.REQUEST_TIMEOUT);
81
+ try {
82
+ const response = await fetch(url, {
83
+ method: "GET",
84
+ headers: {
85
+ Authorization: this.authManager.getAuthorizationHeader(),
86
+ ...this.agentName && { "X-Agent": this.agentName }
87
+ },
88
+ signal: controller.signal
89
+ });
90
+ return await this.handleResponse(response);
91
+ } finally {
92
+ clearTimeout(timeoutId);
93
+ }
94
+ });
95
+ }
96
+ async executeWithRetry(operation, retryCount = 0) {
97
+ try {
98
+ return await operation();
99
+ } catch (error) {
100
+ if (error instanceof Error && error.name === "AbortError") {
101
+ throw new import_api_error.ApiError("TIMEOUT", "Request timed out", 408);
102
+ }
103
+ if (error instanceof TypeError && error.message.includes("fetch")) {
104
+ throw new import_api_error.ApiError(
105
+ "NETWORK_ERROR",
106
+ `Network error: ${error.message}`,
107
+ 0
108
+ );
109
+ }
110
+ if (error instanceof import_api_error.ApiError && error.statusCode === 429 && retryCount < import_constants.MAX_RETRIES) {
111
+ const delay = this.calculateRetryDelay(
112
+ retryCount,
113
+ error.details?.retryAfter
114
+ );
115
+ await this.sleep(delay);
116
+ return this.executeWithRetry(operation, retryCount + 1);
117
+ }
118
+ throw error;
119
+ }
120
+ }
121
+ async handleResponse(response) {
122
+ let body;
123
+ try {
124
+ body = await response.json();
125
+ } catch {
126
+ if (!response.ok) {
127
+ throw new import_api_error.ApiError(
128
+ "INTERNAL_ERROR",
129
+ `HTTP ${response.status}: ${response.statusText}`,
130
+ response.status
131
+ );
132
+ }
133
+ throw new import_api_error.ApiError(
134
+ "INVALID_RESPONSE",
135
+ "Invalid JSON response from server",
136
+ 500
137
+ );
138
+ }
139
+ if (!response.ok) {
140
+ const retryAfter = response.headers.get("Retry-After");
141
+ throw new import_api_error.ApiError(
142
+ body.error?.code || "UNKNOWN_ERROR",
143
+ body.error?.message || `HTTP ${response.status}`,
144
+ response.status,
145
+ retryAfter ? { retryAfter } : void 0
146
+ );
147
+ }
148
+ if (!body.success) {
149
+ throw new import_api_error.ApiError(
150
+ body.error?.code || "API_ERROR",
151
+ body.error?.message || "Unknown API error",
152
+ 500
153
+ );
154
+ }
155
+ return body.data;
156
+ }
157
+ calculateRetryDelay(retryCount, retryAfter) {
158
+ if (retryAfter) {
159
+ const seconds = parseInt(retryAfter, 10);
160
+ if (!isNaN(seconds) && seconds > 0) {
161
+ return Math.min(seconds * 1e3, import_constants.MAX_RETRY_DELAY);
162
+ }
163
+ }
164
+ return Math.min(
165
+ import_constants.INITIAL_RETRY_DELAY * Math.pow(2, retryCount),
166
+ import_constants.MAX_RETRY_DELAY
167
+ );
168
+ }
169
+ sleep(ms) {
170
+ return new Promise((resolve) => setTimeout(resolve, ms));
171
+ }
172
+ }
173
+ async function resolveProject(apiKey, projectName) {
174
+ const url = `${import_constants.API_ENDPOINT}/api/v1/project/resolve`;
175
+ const controller = new AbortController();
176
+ const timeoutId = setTimeout(() => controller.abort(), import_constants.REQUEST_TIMEOUT);
177
+ try {
178
+ const response = await fetch(url, {
179
+ method: "POST",
180
+ headers: {
181
+ Authorization: `Bearer ${apiKey}`,
182
+ "Content-Type": "application/json"
183
+ },
184
+ body: JSON.stringify({ project_name: projectName }),
185
+ signal: controller.signal
186
+ });
187
+ if (!response.ok) {
188
+ let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
189
+ try {
190
+ const body2 = await response.json();
191
+ errorMessage = body2.error?.message || errorMessage;
192
+ } catch {
193
+ }
194
+ throw new import_api_error.ApiError("PROJECT_RESOLVE_FAILED", errorMessage, response.status);
195
+ }
196
+ const body = await response.json();
197
+ if (!body.success || !body.data?.project_id) {
198
+ throw new import_api_error.ApiError(
199
+ "PROJECT_RESOLVE_FAILED",
200
+ body.error?.message || "Failed to resolve project",
201
+ 500
202
+ );
203
+ }
204
+ return body.data.project_id;
205
+ } catch (error) {
206
+ if (error instanceof import_api_error.ApiError) {
207
+ throw error;
208
+ }
209
+ if (error instanceof Error && error.name === "AbortError") {
210
+ throw new import_api_error.ApiError("TIMEOUT", "Project resolve request timed out", 408);
211
+ }
212
+ throw new import_api_error.ApiError(
213
+ "NETWORK_ERROR",
214
+ `Failed to resolve project: ${error instanceof Error ? error.message : String(error)}`,
215
+ 0
216
+ );
217
+ } finally {
218
+ clearTimeout(timeoutId);
219
+ }
220
+ }
221
+ // Annotate the CommonJS export names for ESM import in node:
222
+ 0 && (module.exports = {
223
+ HttpClient,
224
+ resolveProject
225
+ });
226
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/client/http-client.ts"],
4
+ "sourcesContent": ["import { AuthManager } from '../auth/auth-manager';\r\nimport { ApiError } from '../errors/api-error';\r\nimport {\r\n API_ENDPOINT,\r\n MAX_RETRIES,\r\n INITIAL_RETRY_DELAY,\r\n MAX_RETRY_DELAY,\r\n REQUEST_TIMEOUT,\r\n} from '../config/constants';\r\nimport type { ApiResponse, ConnectionIdentity, ProjectResolveResponse } from './types';\r\n\r\nexport class HttpClient {\r\n private agentName?: string;\r\n\r\n constructor(\r\n private authManager: AuthManager,\r\n private projectName?: string,\r\n private projectId?: string,\r\n private connectionIdentity?: ConnectionIdentity\r\n ) {}\r\n\r\n /**\r\n * Set agent name for X-Agent header (called after MCP handshake)\r\n */\r\n setAgentName(name: string): void {\r\n this.agentName = name;\r\n }\r\n\r\n async post<T>(path: string, body: Record<string, unknown>): Promise<T> {\r\n const url = `${API_ENDPOINT}${path}`;\r\n const requestBody = {\r\n project_id: this.projectId,\r\n project_name: this.projectName,\r\n // Connection identification for seat-based billing (v5.0.0+)\r\n ...(this.connectionIdentity && {\r\n connection_hash: this.connectionIdentity.connectionHash,\r\n connection_display: {\r\n environment: this.connectionIdentity.environment,\r\n path_suffix: this.connectionIdentity.pathSuffix,\r\n },\r\n }),\r\n ...body,\r\n };\r\n\r\n return await this.executeWithRetry<T>(async () => {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: this.authManager.getAuthorizationHeader(),\r\n 'Content-Type': 'application/json',\r\n ...(this.agentName && { 'X-Agent': this.agentName }),\r\n },\r\n body: JSON.stringify(requestBody),\r\n signal: controller.signal,\r\n });\r\n\r\n return await this.handleResponse<T>(response);\r\n } finally {\r\n clearTimeout(timeoutId);\r\n }\r\n });\r\n }\r\n\r\n async get<T>(path: string): Promise<T> {\r\n const url = `${API_ENDPOINT}${path}`;\r\n\r\n return await this.executeWithRetry<T>(async () => {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: this.authManager.getAuthorizationHeader(),\r\n ...(this.agentName && { 'X-Agent': this.agentName }),\r\n },\r\n signal: controller.signal,\r\n });\r\n\r\n return await this.handleResponse<T>(response);\r\n } finally {\r\n clearTimeout(timeoutId);\r\n }\r\n });\r\n }\r\n\r\n private async executeWithRetry<T>(\r\n operation: () => Promise<T>,\r\n retryCount = 0\r\n ): Promise<T> {\r\n try {\r\n return await operation();\r\n } catch (error) {\r\n // Handle abort error (timeout)\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new ApiError('TIMEOUT', 'Request timed out', 408);\r\n }\r\n\r\n // Handle network errors\r\n if (error instanceof TypeError && error.message.includes('fetch')) {\r\n throw new ApiError(\r\n 'NETWORK_ERROR',\r\n `Network error: ${error.message}`,\r\n 0\r\n );\r\n }\r\n\r\n // Retry only on 429 (rate limited)\r\n if (\r\n error instanceof ApiError &&\r\n error.statusCode === 429 &&\r\n retryCount < MAX_RETRIES\r\n ) {\r\n const delay = this.calculateRetryDelay(\r\n retryCount,\r\n error.details?.retryAfter as string | undefined\r\n );\r\n await this.sleep(delay);\r\n return this.executeWithRetry(operation, retryCount + 1);\r\n }\r\n\r\n throw error;\r\n }\r\n }\r\n\r\n private async handleResponse<T>(response: Response): Promise<T> {\r\n // Try to parse response body\r\n let body: ApiResponse<T>;\r\n try {\r\n body = (await response.json()) as ApiResponse<T>;\r\n } catch {\r\n // If response is not JSON\r\n if (!response.ok) {\r\n throw new ApiError(\r\n 'INTERNAL_ERROR',\r\n `HTTP ${response.status}: ${response.statusText}`,\r\n response.status\r\n );\r\n }\r\n throw new ApiError(\r\n 'INVALID_RESPONSE',\r\n 'Invalid JSON response from server',\r\n 500\r\n );\r\n }\r\n\r\n // Handle HTTP errors\r\n if (!response.ok) {\r\n const retryAfter = response.headers.get('Retry-After');\r\n throw new ApiError(\r\n body.error?.code || 'UNKNOWN_ERROR',\r\n body.error?.message || `HTTP ${response.status}`,\r\n response.status,\r\n retryAfter ? { retryAfter } : undefined\r\n );\r\n }\r\n\r\n // Handle API-level errors\r\n if (!body.success) {\r\n throw new ApiError(\r\n body.error?.code || 'API_ERROR',\r\n body.error?.message || 'Unknown API error',\r\n 500\r\n );\r\n }\r\n\r\n return body.data as T;\r\n }\r\n\r\n private calculateRetryDelay(\r\n retryCount: number,\r\n retryAfter?: string\r\n ): number {\r\n // Use Retry-After header if available\r\n if (retryAfter) {\r\n const seconds = parseInt(retryAfter, 10);\r\n if (!isNaN(seconds) && seconds > 0) {\r\n return Math.min(seconds * 1000, MAX_RETRY_DELAY);\r\n }\r\n }\r\n\r\n // Exponential backoff: 1s, 2s, 4s, ...\r\n return Math.min(\r\n INITIAL_RETRY_DELAY * Math.pow(2, retryCount),\r\n MAX_RETRY_DELAY\r\n );\r\n }\r\n\r\n private sleep(ms: number): Promise<void> {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n }\r\n}\r\n\r\n/**\r\n * Resolve project name to UUID via /api/v1/project/resolve\r\n *\r\n * This is a standalone function used before HttpClient is fully initialized,\r\n * since we need the projectId to construct HttpClient.\r\n *\r\n * @param apiKey - API key for authentication\r\n * @param projectName - Project name from config.toml\r\n * @returns Resolved project UUID\r\n * @throws ApiError on authentication or resolution failure\r\n */\r\nexport async function resolveProject(\r\n apiKey: string,\r\n projectName: string\r\n): Promise<string> {\r\n const url = `${API_ENDPOINT}/api/v1/project/resolve`;\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ project_name: projectName }),\r\n signal: controller.signal,\r\n });\r\n\r\n if (!response.ok) {\r\n let errorMessage = `HTTP ${response.status}: ${response.statusText}`;\r\n try {\r\n const body = (await response.json()) as ApiResponse<unknown>;\r\n errorMessage = body.error?.message || errorMessage;\r\n } catch {\r\n // Ignore JSON parse error\r\n }\r\n throw new ApiError('PROJECT_RESOLVE_FAILED', errorMessage, response.status);\r\n }\r\n\r\n const body = (await response.json()) as ApiResponse<ProjectResolveResponse>;\r\n if (!body.success || !body.data?.project_id) {\r\n throw new ApiError(\r\n 'PROJECT_RESOLVE_FAILED',\r\n body.error?.message || 'Failed to resolve project',\r\n 500\r\n );\r\n }\r\n\r\n return body.data.project_id;\r\n } catch (error) {\r\n if (error instanceof ApiError) {\r\n throw error;\r\n }\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new ApiError('TIMEOUT', 'Project resolve request timed out', 408);\r\n }\r\n throw new ApiError(\r\n 'NETWORK_ERROR',\r\n `Failed to resolve project: ${error instanceof Error ? error.message : String(error)}`,\r\n 0\r\n );\r\n } finally {\r\n clearTimeout(timeoutId);\r\n }\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": ["body"]
7
+ }