codetrellis 0.0.0-stage → 0.3.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 (448) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +27 -2
  3. package/bin/codetrellis.mjs +4 -0
  4. package/package.json +41 -4
  5. package/reader/material-reader.mjs +130346 -0
  6. package/resources/tree-sitter/README.md +150 -0
  7. package/resources/tree-sitter/tree-sitter-c-sharp.wasm +0 -0
  8. package/resources/tree-sitter/tree-sitter-go.wasm +0 -0
  9. package/resources/tree-sitter/tree-sitter-java.wasm +0 -0
  10. package/resources/tree-sitter/tree-sitter-javascript.wasm +0 -0
  11. package/resources/tree-sitter/tree-sitter-kotlin.wasm +0 -0
  12. package/resources/tree-sitter/tree-sitter-php.wasm +0 -0
  13. package/resources/tree-sitter/tree-sitter-python.wasm +0 -0
  14. package/resources/tree-sitter/tree-sitter-ruby.wasm +0 -0
  15. package/resources/tree-sitter/tree-sitter-rust.wasm +0 -0
  16. package/resources/tree-sitter/tree-sitter-swift.wasm +0 -0
  17. package/resources/tree-sitter/tree-sitter-tsx.wasm +0 -0
  18. package/resources/tree-sitter/tree-sitter-typescript.wasm +0 -0
  19. package/resources/tree-sitter/tree-sitter.wasm +0 -0
  20. package/src/backend/agent/claude-code-watcher.js +270 -0
  21. package/src/backend/index.js +8 -0
  22. package/src/backend/lib/sha256-file.js +39 -0
  23. package/src/backend/lib/zip-entries.js +98 -0
  24. package/src/backend/lifecycle.js +102 -0
  25. package/src/backend/mcp/binding-headers.js +54 -0
  26. package/src/backend/mcp/client-identity.js +44 -0
  27. package/src/backend/mcp/connector/command.js +110 -0
  28. package/src/backend/mcp/connector/core.js +278 -0
  29. package/src/backend/mcp/connector/files.js +121 -0
  30. package/src/backend/mcp/connector/hook.js +284 -0
  31. package/src/backend/mcp/connector/main.js +126 -0
  32. package/src/backend/mcp/connector/sse-upstream.js +152 -0
  33. package/src/backend/mcp/helpers.js +43 -0
  34. package/src/backend/mcp/prompt-builders.js +104 -0
  35. package/src/backend/mcp/resources.js +197 -0
  36. package/src/backend/mcp/server.js +813 -0
  37. package/src/backend/mcp/skill-guide.js +1528 -0
  38. package/src/backend/mcp/tools/architecture-tools.js +273 -0
  39. package/src/backend/mcp/tools/audio-tools.js +117 -0
  40. package/src/backend/mcp/tools/awareness-tools.js +623 -0
  41. package/src/backend/mcp/tools/budget-tools.js +185 -0
  42. package/src/backend/mcp/tools/channel-tools.js +205 -0
  43. package/src/backend/mcp/tools/contribution-tools.js +181 -0
  44. package/src/backend/mcp/tools/drift-tools.js +252 -0
  45. package/src/backend/mcp/tools/git-tools.js +316 -0
  46. package/src/backend/mcp/tools/governance-tools.js +175 -0
  47. package/src/backend/mcp/tools/graph-tools.js +181 -0
  48. package/src/backend/mcp/tools/intake-tools.js +244 -0
  49. package/src/backend/mcp/tools/mobile-tools.js +118 -0
  50. package/src/backend/mcp/tools/peer-tools.js +330 -0
  51. package/src/backend/mcp/tools/plan-item-tools.js +1601 -0
  52. package/src/backend/mcp/tools/plan-tools.js +680 -0
  53. package/src/backend/mcp/tools/presence-tools.js +185 -0
  54. package/src/backend/mcp/tools/project-config-tools.js +150 -0
  55. package/src/backend/mcp/tools/review-tools.js +172 -0
  56. package/src/backend/mcp/tools/session-tools.js +554 -0
  57. package/src/backend/mcp/tools/system-docs-tools.js +168 -0
  58. package/src/backend/mcp/tools/terminal-tools.js +186 -0
  59. package/src/backend/mcp/tools/test-tools.js +117 -0
  60. package/src/backend/mcp/tools/ui-tools.js +356 -0
  61. package/src/backend/mcp/types.js +15 -0
  62. package/src/backend/middleware/local-auth.js +116 -0
  63. package/src/backend/server.js +5951 -0
  64. package/src/backend/services/agent-event-log.js +350 -0
  65. package/src/backend/services/architecture-rule.js +584 -0
  66. package/src/backend/services/architecture-rules.js +275 -0
  67. package/src/backend/services/artefact-content-service.js +181 -0
  68. package/src/backend/services/artefact-service.js +305 -0
  69. package/src/backend/services/artefact-watcher.js +167 -0
  70. package/src/backend/services/ast-parser.js +327 -0
  71. package/src/backend/services/audio-buffer-service.js +152 -0
  72. package/src/backend/services/awareness-notices.js +139 -0
  73. package/src/backend/services/awareness-replies.js +194 -0
  74. package/src/backend/services/awareness-service.js +344 -0
  75. package/src/backend/services/awareness-signals.js +267 -0
  76. package/src/backend/services/baseline-store.js +83 -0
  77. package/src/backend/services/branch-workstreams.js +341 -0
  78. package/src/backend/services/breakpoint-service.js +584 -0
  79. package/src/backend/services/brief-service.js +299 -0
  80. package/src/backend/services/budget-service.js +528 -0
  81. package/src/backend/services/callsites/base.js +15 -0
  82. package/src/backend/services/callsites/csharp.js +148 -0
  83. package/src/backend/services/callsites/go.js +163 -0
  84. package/src/backend/services/callsites/index.js +53 -0
  85. package/src/backend/services/callsites/kotlin.js +123 -0
  86. package/src/backend/services/callsites/process-env.js +125 -0
  87. package/src/backend/services/callsites/python.js +91 -0
  88. package/src/backend/services/callsites/ruby.js +164 -0
  89. package/src/backend/services/callsites/shared.js +198 -0
  90. package/src/backend/services/callsites/swift.js +115 -0
  91. package/src/backend/services/callsites/typescript.js +87 -0
  92. package/src/backend/services/capability-token.js +108 -0
  93. package/src/backend/services/change-check.js +156 -0
  94. package/src/backend/services/channel-dispatcher-service.js +235 -0
  95. package/src/backend/services/channel-event-file-service.js +125 -0
  96. package/src/backend/services/channel-event-service.js +297 -0
  97. package/src/backend/services/check-runs.js +177 -0
  98. package/src/backend/services/checkout-identity.js +73 -0
  99. package/src/backend/services/claude-code-parallel.js +221 -0
  100. package/src/backend/services/claude-desktop-config.js +186 -0
  101. package/src/backend/services/cli-install.js +249 -0
  102. package/src/backend/services/clock.js +57 -0
  103. package/src/backend/services/cloud-files.js +191 -0
  104. package/src/backend/services/coalesce.js +50 -0
  105. package/src/backend/services/code-breakpoints.js +291 -0
  106. package/src/backend/services/comment-service.js +168 -0
  107. package/src/backend/services/commit-attribution.js +134 -0
  108. package/src/backend/services/commit-edges.js +99 -0
  109. package/src/backend/services/confined-fs.js +241 -0
  110. package/src/backend/services/conformity-gate.js +132 -0
  111. package/src/backend/services/contribution-service.js +409 -0
  112. package/src/backend/services/coverage-service.js +173 -0
  113. package/src/backend/services/criteria-service.js +721 -0
  114. package/src/backend/services/criterion-checks.js +387 -0
  115. package/src/backend/services/criterion-loop-service.js +411 -0
  116. package/src/backend/services/cross-system-service.js +231 -0
  117. package/src/backend/services/database.js +916 -0
  118. package/src/backend/services/db-schema.js +1358 -0
  119. package/src/backend/services/deviation-service.js +344 -0
  120. package/src/backend/services/diff-engine.js +168 -0
  121. package/src/backend/services/evidence.js +363 -0
  122. package/src/backend/services/external-intake-service.js +269 -0
  123. package/src/backend/services/external-pointer-service.js +195 -0
  124. package/src/backend/services/external-refs-service.js +214 -0
  125. package/src/backend/services/file-history.js +158 -0
  126. package/src/backend/services/file-watcher.js +193 -0
  127. package/src/backend/services/folder-requests.js +118 -0
  128. package/src/backend/services/freeze-service.js +189 -0
  129. package/src/backend/services/gemini-cli-hook.js +172 -0
  130. package/src/backend/services/git-activity-service.js +325 -0
  131. package/src/backend/services/git-blobs.js +70 -0
  132. package/src/backend/services/git-branches.js +357 -0
  133. package/src/backend/services/git-checkout.js +153 -0
  134. package/src/backend/services/git-commit-service.js +91 -0
  135. package/src/backend/services/git-env.js +121 -0
  136. package/src/backend/services/git-identity.js +84 -0
  137. package/src/backend/services/git-refs.js +386 -0
  138. package/src/backend/services/git-safety.js +58 -0
  139. package/src/backend/services/grant-guard.js +67 -0
  140. package/src/backend/services/html-view-policy.js +135 -0
  141. package/src/backend/services/human-decision.js +55 -0
  142. package/src/backend/services/importers.js +159 -0
  143. package/src/backend/services/intent-service.js +105 -0
  144. package/src/backend/services/ipc-dispatcher.js +164 -0
  145. package/src/backend/services/item-git-state.js +208 -0
  146. package/src/backend/services/line-changes.js +232 -0
  147. package/src/backend/services/line-history.js +174 -0
  148. package/src/backend/services/local-api-changes.js +40 -0
  149. package/src/backend/services/logger.js +217 -0
  150. package/src/backend/services/material-footprints.js +203 -0
  151. package/src/backend/services/material-place.js +82 -0
  152. package/src/backend/services/material-reader/docx-markdown.js +198 -0
  153. package/src/backend/services/material-reader/fixtures.test-helper.js +169 -0
  154. package/src/backend/services/material-reader/quote.js +44 -0
  155. package/src/backend/services/material-reader/reader-host.js +202 -0
  156. package/src/backend/services/material-signals.js +141 -0
  157. package/src/backend/services/mcp-capabilities.js +390 -0
  158. package/src/backend/services/mdns-service.js +304 -0
  159. package/src/backend/services/mobile-api-server.js +281 -0
  160. package/src/backend/services/mobile-approvals.js +306 -0
  161. package/src/backend/services/mobile-awareness.js +180 -0
  162. package/src/backend/services/mobile-breakpoints.js +115 -0
  163. package/src/backend/services/mobile-budget.js +98 -0
  164. package/src/backend/services/mobile-freeze.js +106 -0
  165. package/src/backend/services/mobile-proposals.js +100 -0
  166. package/src/backend/services/mobile-rpc-service.js +1289 -0
  167. package/src/backend/services/mobile-workstreams.js +160 -0
  168. package/src/backend/services/monorepo-detector.js +131 -0
  169. package/src/backend/services/other-work.js +45 -0
  170. package/src/backend/services/pack-seal.js +129 -0
  171. package/src/backend/services/paired-device-service.js +192 -0
  172. package/src/backend/services/pairing-server.js +323 -0
  173. package/src/backend/services/pairing-service.js +200 -0
  174. package/src/backend/services/pantry-resolution-service.js +166 -0
  175. package/src/backend/services/parsers/base.js +124 -0
  176. package/src/backend/services/parsers/csharp.js +224 -0
  177. package/src/backend/services/parsers/go.js +180 -0
  178. package/src/backend/services/parsers/index.js +101 -0
  179. package/src/backend/services/parsers/java.js +103 -0
  180. package/src/backend/services/parsers/kotlin.js +252 -0
  181. package/src/backend/services/parsers/php.js +113 -0
  182. package/src/backend/services/parsers/python.js +189 -0
  183. package/src/backend/services/parsers/ruby.js +212 -0
  184. package/src/backend/services/parsers/rust.js +97 -0
  185. package/src/backend/services/parsers/swift.js +221 -0
  186. package/src/backend/services/parsers/typescript.js +235 -0
  187. package/src/backend/services/pattern-scan.js +65 -0
  188. package/src/backend/services/patterns.js +281 -0
  189. package/src/backend/services/peer-audit-service.js +123 -0
  190. package/src/backend/services/peer-auth.js +153 -0
  191. package/src/backend/services/peer-capabilities.js +209 -0
  192. package/src/backend/services/peer-connection-service.js +450 -0
  193. package/src/backend/services/peer-grants.js +33 -0
  194. package/src/backend/services/persistence.js +116 -0
  195. package/src/backend/services/personal-sync-service.js +232 -0
  196. package/src/backend/services/pipeline-approvals.js +72 -0
  197. package/src/backend/services/pipeline.js +232 -0
  198. package/src/backend/services/plan-arrivals.js +68 -0
  199. package/src/backend/services/plan-changes-service.js +273 -0
  200. package/src/backend/services/plan-conflict-service.js +288 -0
  201. package/src/backend/services/plan-dependencies.js +91 -0
  202. package/src/backend/services/plan-doc-guard.js +90 -0
  203. package/src/backend/services/plan-documents-service.js +275 -0
  204. package/src/backend/services/plan-event-service.js +154 -0
  205. package/src/backend/services/plan-file-refs.js +106 -0
  206. package/src/backend/services/plan-file-service.js +1564 -0
  207. package/src/backend/services/plan-history-service.js +156 -0
  208. package/src/backend/services/plan-import-service.js +261 -0
  209. package/src/backend/services/plan-item-service.js +1223 -0
  210. package/src/backend/services/plan-migrate-service.js +395 -0
  211. package/src/backend/services/plan-overlay-service.js +173 -0
  212. package/src/backend/services/plan-phases-service.js +182 -0
  213. package/src/backend/services/plan-progress-service.js +134 -0
  214. package/src/backend/services/plan-review-service.js +262 -0
  215. package/src/backend/services/plan-service.js +682 -0
  216. package/src/backend/services/plan-status.js +113 -0
  217. package/src/backend/services/plan-template-publish-service.js +217 -0
  218. package/src/backend/services/plan-templates-service.js +242 -0
  219. package/src/backend/services/plan-templates.js +1164 -0
  220. package/src/backend/services/planned-overlap-actions.js +200 -0
  221. package/src/backend/services/plans-home.js +224 -0
  222. package/src/backend/services/play-forward.js +256 -0
  223. package/src/backend/services/playback-service.js +117 -0
  224. package/src/backend/services/power-service.js +167 -0
  225. package/src/backend/services/power-signals.js +81 -0
  226. package/src/backend/services/pr-draft-service.js +142 -0
  227. package/src/backend/services/presence-service.js +122 -0
  228. package/src/backend/services/pricing.js +60 -0
  229. package/src/backend/services/project-config-service.js +474 -0
  230. package/src/backend/services/project-scanner.js +184 -0
  231. package/src/backend/services/projection-service.js +69 -0
  232. package/src/backend/services/push-notification-service.js +288 -0
  233. package/src/backend/services/recent-projects-service.js +204 -0
  234. package/src/backend/services/record-chain.js +162 -0
  235. package/src/backend/services/recurrence-rule.js +63 -0
  236. package/src/backend/services/recurring-agent.js +89 -0
  237. package/src/backend/services/recurring-scheduler.js +77 -0
  238. package/src/backend/services/recurring-service.js +276 -0
  239. package/src/backend/services/reference-service.js +169 -0
  240. package/src/backend/services/release-public-key.js +30 -0
  241. package/src/backend/services/release-signature.js +64 -0
  242. package/src/backend/services/remote-audio-service.js +224 -0
  243. package/src/backend/services/remote-interaction-service.js +275 -0
  244. package/src/backend/services/remote-terminal-service.js +324 -0
  245. package/src/backend/services/rendition/child/main.js +76 -0
  246. package/src/backend/services/rendition/engine-host.js +249 -0
  247. package/src/backend/services/rendition/engine-lock.js +39 -0
  248. package/src/backend/services/rendition/engine-lock.json +14 -0
  249. package/src/backend/services/rendition/engine-manifest.js +97 -0
  250. package/src/backend/services/rendition/network-proof.js +73 -0
  251. package/src/backend/services/rendition/rendition-service.js +175 -0
  252. package/src/backend/services/replay-frames.js +387 -0
  253. package/src/backend/services/replay-state.js +201 -0
  254. package/src/backend/services/resolvers/base.js +108 -0
  255. package/src/backend/services/resolvers/csharp.js +109 -0
  256. package/src/backend/services/resolvers/go.js +105 -0
  257. package/src/backend/services/resolvers/index.js +60 -0
  258. package/src/backend/services/resolvers/java.js +63 -0
  259. package/src/backend/services/resolvers/kotlin.js +109 -0
  260. package/src/backend/services/resolvers/php.js +89 -0
  261. package/src/backend/services/resolvers/python.js +154 -0
  262. package/src/backend/services/resolvers/ruby.js +103 -0
  263. package/src/backend/services/resolvers/rust.js +77 -0
  264. package/src/backend/services/resolvers/swift.js +98 -0
  265. package/src/backend/services/resolvers/typescript.js +71 -0
  266. package/src/backend/services/retention.js +54 -0
  267. package/src/backend/services/review-architecture.js +236 -0
  268. package/src/backend/services/review-attest.js +68 -0
  269. package/src/backend/services/review-bundle.js +226 -0
  270. package/src/backend/services/review-graduation.js +93 -0
  271. package/src/backend/services/review-host/bitbucket.js +79 -0
  272. package/src/backend/services/review-host/detect.js +80 -0
  273. package/src/backend/services/review-host/github.js +97 -0
  274. package/src/backend/services/review-host/gitlab.js +77 -0
  275. package/src/backend/services/review-host/host-state.js +103 -0
  276. package/src/backend/services/review-host/http.js +58 -0
  277. package/src/backend/services/review-host/switch.js +120 -0
  278. package/src/backend/services/review-marks.js +72 -0
  279. package/src/backend/services/review-notes.js +169 -0
  280. package/src/backend/services/review-other-work.js +90 -0
  281. package/src/backend/services/review-queue-service.js +147 -0
  282. package/src/backend/services/review-risk.js +127 -0
  283. package/src/backend/services/review-task.js +121 -0
  284. package/src/backend/services/rule-approvals.js +275 -0
  285. package/src/backend/services/rule-baseline.js +134 -0
  286. package/src/backend/services/rule-changes.js +162 -0
  287. package/src/backend/services/rule-preview.js +47 -0
  288. package/src/backend/services/rule-proposals.js +104 -0
  289. package/src/backend/services/rule-scope.js +76 -0
  290. package/src/backend/services/rulebook.js +286 -0
  291. package/src/backend/services/rules-at.js +56 -0
  292. package/src/backend/services/rules-overview.js +88 -0
  293. package/src/backend/services/schema-reconciler.js +250 -0
  294. package/src/backend/services/secret-store.js +119 -0
  295. package/src/backend/services/section-workstreams.js +95 -0
  296. package/src/backend/services/self-write-tracker.js +75 -0
  297. package/src/backend/services/sensor-bridge-service.js +285 -0
  298. package/src/backend/services/session-service.js +192 -0
  299. package/src/backend/services/settings-service.js +324 -0
  300. package/src/backend/services/signal-breakpoints.js +172 -0
  301. package/src/backend/services/signed-approval-record.js +86 -0
  302. package/src/backend/services/signed-approvals.js +244 -0
  303. package/src/backend/services/signoff-pack.js +328 -0
  304. package/src/backend/services/signoff-rows.js +114 -0
  305. package/src/backend/services/skill-arrival-service.js +138 -0
  306. package/src/backend/services/skill-model.js +193 -0
  307. package/src/backend/services/skill-use-service.js +140 -0
  308. package/src/backend/services/skills-service.js +150 -0
  309. package/src/backend/services/snapshot-compare-service.js +397 -0
  310. package/src/backend/services/source-control.js +189 -0
  311. package/src/backend/services/spec-links-service.js +123 -0
  312. package/src/backend/services/spec-proposal-withdraw.js +50 -0
  313. package/src/backend/services/spec-proposals-service.js +470 -0
  314. package/src/backend/services/sql/embedded.js +95 -0
  315. package/src/backend/services/sql/index.js +63 -0
  316. package/src/backend/services/sql/refs.js +357 -0
  317. package/src/backend/services/sql/schema.js +312 -0
  318. package/src/backend/services/sql/tokenizer.js +195 -0
  319. package/src/backend/services/stack-overlaps.js +117 -0
  320. package/src/backend/services/stack-service.js +225 -0
  321. package/src/backend/services/state-sync-service.js +384 -0
  322. package/src/backend/services/stuck-sensor-service.js +200 -0
  323. package/src/backend/services/system-discovery.js +481 -0
  324. package/src/backend/services/system-docs-service.js +701 -0
  325. package/src/backend/services/task-attachments-service.js +340 -0
  326. package/src/backend/services/task-grounding.js +60 -0
  327. package/src/backend/services/task-records/check-run-record.js +146 -0
  328. package/src/backend/services/task-records/check-runs.js +115 -0
  329. package/src/backend/services/task-records/heads.js +88 -0
  330. package/src/backend/services/task-records/material-reads.js +225 -0
  331. package/src/backend/services/task-records/read-record.js +100 -0
  332. package/src/backend/services/task-records/record.js +173 -0
  333. package/src/backend/services/task-records/run-record.js +136 -0
  334. package/src/backend/services/task-records/shared-state.js +548 -0
  335. package/src/backend/services/task-records/signing.js +140 -0
  336. package/src/backend/services/task-records/split-signals.js +52 -0
  337. package/src/backend/services/task-records/test-runs.js +164 -0
  338. package/src/backend/services/task-records/trust.js +243 -0
  339. package/src/backend/services/task-rules.js +81 -0
  340. package/src/backend/services/task-workstreams.js +90 -0
  341. package/src/backend/services/terminal-history-service.js +266 -0
  342. package/src/backend/services/terminal-service.js +267 -0
  343. package/src/backend/services/test-clock.js +53 -0
  344. package/src/backend/services/tests/grounding.js +266 -0
  345. package/src/backend/services/tests/junit.js +104 -0
  346. package/src/backend/services/tests/teammate-runs.js +134 -0
  347. package/src/backend/services/tests/test-results.js +234 -0
  348. package/src/backend/services/tree-watcher.js +204 -0
  349. package/src/backend/services/trellis-service.js +204 -0
  350. package/src/backend/services/trusted-roots.js +186 -0
  351. package/src/backend/services/update-download-service.js +342 -0
  352. package/src/backend/services/update-service.js +266 -0
  353. package/src/backend/services/watch-ignore.js +76 -0
  354. package/src/backend/services/webhook-egress.js +206 -0
  355. package/src/backend/services/webrtc-service.js +413 -0
  356. package/src/backend/services/work-changes.js +59 -0
  357. package/src/backend/services/workstream-binding.js +82 -0
  358. package/src/backend/services/workstream-commits.js +116 -0
  359. package/src/backend/services/workstream-imports.js +177 -0
  360. package/src/backend/services/workstream-service.js +335 -0
  361. package/src/backend/services/workstream-symbols.js +223 -0
  362. package/src/backend/services/workstream-watch-service.js +391 -0
  363. package/src/backend/services/worktree-service.js +235 -0
  364. package/src/cli/agent.js +100 -0
  365. package/src/cli/args.js +209 -0
  366. package/src/cli/conformity.js +106 -0
  367. package/src/cli/desktop.js +91 -0
  368. package/src/cli/main.js +411 -0
  369. package/src/cli/pipeline.js +109 -0
  370. package/src/cli/plan-verbs.js +259 -0
  371. package/src/cli/review-adapters.js +220 -0
  372. package/src/cli/review-output.js +93 -0
  373. package/src/cli/review-post.js +89 -0
  374. package/src/cli/review-sink.js +183 -0
  375. package/src/cli/review-skill.js +44 -0
  376. package/src/cli/review-verify.js +104 -0
  377. package/src/cli/review.js +386 -0
  378. package/src/cli/sarif.js +148 -0
  379. package/src/cli/verbs.js +360 -0
  380. package/src/shared/build-info.js +39 -0
  381. package/src/shared/lib/agent-review.js +199 -0
  382. package/src/shared/lib/agent-turns.js +140 -0
  383. package/src/shared/lib/awareness-digest.js +120 -0
  384. package/src/shared/lib/branch-name.js +45 -0
  385. package/src/shared/lib/breakpoint-words.js +118 -0
  386. package/src/shared/lib/budget-words.js +56 -0
  387. package/src/shared/lib/burst.js +69 -0
  388. package/src/shared/lib/call-entry.js +105 -0
  389. package/src/shared/lib/check-compare.js +42 -0
  390. package/src/shared/lib/check-words.js +216 -0
  391. package/src/shared/lib/csv.js +62 -0
  392. package/src/shared/lib/folder-entry.js +87 -0
  393. package/src/shared/lib/freeze-words.js +60 -0
  394. package/src/shared/lib/fuzzy.js +84 -0
  395. package/src/shared/lib/git-state-words.js +80 -0
  396. package/src/shared/lib/grep-entry.js +86 -0
  397. package/src/shared/lib/grounding-line.js +61 -0
  398. package/src/shared/lib/import-line.js +71 -0
  399. package/src/shared/lib/item-status.js +249 -0
  400. package/src/shared/lib/line-changes.js +53 -0
  401. package/src/shared/lib/locator.js +71 -0
  402. package/src/shared/lib/matcher.js +120 -0
  403. package/src/shared/lib/merge-order.js +65 -0
  404. package/src/shared/lib/open-findings.js +68 -0
  405. package/src/shared/lib/other-work.js +108 -0
  406. package/src/shared/lib/package-entry.js +142 -0
  407. package/src/shared/lib/plan-vocab.js +40 -0
  408. package/src/shared/lib/pptx-xml.js +86 -0
  409. package/src/shared/lib/proposal-words.js +61 -0
  410. package/src/shared/lib/recurrence.js +183 -0
  411. package/src/shared/lib/references.js +72 -0
  412. package/src/shared/lib/rule-pattern.js +56 -0
  413. package/src/shared/lib/sdp-fingerprint.js +115 -0
  414. package/src/shared/lib/sdp-minimal.js +123 -0
  415. package/src/shared/lib/secret-paths.js +34 -0
  416. package/src/shared/lib/signal-words.js +172 -0
  417. package/src/shared/lib/signoff.js +56 -0
  418. package/src/shared/lib/skills-note.js +60 -0
  419. package/src/shared/lib/spec-sections.js +78 -0
  420. package/src/shared/lib/symbol-entry.js +60 -0
  421. package/src/shared/lib/tool-phrasing.js +338 -0
  422. package/src/shared/lib/turn-gap.js +27 -0
  423. package/src/shared/lib/workstream-words.js +38 -0
  424. package/src/shared/lib/xlsx-xml.js +144 -0
  425. package/src/shared/lib/zip-reader.js +99 -0
  426. package/src/shared/types/agent.js +27 -0
  427. package/src/shared/types/architecture-rules.js +30 -0
  428. package/src/shared/types/ast.js +15 -0
  429. package/src/shared/types/breakpoint.js +33 -0
  430. package/src/shared/types/channel.js +41 -0
  431. package/src/shared/types/criteria.js +15 -0
  432. package/src/shared/types/graph.js +15 -0
  433. package/src/shared/types/index.js +53 -0
  434. package/src/shared/types/peer.js +36 -0
  435. package/src/shared/types/pipeline.js +15 -0
  436. package/src/shared/types/plan.js +15 -0
  437. package/src/shared/types/play-forward.js +15 -0
  438. package/src/shared/types/power.js +15 -0
  439. package/src/shared/types/presence.js +15 -0
  440. package/src/shared/types/project-config.js +35 -0
  441. package/src/shared/types/project.js +15 -0
  442. package/src/shared/types/record.js +15 -0
  443. package/src/shared/types/recurring.js +15 -0
  444. package/src/shared/types/review.js +15 -0
  445. package/src/shared/types/settings.js +114 -0
  446. package/src/shared/types/stack.js +15 -0
  447. package/src/shared/types/system-doc.js +15 -0
  448. package/src/shared/types/system.js +15 -0
@@ -0,0 +1,172 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var signal_words_exports = {};
19
+ __export(signal_words_exports, {
20
+ briefLine: () => briefLine,
21
+ kindWords: () => kindWords,
22
+ sideRootsOf: () => sideRootsOf,
23
+ sideWords: () => sideWords
24
+ });
25
+ module.exports = __toCommonJS(signal_words_exports);
26
+ function kindWords(s) {
27
+ if (s.kind === "version-split") return "Different versions";
28
+ if (s.kind === "state-split") return s.subject.said?.some((c) => c.forged) ? "A record in someone else's name" : "Set two ways at once";
29
+ if (s.subject.material) {
30
+ if (s.kind === "contract") return "Changed material";
31
+ if (s.kind === "stale-base") return "Material changed";
32
+ if (s.kind === "collision") return "Same output";
33
+ if (s.kind === "drift") return "Outside its brief";
34
+ }
35
+ if (s.kind === "stale-base") return "Behind main";
36
+ if (s.kind === "rule") return "Breaks a rule";
37
+ if (s.kind === "drift") return "Outside its scope";
38
+ if (s.kind === "contract") return s.subject.change === "removed" ? "Removed export" : "Changed signature";
39
+ const declared = s.subject.intended?.length ? " \xB7 declared" : "";
40
+ return (s.subject.symbol ? "Same function" : "Same file") + declared;
41
+ }
42
+ function sideRootsOf(s) {
43
+ return (s.kind === "contract" || s.kind === "drift" && s.subject.material) && s.subject.by ? [s.subject.by, ...s.workstreams.filter((r) => r !== s.subject.by)] : [...s.workstreams];
44
+ }
45
+ const count = (n, word) => `${n} ${word}${n === 1 ? "" : "s"}`;
46
+ const STATUS_WORDS = { pending: "not started", assigned: "assigned", in_progress: "in progress", blocked: "blocked", done: "done", skipped: "skipped" };
47
+ const statusWords = (status) => STATUS_WORDS[status ?? "pending"] ?? "not started";
48
+ function about(s) {
49
+ if (s.subject.file && s.subject.symbol) return `${s.subject.symbol} in ${s.subject.file}`;
50
+ return s.subject.file ?? (s.subject.files ?? []).join(", ");
51
+ }
52
+ function sideWords(s, label) {
53
+ if (s.kind === "state-split") {
54
+ const root = s.workstreams[0];
55
+ const task = s.subject.labels?.[root] ?? label(root);
56
+ return (s.subject.said ?? []).map((c) => ({
57
+ root,
58
+ name: c.name,
59
+ words: c.forged ? `A record claiming to be ${c.name}'s sets \u201C${task}\u201D to ${statusWords(c.status)}; another record claims to be the same change.` : `${c.name} set \u201C${task}\u201D to ${statusWords(c.status)}, without having seen the other change.`
60
+ }));
61
+ }
62
+ const roots = sideRootsOf(s);
63
+ return roots.map((root, i) => {
64
+ const name = s.subject.labels?.[root] ?? label(root);
65
+ if (s.subject.material) return { root, name, words: materialWords(s, root, name) };
66
+ const declared = s.subject.intended?.includes(root);
67
+ if (s.kind === "contract") {
68
+ if (i === 0) {
69
+ if (s.subject.change === "removed") return { root, name, words: `${name} removed ${s.subject.symbol ?? "an export"} from ${s.subject.file ?? "a shared file"}.` };
70
+ const sig = s.subject.signature;
71
+ const change = sig ? `: ${s.subject.symbol}${sig.before} is now ${s.subject.symbol}${sig.after}` : "";
72
+ return { root, name, words: `${name} changed ${s.subject.symbol ?? "an export"}'s signature in ${s.subject.file ?? "a shared file"}${change}.` };
73
+ }
74
+ const importers = s.subject.importers ?? [];
75
+ const where = importers.length ? `, in ${count(importers.length, "file")}: ${importers.slice(0, 3).join(", ")}${importers.length > 3 ? " and more" : ""}` : "";
76
+ return { root, name, words: `${name} ${s.subject.possibly ? "possibly imports" : "imports"} it${where}.` };
77
+ }
78
+ if (s.kind === "drift") {
79
+ const files = s.subject.files ?? [];
80
+ return { root, name, words: `${name} changes ${count(files.length, "file")} outside the task it claimed: ${files.slice(0, 3).join(", ")}${files.length > 3 ? " and more" : ""}.` };
81
+ }
82
+ if (s.kind === "stale-base") {
83
+ return { root, name, words: `main changed ${about(s)} since ${name} branched, and ${name} changes it too.` };
84
+ }
85
+ if (s.kind === "rule") {
86
+ const edges = s.subject.edges ?? [];
87
+ const shown = edges.slice(0, 3).map((e) => `${e.from} \u2192 ${e.to}`).join(", ") + (edges.length > 3 ? " and more" : "");
88
+ const rule = s.subject.rule;
89
+ return { root, name, words: `${name} adds ${count(edges.length, "import")} the rule \u201C${rule?.words ?? "an architecture rule"}\u201D forbids${rule?.because ? ` (${rule.because})` : ""}: ${shown}.` };
90
+ }
91
+ return { root, name, words: `${name} ${declared ? "has said it will change" : "changes"} ${about(s)}.` };
92
+ });
93
+ }
94
+ function materialWords(s, root, task) {
95
+ const m = s.subject.material;
96
+ const who = s.subject.readBy?.[root];
97
+ const name = who ? `${task} (${who})` : task;
98
+ switch (s.kind) {
99
+ case "contract": {
100
+ if (!s.subject.citedBy?.includes(root)) return `${name} uses ${m}.`;
101
+ const parts = s.subject.parts ?? [];
102
+ const what = parts.length ? `${parts.slice(0, 3).join(", ")}${parts.length > 3 ? " and more" : ""} of ${m}` : m;
103
+ const signed = s.subject.signedOff?.includes(root) ? ", and a person already signed that off" : "";
104
+ return `${name} cites ${what}, as it was before it changed${signed}.`;
105
+ }
106
+ case "version-split":
107
+ return s.subject.readVersions?.[root] === "current" ? `${name} read the current version of ${m}.` : `${name} read an earlier version of ${m}.`;
108
+ case "stale-base":
109
+ return `${name} read ${m} before it changed, and has not read it since.`;
110
+ case "collision":
111
+ return `${name} records ${m} as its output.`;
112
+ case "drift": {
113
+ if (root !== s.subject.by) return `${name} was given it.`;
114
+ const files = s.subject.files ?? [m];
115
+ return `${name} read ${files.slice(0, 3).join(", ")}${files.length > 3 ? " and more" : ""}, which its brief does not include.`;
116
+ }
117
+ default:
118
+ return `${name} uses ${m}.`;
119
+ }
120
+ }
121
+ const namesOf = (s, ids) => {
122
+ const names = ids.map((id) => `\u201C${s.subject.labels?.[id] ?? id}\u201D${s.subject.readBy?.[id] ? ` (${s.subject.readBy[id]})` : ""}`);
123
+ return names.length <= 2 ? names.join(" and ") : `${names.slice(0, -1).join(", ")} and ${names[names.length - 1]}`;
124
+ };
125
+ function briefLine(s, root, opts = {}) {
126
+ const name = opts.file ?? ((p) => p);
127
+ const m = name(s.subject.material ?? s.subject.file ?? "a file");
128
+ const others = s.workstreams.filter((w) => w !== root);
129
+ const verb = (ids, one, many) => ids.length === 1 ? one : many;
130
+ switch (s.kind) {
131
+ case "contract": {
132
+ const citers = s.subject.citedBy ?? [];
133
+ const parts = (s.subject.parts ?? []).join(", ") || "it";
134
+ const signed = s.subject.signedOff ?? [];
135
+ const mine = citers.includes(root);
136
+ const otherCiters = citers.filter((c) => c !== root);
137
+ const head = mine ? `${m} changed since this task cited ${parts}.` : `${m} changed since ${namesOf(s, otherCiters)} cited ${parts}.`;
138
+ const signedWords = signed.length === 0 ? "" : signed.includes(root) ? " A person had already signed this task's citation off." : ` ${namesOf(s, signed)} had already been signed off.`;
139
+ const also = mine ? others.length ? ` ${namesOf(s, others)} ${verb(others, "uses", "use")} it too.` : "" : " This task uses it too.";
140
+ return `${head}${signedWords}${also}`;
141
+ }
142
+ case "version-split": {
143
+ const versions = s.subject.readVersions ?? {};
144
+ const current = others.filter((o) => versions[o] === "current");
145
+ const earlier = others.filter((o) => versions[o] !== "current");
146
+ if (versions[root] === "current") {
147
+ return `This task read the current ${m}; ${namesOf(s, earlier)} worked from an earlier version.`;
148
+ }
149
+ return current.length ? `This task worked from an earlier version of ${m}; ${namesOf(s, current)} ${verb(current, "has", "have")} the current one.` : `This task and ${namesOf(s, others)} worked from different earlier versions of ${m}; it has changed since.`;
150
+ }
151
+ case "stale-base":
152
+ return `${m} changed after this task and ${namesOf(s, others)} read it.`;
153
+ case "state-split":
154
+ return (s.subject.said ?? []).map((c) => `${c.name}${c.forged ? " (claimed)" : ""} set this task to ${statusWords(c.status)}`).join("; ") + ", at once.";
155
+ case "collision":
156
+ return `This task and ${namesOf(s, others)} both record ${m} as their output.`;
157
+ case "drift": {
158
+ const files = (s.subject.files ?? [s.subject.material ?? m]).map(name).join(", ");
159
+ if (s.subject.by === root) return `This task read ${files}, which ${namesOf(s, others)} ${verb(others, "was", "were")} given, not this task.`;
160
+ return `${namesOf(s, s.subject.by ? [s.subject.by] : others)} read ${m}, which this task was given.`;
161
+ }
162
+ default:
163
+ return `${m} is used by this task and ${namesOf(s, others)}.`;
164
+ }
165
+ }
166
+ // Annotate the CommonJS export names for ESM import in node:
167
+ 0 && (module.exports = {
168
+ briefLine,
169
+ kindWords,
170
+ sideRootsOf,
171
+ sideWords
172
+ });
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var signoff_exports = {};
19
+ __export(signoff_exports, {
20
+ decisionWords: () => decisionWords,
21
+ evidenceWords: () => evidenceWords,
22
+ stateWords: () => stateWords
23
+ });
24
+ module.exports = __toCommonJS(signoff_exports);
25
+ function stateWords(row) {
26
+ switch (row.state) {
27
+ case "met":
28
+ return row.selfApproved ? "met (agent-checked)" : row.unverified ? "met (unverified)" : "met";
29
+ case "submitted":
30
+ return "waiting for sign-off";
31
+ case "sent_back":
32
+ return "sent back";
33
+ case "stale":
34
+ return "changed since approved";
35
+ default:
36
+ return "not started";
37
+ }
38
+ }
39
+ const date = (ms) => new Date(ms).toISOString().slice(0, 16).replace("T", " ") + " UTC";
40
+ function decisionWords(row) {
41
+ const d = row.decision;
42
+ if (!d) return "\u2014";
43
+ const verb = d.decision === "approved" ? row.selfApproved ? "self-approved by" : "approved by" : "sent back by";
44
+ const how = d.channel === "mcp" ? "over MCP" : d.channel === "local-api" ? "through the local API (unverified: not the app or a paired phone)" : `on the ${d.channel}${d.device ? ` (${d.device})` : ""}`;
45
+ return `${verb} ${d.actor} ${how}, ${date(d.at)}`;
46
+ }
47
+ function evidenceWords(row) {
48
+ if (row.evidence.length === 0) return "\u2014";
49
+ return row.evidence.map((e) => e.path ? `${e.path.split("/").pop()}${e.where ? ` (${e.where})` : ""}` : "note").join("; ");
50
+ }
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ decisionWords,
54
+ evidenceWords,
55
+ stateWords
56
+ });
@@ -0,0 +1,60 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var skills_note_exports = {};
19
+ __export(skills_note_exports, {
20
+ agentSkillsOf: () => agentSkillsOf,
21
+ skillsNote: () => skillsNote
22
+ });
23
+ module.exports = __toCommonJS(skills_note_exports);
24
+ function whereText(w) {
25
+ switch (w.kind) {
26
+ case "repo":
27
+ return `\`${w.path}\``;
28
+ case "plugin":
29
+ return `the ${w.name} plugin`;
30
+ case "mcp":
31
+ return `the ${w.server} MCP server's tools`;
32
+ case "playbook":
33
+ return `CodeTrellis playbook ${w.uid}`;
34
+ }
35
+ }
36
+ function skillsNote(skills) {
37
+ if (skills.length === 0) return null;
38
+ const parts = skills.map((s) => {
39
+ let t = `${s.use === "required" ? "required: " : "use "}**${s.name}**`;
40
+ if (s.where) t += ` (${whereText(s.where)})`;
41
+ if (s.why) t += `, because ${s.why.replace(/^because\s+/i, "").replace(/\.$/, "")}`;
42
+ if (s.missing) t += ` (missing: ${s.missing})`;
43
+ return t;
44
+ });
45
+ return `Skills for this task: ${parts.join("; ")}.`;
46
+ }
47
+ function agentSkillsOf(skills) {
48
+ return skills.filter((s) => s.required || s.use === "recommended").map((s) => ({
49
+ name: s.name,
50
+ use: s.required ? "required" : "recommended",
51
+ why: s.why ?? null,
52
+ where: s.where && s.where.kind !== "link" ? s.where : null,
53
+ missing: null
54
+ }));
55
+ }
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ agentSkillsOf,
59
+ skillsNote
60
+ });
@@ -0,0 +1,78 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var spec_sections_exports = {};
19
+ __export(spec_sections_exports, {
20
+ findSection: () => findSection,
21
+ headingSlug: () => headingSlug,
22
+ sectionText: () => sectionText,
23
+ specSections: () => specSections,
24
+ withSectionText: () => withSectionText
25
+ });
26
+ module.exports = __toCommonJS(spec_sections_exports);
27
+ function headingSlug(text) {
28
+ return text.toLowerCase().replace(/[`*_~[\]()<>]/g, " ").replace(/[^\p{L}\p{N}\s-]/gu, "").trim().replace(/[\s-]+/g, "-");
29
+ }
30
+ function specSections(body) {
31
+ const lines = (body ?? "").split("\n");
32
+ const found = [];
33
+ let fence = null;
34
+ lines.forEach((line, i) => {
35
+ const f = /^\s{0,3}(`{3,}|~{3,})/.exec(line);
36
+ if (f) {
37
+ if (!fence) fence = f[1][0];
38
+ else if (f[1][0] === fence) fence = null;
39
+ return;
40
+ }
41
+ if (fence) return;
42
+ const h = /^\s{0,3}(#{1,6})\s+(.+?)\s*#*\s*$/.exec(line);
43
+ if (h) found.push({ title: h[2].trim(), level: h[1].length, line: i, base: headingSlug(h[2]) });
44
+ });
45
+ const seen = /* @__PURE__ */ new Map();
46
+ return found.map((h, k) => {
47
+ const n = (seen.get(h.base) ?? 0) + 1;
48
+ seen.set(h.base, n);
49
+ const next = found.slice(k + 1).find((o) => o.level <= h.level);
50
+ return { slug: n === 1 ? h.base : `${h.base}-${n}`, title: h.title, level: h.level, line: h.line, end: next ? next.line : lines.length };
51
+ });
52
+ }
53
+ function findSection(body, slug) {
54
+ return specSections(body).find((s) => s.slug === slug);
55
+ }
56
+ function sectionText(body, slug) {
57
+ const s = findSection(body, slug);
58
+ if (!s) return void 0;
59
+ return (body ?? "").split("\n").slice(s.line, s.end).join("\n");
60
+ }
61
+ function withSectionText(body, slug, text) {
62
+ if (!slug) return text;
63
+ const s = findSection(body, slug);
64
+ if (!s) return void 0;
65
+ const lines = (body ?? "").split("\n");
66
+ const replacement = text.replace(/\n+$/, "").split("\n");
67
+ const hadGap = s.end < lines.length && lines[s.end - 1] === "";
68
+ const tail = hadGap && replacement[replacement.length - 1] !== "" ? [""] : [];
69
+ return [...lines.slice(0, s.line), ...replacement, ...tail, ...lines.slice(s.end)].join("\n");
70
+ }
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ findSection,
74
+ headingSlug,
75
+ sectionText,
76
+ specSections,
77
+ withSectionText
78
+ });
@@ -0,0 +1,60 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var symbol_entry_exports = {};
19
+ __export(symbol_entry_exports, {
20
+ isSymbolEntry: () => isSymbolEntry,
21
+ splitSymbol: () => splitSymbol,
22
+ symbolEntry: () => symbolEntry,
23
+ symbolMatches: () => symbolMatches,
24
+ symbolProblem: () => symbolProblem
25
+ });
26
+ module.exports = __toCommonJS(symbol_entry_exports);
27
+ const SYMBOL_RE = /^([^#\s]+)#([^#\s/]+)$/;
28
+ function isSymbolEntry(s) {
29
+ return SYMBOL_RE.test(s) && !s.includes(":");
30
+ }
31
+ function symbolEntry(file, name) {
32
+ return `${file}#${name}`;
33
+ }
34
+ function splitSymbol(s) {
35
+ if (!isSymbolEntry(s)) return null;
36
+ const m = SYMBOL_RE.exec(s);
37
+ return { file: m[1], name: m[2] };
38
+ }
39
+ function symbolProblem(s) {
40
+ if (typeof s !== "string" || !isSymbolEntry(s.trim())) return "symbol must be a file and a name it exports, like src/payments/charge.ts#createCharge";
41
+ const { file, name } = splitSymbol(s.trim());
42
+ if (file.startsWith("/") || /^[a-zA-Z]:/.test(file) || file.includes("\\")) return "symbol must name a file relative to the project";
43
+ if (file.split("/").includes("..")) return "symbol may not climb out of the project";
44
+ if (name === "*") return "symbol must name one export, not the whole module";
45
+ return null;
46
+ }
47
+ function symbolMatches(ruleSymbol, entry) {
48
+ const rule = splitSymbol(ruleSymbol);
49
+ const got = splitSymbol(entry);
50
+ if (!rule || !got || rule.file !== got.file) return false;
51
+ return got.name === rule.name || got.name === "*";
52
+ }
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ isSymbolEntry,
56
+ splitSymbol,
57
+ symbolEntry,
58
+ symbolMatches,
59
+ symbolProblem
60
+ });