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.
- package/LICENSE +201 -0
- package/README.md +27 -2
- package/bin/codetrellis.mjs +4 -0
- package/package.json +41 -4
- package/reader/material-reader.mjs +130346 -0
- package/resources/tree-sitter/README.md +150 -0
- package/resources/tree-sitter/tree-sitter-c-sharp.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-go.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-java.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-javascript.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-kotlin.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-php.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-python.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-ruby.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-rust.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-swift.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-tsx.wasm +0 -0
- package/resources/tree-sitter/tree-sitter-typescript.wasm +0 -0
- package/resources/tree-sitter/tree-sitter.wasm +0 -0
- package/src/backend/agent/claude-code-watcher.js +270 -0
- package/src/backend/index.js +8 -0
- package/src/backend/lib/sha256-file.js +39 -0
- package/src/backend/lib/zip-entries.js +98 -0
- package/src/backend/lifecycle.js +102 -0
- package/src/backend/mcp/binding-headers.js +54 -0
- package/src/backend/mcp/client-identity.js +44 -0
- package/src/backend/mcp/connector/command.js +110 -0
- package/src/backend/mcp/connector/core.js +278 -0
- package/src/backend/mcp/connector/files.js +121 -0
- package/src/backend/mcp/connector/hook.js +284 -0
- package/src/backend/mcp/connector/main.js +126 -0
- package/src/backend/mcp/connector/sse-upstream.js +152 -0
- package/src/backend/mcp/helpers.js +43 -0
- package/src/backend/mcp/prompt-builders.js +104 -0
- package/src/backend/mcp/resources.js +197 -0
- package/src/backend/mcp/server.js +813 -0
- package/src/backend/mcp/skill-guide.js +1528 -0
- package/src/backend/mcp/tools/architecture-tools.js +273 -0
- package/src/backend/mcp/tools/audio-tools.js +117 -0
- package/src/backend/mcp/tools/awareness-tools.js +623 -0
- package/src/backend/mcp/tools/budget-tools.js +185 -0
- package/src/backend/mcp/tools/channel-tools.js +205 -0
- package/src/backend/mcp/tools/contribution-tools.js +181 -0
- package/src/backend/mcp/tools/drift-tools.js +252 -0
- package/src/backend/mcp/tools/git-tools.js +316 -0
- package/src/backend/mcp/tools/governance-tools.js +175 -0
- package/src/backend/mcp/tools/graph-tools.js +181 -0
- package/src/backend/mcp/tools/intake-tools.js +244 -0
- package/src/backend/mcp/tools/mobile-tools.js +118 -0
- package/src/backend/mcp/tools/peer-tools.js +330 -0
- package/src/backend/mcp/tools/plan-item-tools.js +1601 -0
- package/src/backend/mcp/tools/plan-tools.js +680 -0
- package/src/backend/mcp/tools/presence-tools.js +185 -0
- package/src/backend/mcp/tools/project-config-tools.js +150 -0
- package/src/backend/mcp/tools/review-tools.js +172 -0
- package/src/backend/mcp/tools/session-tools.js +554 -0
- package/src/backend/mcp/tools/system-docs-tools.js +168 -0
- package/src/backend/mcp/tools/terminal-tools.js +186 -0
- package/src/backend/mcp/tools/test-tools.js +117 -0
- package/src/backend/mcp/tools/ui-tools.js +356 -0
- package/src/backend/mcp/types.js +15 -0
- package/src/backend/middleware/local-auth.js +116 -0
- package/src/backend/server.js +5951 -0
- package/src/backend/services/agent-event-log.js +350 -0
- package/src/backend/services/architecture-rule.js +584 -0
- package/src/backend/services/architecture-rules.js +275 -0
- package/src/backend/services/artefact-content-service.js +181 -0
- package/src/backend/services/artefact-service.js +305 -0
- package/src/backend/services/artefact-watcher.js +167 -0
- package/src/backend/services/ast-parser.js +327 -0
- package/src/backend/services/audio-buffer-service.js +152 -0
- package/src/backend/services/awareness-notices.js +139 -0
- package/src/backend/services/awareness-replies.js +194 -0
- package/src/backend/services/awareness-service.js +344 -0
- package/src/backend/services/awareness-signals.js +267 -0
- package/src/backend/services/baseline-store.js +83 -0
- package/src/backend/services/branch-workstreams.js +341 -0
- package/src/backend/services/breakpoint-service.js +584 -0
- package/src/backend/services/brief-service.js +299 -0
- package/src/backend/services/budget-service.js +528 -0
- package/src/backend/services/callsites/base.js +15 -0
- package/src/backend/services/callsites/csharp.js +148 -0
- package/src/backend/services/callsites/go.js +163 -0
- package/src/backend/services/callsites/index.js +53 -0
- package/src/backend/services/callsites/kotlin.js +123 -0
- package/src/backend/services/callsites/process-env.js +125 -0
- package/src/backend/services/callsites/python.js +91 -0
- package/src/backend/services/callsites/ruby.js +164 -0
- package/src/backend/services/callsites/shared.js +198 -0
- package/src/backend/services/callsites/swift.js +115 -0
- package/src/backend/services/callsites/typescript.js +87 -0
- package/src/backend/services/capability-token.js +108 -0
- package/src/backend/services/change-check.js +156 -0
- package/src/backend/services/channel-dispatcher-service.js +235 -0
- package/src/backend/services/channel-event-file-service.js +125 -0
- package/src/backend/services/channel-event-service.js +297 -0
- package/src/backend/services/check-runs.js +177 -0
- package/src/backend/services/checkout-identity.js +73 -0
- package/src/backend/services/claude-code-parallel.js +221 -0
- package/src/backend/services/claude-desktop-config.js +186 -0
- package/src/backend/services/cli-install.js +249 -0
- package/src/backend/services/clock.js +57 -0
- package/src/backend/services/cloud-files.js +191 -0
- package/src/backend/services/coalesce.js +50 -0
- package/src/backend/services/code-breakpoints.js +291 -0
- package/src/backend/services/comment-service.js +168 -0
- package/src/backend/services/commit-attribution.js +134 -0
- package/src/backend/services/commit-edges.js +99 -0
- package/src/backend/services/confined-fs.js +241 -0
- package/src/backend/services/conformity-gate.js +132 -0
- package/src/backend/services/contribution-service.js +409 -0
- package/src/backend/services/coverage-service.js +173 -0
- package/src/backend/services/criteria-service.js +721 -0
- package/src/backend/services/criterion-checks.js +387 -0
- package/src/backend/services/criterion-loop-service.js +411 -0
- package/src/backend/services/cross-system-service.js +231 -0
- package/src/backend/services/database.js +916 -0
- package/src/backend/services/db-schema.js +1358 -0
- package/src/backend/services/deviation-service.js +344 -0
- package/src/backend/services/diff-engine.js +168 -0
- package/src/backend/services/evidence.js +363 -0
- package/src/backend/services/external-intake-service.js +269 -0
- package/src/backend/services/external-pointer-service.js +195 -0
- package/src/backend/services/external-refs-service.js +214 -0
- package/src/backend/services/file-history.js +158 -0
- package/src/backend/services/file-watcher.js +193 -0
- package/src/backend/services/folder-requests.js +118 -0
- package/src/backend/services/freeze-service.js +189 -0
- package/src/backend/services/gemini-cli-hook.js +172 -0
- package/src/backend/services/git-activity-service.js +325 -0
- package/src/backend/services/git-blobs.js +70 -0
- package/src/backend/services/git-branches.js +357 -0
- package/src/backend/services/git-checkout.js +153 -0
- package/src/backend/services/git-commit-service.js +91 -0
- package/src/backend/services/git-env.js +121 -0
- package/src/backend/services/git-identity.js +84 -0
- package/src/backend/services/git-refs.js +386 -0
- package/src/backend/services/git-safety.js +58 -0
- package/src/backend/services/grant-guard.js +67 -0
- package/src/backend/services/html-view-policy.js +135 -0
- package/src/backend/services/human-decision.js +55 -0
- package/src/backend/services/importers.js +159 -0
- package/src/backend/services/intent-service.js +105 -0
- package/src/backend/services/ipc-dispatcher.js +164 -0
- package/src/backend/services/item-git-state.js +208 -0
- package/src/backend/services/line-changes.js +232 -0
- package/src/backend/services/line-history.js +174 -0
- package/src/backend/services/local-api-changes.js +40 -0
- package/src/backend/services/logger.js +217 -0
- package/src/backend/services/material-footprints.js +203 -0
- package/src/backend/services/material-place.js +82 -0
- package/src/backend/services/material-reader/docx-markdown.js +198 -0
- package/src/backend/services/material-reader/fixtures.test-helper.js +169 -0
- package/src/backend/services/material-reader/quote.js +44 -0
- package/src/backend/services/material-reader/reader-host.js +202 -0
- package/src/backend/services/material-signals.js +141 -0
- package/src/backend/services/mcp-capabilities.js +390 -0
- package/src/backend/services/mdns-service.js +304 -0
- package/src/backend/services/mobile-api-server.js +281 -0
- package/src/backend/services/mobile-approvals.js +306 -0
- package/src/backend/services/mobile-awareness.js +180 -0
- package/src/backend/services/mobile-breakpoints.js +115 -0
- package/src/backend/services/mobile-budget.js +98 -0
- package/src/backend/services/mobile-freeze.js +106 -0
- package/src/backend/services/mobile-proposals.js +100 -0
- package/src/backend/services/mobile-rpc-service.js +1289 -0
- package/src/backend/services/mobile-workstreams.js +160 -0
- package/src/backend/services/monorepo-detector.js +131 -0
- package/src/backend/services/other-work.js +45 -0
- package/src/backend/services/pack-seal.js +129 -0
- package/src/backend/services/paired-device-service.js +192 -0
- package/src/backend/services/pairing-server.js +323 -0
- package/src/backend/services/pairing-service.js +200 -0
- package/src/backend/services/pantry-resolution-service.js +166 -0
- package/src/backend/services/parsers/base.js +124 -0
- package/src/backend/services/parsers/csharp.js +224 -0
- package/src/backend/services/parsers/go.js +180 -0
- package/src/backend/services/parsers/index.js +101 -0
- package/src/backend/services/parsers/java.js +103 -0
- package/src/backend/services/parsers/kotlin.js +252 -0
- package/src/backend/services/parsers/php.js +113 -0
- package/src/backend/services/parsers/python.js +189 -0
- package/src/backend/services/parsers/ruby.js +212 -0
- package/src/backend/services/parsers/rust.js +97 -0
- package/src/backend/services/parsers/swift.js +221 -0
- package/src/backend/services/parsers/typescript.js +235 -0
- package/src/backend/services/pattern-scan.js +65 -0
- package/src/backend/services/patterns.js +281 -0
- package/src/backend/services/peer-audit-service.js +123 -0
- package/src/backend/services/peer-auth.js +153 -0
- package/src/backend/services/peer-capabilities.js +209 -0
- package/src/backend/services/peer-connection-service.js +450 -0
- package/src/backend/services/peer-grants.js +33 -0
- package/src/backend/services/persistence.js +116 -0
- package/src/backend/services/personal-sync-service.js +232 -0
- package/src/backend/services/pipeline-approvals.js +72 -0
- package/src/backend/services/pipeline.js +232 -0
- package/src/backend/services/plan-arrivals.js +68 -0
- package/src/backend/services/plan-changes-service.js +273 -0
- package/src/backend/services/plan-conflict-service.js +288 -0
- package/src/backend/services/plan-dependencies.js +91 -0
- package/src/backend/services/plan-doc-guard.js +90 -0
- package/src/backend/services/plan-documents-service.js +275 -0
- package/src/backend/services/plan-event-service.js +154 -0
- package/src/backend/services/plan-file-refs.js +106 -0
- package/src/backend/services/plan-file-service.js +1564 -0
- package/src/backend/services/plan-history-service.js +156 -0
- package/src/backend/services/plan-import-service.js +261 -0
- package/src/backend/services/plan-item-service.js +1223 -0
- package/src/backend/services/plan-migrate-service.js +395 -0
- package/src/backend/services/plan-overlay-service.js +173 -0
- package/src/backend/services/plan-phases-service.js +182 -0
- package/src/backend/services/plan-progress-service.js +134 -0
- package/src/backend/services/plan-review-service.js +262 -0
- package/src/backend/services/plan-service.js +682 -0
- package/src/backend/services/plan-status.js +113 -0
- package/src/backend/services/plan-template-publish-service.js +217 -0
- package/src/backend/services/plan-templates-service.js +242 -0
- package/src/backend/services/plan-templates.js +1164 -0
- package/src/backend/services/planned-overlap-actions.js +200 -0
- package/src/backend/services/plans-home.js +224 -0
- package/src/backend/services/play-forward.js +256 -0
- package/src/backend/services/playback-service.js +117 -0
- package/src/backend/services/power-service.js +167 -0
- package/src/backend/services/power-signals.js +81 -0
- package/src/backend/services/pr-draft-service.js +142 -0
- package/src/backend/services/presence-service.js +122 -0
- package/src/backend/services/pricing.js +60 -0
- package/src/backend/services/project-config-service.js +474 -0
- package/src/backend/services/project-scanner.js +184 -0
- package/src/backend/services/projection-service.js +69 -0
- package/src/backend/services/push-notification-service.js +288 -0
- package/src/backend/services/recent-projects-service.js +204 -0
- package/src/backend/services/record-chain.js +162 -0
- package/src/backend/services/recurrence-rule.js +63 -0
- package/src/backend/services/recurring-agent.js +89 -0
- package/src/backend/services/recurring-scheduler.js +77 -0
- package/src/backend/services/recurring-service.js +276 -0
- package/src/backend/services/reference-service.js +169 -0
- package/src/backend/services/release-public-key.js +30 -0
- package/src/backend/services/release-signature.js +64 -0
- package/src/backend/services/remote-audio-service.js +224 -0
- package/src/backend/services/remote-interaction-service.js +275 -0
- package/src/backend/services/remote-terminal-service.js +324 -0
- package/src/backend/services/rendition/child/main.js +76 -0
- package/src/backend/services/rendition/engine-host.js +249 -0
- package/src/backend/services/rendition/engine-lock.js +39 -0
- package/src/backend/services/rendition/engine-lock.json +14 -0
- package/src/backend/services/rendition/engine-manifest.js +97 -0
- package/src/backend/services/rendition/network-proof.js +73 -0
- package/src/backend/services/rendition/rendition-service.js +175 -0
- package/src/backend/services/replay-frames.js +387 -0
- package/src/backend/services/replay-state.js +201 -0
- package/src/backend/services/resolvers/base.js +108 -0
- package/src/backend/services/resolvers/csharp.js +109 -0
- package/src/backend/services/resolvers/go.js +105 -0
- package/src/backend/services/resolvers/index.js +60 -0
- package/src/backend/services/resolvers/java.js +63 -0
- package/src/backend/services/resolvers/kotlin.js +109 -0
- package/src/backend/services/resolvers/php.js +89 -0
- package/src/backend/services/resolvers/python.js +154 -0
- package/src/backend/services/resolvers/ruby.js +103 -0
- package/src/backend/services/resolvers/rust.js +77 -0
- package/src/backend/services/resolvers/swift.js +98 -0
- package/src/backend/services/resolvers/typescript.js +71 -0
- package/src/backend/services/retention.js +54 -0
- package/src/backend/services/review-architecture.js +236 -0
- package/src/backend/services/review-attest.js +68 -0
- package/src/backend/services/review-bundle.js +226 -0
- package/src/backend/services/review-graduation.js +93 -0
- package/src/backend/services/review-host/bitbucket.js +79 -0
- package/src/backend/services/review-host/detect.js +80 -0
- package/src/backend/services/review-host/github.js +97 -0
- package/src/backend/services/review-host/gitlab.js +77 -0
- package/src/backend/services/review-host/host-state.js +103 -0
- package/src/backend/services/review-host/http.js +58 -0
- package/src/backend/services/review-host/switch.js +120 -0
- package/src/backend/services/review-marks.js +72 -0
- package/src/backend/services/review-notes.js +169 -0
- package/src/backend/services/review-other-work.js +90 -0
- package/src/backend/services/review-queue-service.js +147 -0
- package/src/backend/services/review-risk.js +127 -0
- package/src/backend/services/review-task.js +121 -0
- package/src/backend/services/rule-approvals.js +275 -0
- package/src/backend/services/rule-baseline.js +134 -0
- package/src/backend/services/rule-changes.js +162 -0
- package/src/backend/services/rule-preview.js +47 -0
- package/src/backend/services/rule-proposals.js +104 -0
- package/src/backend/services/rule-scope.js +76 -0
- package/src/backend/services/rulebook.js +286 -0
- package/src/backend/services/rules-at.js +56 -0
- package/src/backend/services/rules-overview.js +88 -0
- package/src/backend/services/schema-reconciler.js +250 -0
- package/src/backend/services/secret-store.js +119 -0
- package/src/backend/services/section-workstreams.js +95 -0
- package/src/backend/services/self-write-tracker.js +75 -0
- package/src/backend/services/sensor-bridge-service.js +285 -0
- package/src/backend/services/session-service.js +192 -0
- package/src/backend/services/settings-service.js +324 -0
- package/src/backend/services/signal-breakpoints.js +172 -0
- package/src/backend/services/signed-approval-record.js +86 -0
- package/src/backend/services/signed-approvals.js +244 -0
- package/src/backend/services/signoff-pack.js +328 -0
- package/src/backend/services/signoff-rows.js +114 -0
- package/src/backend/services/skill-arrival-service.js +138 -0
- package/src/backend/services/skill-model.js +193 -0
- package/src/backend/services/skill-use-service.js +140 -0
- package/src/backend/services/skills-service.js +150 -0
- package/src/backend/services/snapshot-compare-service.js +397 -0
- package/src/backend/services/source-control.js +189 -0
- package/src/backend/services/spec-links-service.js +123 -0
- package/src/backend/services/spec-proposal-withdraw.js +50 -0
- package/src/backend/services/spec-proposals-service.js +470 -0
- package/src/backend/services/sql/embedded.js +95 -0
- package/src/backend/services/sql/index.js +63 -0
- package/src/backend/services/sql/refs.js +357 -0
- package/src/backend/services/sql/schema.js +312 -0
- package/src/backend/services/sql/tokenizer.js +195 -0
- package/src/backend/services/stack-overlaps.js +117 -0
- package/src/backend/services/stack-service.js +225 -0
- package/src/backend/services/state-sync-service.js +384 -0
- package/src/backend/services/stuck-sensor-service.js +200 -0
- package/src/backend/services/system-discovery.js +481 -0
- package/src/backend/services/system-docs-service.js +701 -0
- package/src/backend/services/task-attachments-service.js +340 -0
- package/src/backend/services/task-grounding.js +60 -0
- package/src/backend/services/task-records/check-run-record.js +146 -0
- package/src/backend/services/task-records/check-runs.js +115 -0
- package/src/backend/services/task-records/heads.js +88 -0
- package/src/backend/services/task-records/material-reads.js +225 -0
- package/src/backend/services/task-records/read-record.js +100 -0
- package/src/backend/services/task-records/record.js +173 -0
- package/src/backend/services/task-records/run-record.js +136 -0
- package/src/backend/services/task-records/shared-state.js +548 -0
- package/src/backend/services/task-records/signing.js +140 -0
- package/src/backend/services/task-records/split-signals.js +52 -0
- package/src/backend/services/task-records/test-runs.js +164 -0
- package/src/backend/services/task-records/trust.js +243 -0
- package/src/backend/services/task-rules.js +81 -0
- package/src/backend/services/task-workstreams.js +90 -0
- package/src/backend/services/terminal-history-service.js +266 -0
- package/src/backend/services/terminal-service.js +267 -0
- package/src/backend/services/test-clock.js +53 -0
- package/src/backend/services/tests/grounding.js +266 -0
- package/src/backend/services/tests/junit.js +104 -0
- package/src/backend/services/tests/teammate-runs.js +134 -0
- package/src/backend/services/tests/test-results.js +234 -0
- package/src/backend/services/tree-watcher.js +204 -0
- package/src/backend/services/trellis-service.js +204 -0
- package/src/backend/services/trusted-roots.js +186 -0
- package/src/backend/services/update-download-service.js +342 -0
- package/src/backend/services/update-service.js +266 -0
- package/src/backend/services/watch-ignore.js +76 -0
- package/src/backend/services/webhook-egress.js +206 -0
- package/src/backend/services/webrtc-service.js +413 -0
- package/src/backend/services/work-changes.js +59 -0
- package/src/backend/services/workstream-binding.js +82 -0
- package/src/backend/services/workstream-commits.js +116 -0
- package/src/backend/services/workstream-imports.js +177 -0
- package/src/backend/services/workstream-service.js +335 -0
- package/src/backend/services/workstream-symbols.js +223 -0
- package/src/backend/services/workstream-watch-service.js +391 -0
- package/src/backend/services/worktree-service.js +235 -0
- package/src/cli/agent.js +100 -0
- package/src/cli/args.js +209 -0
- package/src/cli/conformity.js +106 -0
- package/src/cli/desktop.js +91 -0
- package/src/cli/main.js +411 -0
- package/src/cli/pipeline.js +109 -0
- package/src/cli/plan-verbs.js +259 -0
- package/src/cli/review-adapters.js +220 -0
- package/src/cli/review-output.js +93 -0
- package/src/cli/review-post.js +89 -0
- package/src/cli/review-sink.js +183 -0
- package/src/cli/review-skill.js +44 -0
- package/src/cli/review-verify.js +104 -0
- package/src/cli/review.js +386 -0
- package/src/cli/sarif.js +148 -0
- package/src/cli/verbs.js +360 -0
- package/src/shared/build-info.js +39 -0
- package/src/shared/lib/agent-review.js +199 -0
- package/src/shared/lib/agent-turns.js +140 -0
- package/src/shared/lib/awareness-digest.js +120 -0
- package/src/shared/lib/branch-name.js +45 -0
- package/src/shared/lib/breakpoint-words.js +118 -0
- package/src/shared/lib/budget-words.js +56 -0
- package/src/shared/lib/burst.js +69 -0
- package/src/shared/lib/call-entry.js +105 -0
- package/src/shared/lib/check-compare.js +42 -0
- package/src/shared/lib/check-words.js +216 -0
- package/src/shared/lib/csv.js +62 -0
- package/src/shared/lib/folder-entry.js +87 -0
- package/src/shared/lib/freeze-words.js +60 -0
- package/src/shared/lib/fuzzy.js +84 -0
- package/src/shared/lib/git-state-words.js +80 -0
- package/src/shared/lib/grep-entry.js +86 -0
- package/src/shared/lib/grounding-line.js +61 -0
- package/src/shared/lib/import-line.js +71 -0
- package/src/shared/lib/item-status.js +249 -0
- package/src/shared/lib/line-changes.js +53 -0
- package/src/shared/lib/locator.js +71 -0
- package/src/shared/lib/matcher.js +120 -0
- package/src/shared/lib/merge-order.js +65 -0
- package/src/shared/lib/open-findings.js +68 -0
- package/src/shared/lib/other-work.js +108 -0
- package/src/shared/lib/package-entry.js +142 -0
- package/src/shared/lib/plan-vocab.js +40 -0
- package/src/shared/lib/pptx-xml.js +86 -0
- package/src/shared/lib/proposal-words.js +61 -0
- package/src/shared/lib/recurrence.js +183 -0
- package/src/shared/lib/references.js +72 -0
- package/src/shared/lib/rule-pattern.js +56 -0
- package/src/shared/lib/sdp-fingerprint.js +115 -0
- package/src/shared/lib/sdp-minimal.js +123 -0
- package/src/shared/lib/secret-paths.js +34 -0
- package/src/shared/lib/signal-words.js +172 -0
- package/src/shared/lib/signoff.js +56 -0
- package/src/shared/lib/skills-note.js +60 -0
- package/src/shared/lib/spec-sections.js +78 -0
- package/src/shared/lib/symbol-entry.js +60 -0
- package/src/shared/lib/tool-phrasing.js +338 -0
- package/src/shared/lib/turn-gap.js +27 -0
- package/src/shared/lib/workstream-words.js +38 -0
- package/src/shared/lib/xlsx-xml.js +144 -0
- package/src/shared/lib/zip-reader.js +99 -0
- package/src/shared/types/agent.js +27 -0
- package/src/shared/types/architecture-rules.js +30 -0
- package/src/shared/types/ast.js +15 -0
- package/src/shared/types/breakpoint.js +33 -0
- package/src/shared/types/channel.js +41 -0
- package/src/shared/types/criteria.js +15 -0
- package/src/shared/types/graph.js +15 -0
- package/src/shared/types/index.js +53 -0
- package/src/shared/types/peer.js +36 -0
- package/src/shared/types/pipeline.js +15 -0
- package/src/shared/types/plan.js +15 -0
- package/src/shared/types/play-forward.js +15 -0
- package/src/shared/types/power.js +15 -0
- package/src/shared/types/presence.js +15 -0
- package/src/shared/types/project-config.js +35 -0
- package/src/shared/types/project.js +15 -0
- package/src/shared/types/record.js +15 -0
- package/src/shared/types/recurring.js +15 -0
- package/src/shared/types/review.js +15 -0
- package/src/shared/types/settings.js +114 -0
- package/src/shared/types/stack.js +15 -0
- package/src/shared/types/system-doc.js +15 -0
- package/src/shared/types/system.js +15 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var ruby_exports = {};
|
|
29
|
+
__export(ruby_exports, {
|
|
30
|
+
rubyResolver: () => rubyResolver
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(ruby_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"));
|
|
34
|
+
var import_base = require("./base");
|
|
35
|
+
const RB_EXTS = [".rb", ".rake"];
|
|
36
|
+
const STDLIB = /* @__PURE__ */ new Set([
|
|
37
|
+
"json",
|
|
38
|
+
"yaml",
|
|
39
|
+
"set",
|
|
40
|
+
"date",
|
|
41
|
+
"time",
|
|
42
|
+
"uri",
|
|
43
|
+
"net/http",
|
|
44
|
+
"fileutils",
|
|
45
|
+
"logger",
|
|
46
|
+
"digest",
|
|
47
|
+
"openssl",
|
|
48
|
+
"base64",
|
|
49
|
+
"csv",
|
|
50
|
+
"stringio",
|
|
51
|
+
"pathname",
|
|
52
|
+
"securerandom",
|
|
53
|
+
"singleton",
|
|
54
|
+
"forwardable",
|
|
55
|
+
"ostruct",
|
|
56
|
+
"erb",
|
|
57
|
+
"tempfile",
|
|
58
|
+
"rails",
|
|
59
|
+
"active_record",
|
|
60
|
+
"active_support",
|
|
61
|
+
"action_controller",
|
|
62
|
+
"rspec",
|
|
63
|
+
"minitest",
|
|
64
|
+
"sinatra",
|
|
65
|
+
"rack",
|
|
66
|
+
"sidekiq"
|
|
67
|
+
]);
|
|
68
|
+
function isLikelyGem(source) {
|
|
69
|
+
if (STDLIB.has(source)) return true;
|
|
70
|
+
const head = source.split("/")[0];
|
|
71
|
+
return STDLIB.has(head);
|
|
72
|
+
}
|
|
73
|
+
function resolve(ctx) {
|
|
74
|
+
const { importSource, importerPath, knownFiles, systems } = ctx;
|
|
75
|
+
if (!importSource) return null;
|
|
76
|
+
const source = importSource.replace(/\.rb$/, "");
|
|
77
|
+
if (ctx.isRelative || source.startsWith(".")) {
|
|
78
|
+
const base = import_node_path.default.resolve(import_node_path.default.dirname(importerPath), source);
|
|
79
|
+
return (0, import_base.tryExtensions)(base, knownFiles, RB_EXTS);
|
|
80
|
+
}
|
|
81
|
+
if (isLikelyGem(source)) return null;
|
|
82
|
+
const containing = (0, import_base.findContainingSystem)(importerPath, systems);
|
|
83
|
+
const roots = [];
|
|
84
|
+
if (containing) {
|
|
85
|
+
roots.push(containing.rootPath);
|
|
86
|
+
roots.push(import_node_path.default.join(containing.rootPath, "lib"));
|
|
87
|
+
roots.push(import_node_path.default.join(containing.rootPath, "app"));
|
|
88
|
+
}
|
|
89
|
+
roots.push(ctx.projectRoot, import_node_path.default.join(ctx.projectRoot, "lib"), import_node_path.default.join(ctx.projectRoot, "app"));
|
|
90
|
+
for (const root of roots) {
|
|
91
|
+
const hit = (0, import_base.tryExtensions)(import_node_path.default.join(root, source), knownFiles, RB_EXTS);
|
|
92
|
+
if (hit) return hit;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const rubyResolver = {
|
|
97
|
+
languages: ["ruby"],
|
|
98
|
+
resolve
|
|
99
|
+
};
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
rubyResolver
|
|
103
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var rust_exports = {};
|
|
29
|
+
__export(rust_exports, {
|
|
30
|
+
rustResolver: () => rustResolver
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(rust_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"));
|
|
34
|
+
var import_base = require("./base");
|
|
35
|
+
const RS_EXTS = [".rs"];
|
|
36
|
+
const RS_MOD_SUFFIXES = ["/mod.rs"];
|
|
37
|
+
const STD_PREFIXES = /* @__PURE__ */ new Set(["std", "core", "alloc"]);
|
|
38
|
+
function resolve(ctx) {
|
|
39
|
+
const { importSource, importerPath, knownFiles, systems } = ctx;
|
|
40
|
+
if (!importSource) return null;
|
|
41
|
+
const segments = importSource.split("::").filter((s) => s.length > 0);
|
|
42
|
+
if (segments.length === 0) return null;
|
|
43
|
+
const head = segments[0];
|
|
44
|
+
if (STD_PREFIXES.has(head)) return null;
|
|
45
|
+
const containing = (0, import_base.findContainingSystem)(importerPath, systems);
|
|
46
|
+
if (head === "crate") {
|
|
47
|
+
if (!containing) return null;
|
|
48
|
+
const crateRoot = import_node_path.default.join(containing.rootPath, "src");
|
|
49
|
+
const subpath = segments.slice(1, -1).join("/");
|
|
50
|
+
const base = import_node_path.default.join(crateRoot, subpath);
|
|
51
|
+
return (0, import_base.tryExtensions)(base, knownFiles, [...RS_EXTS, ...RS_MOD_SUFFIXES]) ?? (0, import_base.tryExtensions)(import_node_path.default.join(crateRoot, "lib"), knownFiles, RS_EXTS);
|
|
52
|
+
}
|
|
53
|
+
if (head === "self" || head === "super") {
|
|
54
|
+
const importerDir = import_node_path.default.dirname(importerPath);
|
|
55
|
+
let baseDir = importerDir;
|
|
56
|
+
if (head === "super") baseDir = import_node_path.default.dirname(importerDir);
|
|
57
|
+
const tail = segments.slice(1).join("/");
|
|
58
|
+
return (0, import_base.tryExtensions)(import_node_path.default.join(baseDir, tail), knownFiles, [...RS_EXTS, ...RS_MOD_SUFFIXES]);
|
|
59
|
+
}
|
|
60
|
+
for (const sys of systems) {
|
|
61
|
+
if (sys.language !== "rust") continue;
|
|
62
|
+
if (sys.name === head || sys.packageName === head) {
|
|
63
|
+
const crateRoot = import_node_path.default.join(sys.rootPath, "src");
|
|
64
|
+
const subpath = segments.slice(1).join("/");
|
|
65
|
+
return (0, import_base.tryExtensions)(import_node_path.default.join(crateRoot, subpath), knownFiles, [...RS_EXTS, ...RS_MOD_SUFFIXES]) ?? (0, import_base.tryExtensions)(import_node_path.default.join(crateRoot, "lib"), knownFiles, RS_EXTS);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const rustResolver = {
|
|
71
|
+
languages: ["rust"],
|
|
72
|
+
resolve
|
|
73
|
+
};
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
rustResolver
|
|
77
|
+
});
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var swift_exports = {};
|
|
29
|
+
__export(swift_exports, {
|
|
30
|
+
swiftResolver: () => swiftResolver
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(swift_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"));
|
|
34
|
+
var import_base = require("./base");
|
|
35
|
+
const EXTERNAL_MODULES = /* @__PURE__ */ new Set([
|
|
36
|
+
"Foundation",
|
|
37
|
+
"UIKit",
|
|
38
|
+
"AppKit",
|
|
39
|
+
"SwiftUI",
|
|
40
|
+
"Combine",
|
|
41
|
+
"CoreData",
|
|
42
|
+
"CoreGraphics",
|
|
43
|
+
"CoreLocation",
|
|
44
|
+
"CoreImage",
|
|
45
|
+
"AVFoundation",
|
|
46
|
+
"MapKit",
|
|
47
|
+
"WebKit",
|
|
48
|
+
"Network",
|
|
49
|
+
"OSLog",
|
|
50
|
+
"Dispatch",
|
|
51
|
+
"XCTest",
|
|
52
|
+
"Testing",
|
|
53
|
+
"Swift",
|
|
54
|
+
"ObjectiveC",
|
|
55
|
+
"Darwin",
|
|
56
|
+
"Security",
|
|
57
|
+
"CryptoKit",
|
|
58
|
+
"StoreKit",
|
|
59
|
+
"WidgetKit",
|
|
60
|
+
"ActivityKit",
|
|
61
|
+
"Charts",
|
|
62
|
+
"PhotosUI",
|
|
63
|
+
"UserNotifications",
|
|
64
|
+
"Alamofire",
|
|
65
|
+
"SnapKit",
|
|
66
|
+
"RxSwift",
|
|
67
|
+
"Kingfisher"
|
|
68
|
+
]);
|
|
69
|
+
const SOURCE_ROOTS = ["Sources", "Tests", "src", ""];
|
|
70
|
+
function resolve(ctx) {
|
|
71
|
+
const { importSource, importerPath, knownFiles, systems } = ctx;
|
|
72
|
+
if (!importSource) return null;
|
|
73
|
+
if (EXTERNAL_MODULES.has(importSource)) return null;
|
|
74
|
+
const containing = (0, import_base.findContainingSystem)(importerPath, systems);
|
|
75
|
+
const searchRoots = containing ? [containing.rootPath, ctx.projectRoot] : [ctx.projectRoot];
|
|
76
|
+
for (const base of searchRoots) {
|
|
77
|
+
for (const root of SOURCE_ROOTS) {
|
|
78
|
+
const dir = import_node_path.default.join(base, root, importSource);
|
|
79
|
+
const hit = (0, import_base.pickRepresentativeFile)(dir, knownFiles, {
|
|
80
|
+
extensions: [".swift"],
|
|
81
|
+
// `Sources/BillingCore/BillingCore.swift` is the SwiftPM
|
|
82
|
+
// template's own entry file, so it is the best representative
|
|
83
|
+
// when it exists.
|
|
84
|
+
prefer: importSource
|
|
85
|
+
});
|
|
86
|
+
if (hit) return hit;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
const swiftResolver = {
|
|
92
|
+
languages: ["swift"],
|
|
93
|
+
resolve
|
|
94
|
+
};
|
|
95
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
+
0 && (module.exports = {
|
|
97
|
+
swiftResolver
|
|
98
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var typescript_exports = {};
|
|
29
|
+
__export(typescript_exports, {
|
|
30
|
+
typescriptResolver: () => typescriptResolver
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(typescript_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"));
|
|
34
|
+
var import_base = require("./base");
|
|
35
|
+
function resolve(ctx) {
|
|
36
|
+
const { importSource, importerPath, knownFiles, aliasMap } = ctx;
|
|
37
|
+
if (importSource.startsWith(".") || importSource.startsWith("/")) {
|
|
38
|
+
const importerDir = import_node_path.default.dirname(importerPath);
|
|
39
|
+
const basePath = importSource.startsWith("/") ? importSource : import_node_path.default.resolve(importerDir, importSource);
|
|
40
|
+
return (0, import_base.tryExtensions)(basePath, knownFiles);
|
|
41
|
+
}
|
|
42
|
+
for (const mapping of aliasMap) {
|
|
43
|
+
const { alias, rootPath, entries } = mapping;
|
|
44
|
+
if (importSource === alias) {
|
|
45
|
+
if (entries) {
|
|
46
|
+
for (const e of entries) {
|
|
47
|
+
const candidate = import_node_path.default.resolve(rootPath, e);
|
|
48
|
+
if (knownFiles.has(candidate)) return candidate;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const indexHit = (0, import_base.tryExtensions)(import_node_path.default.join(rootPath, "index"), knownFiles) ?? (0, import_base.tryExtensions)(import_node_path.default.join(rootPath, "src/index"), knownFiles);
|
|
52
|
+
if (indexHit) return indexHit;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (importSource.startsWith(alias + "/")) {
|
|
56
|
+
const subpath = importSource.slice(alias.length + 1);
|
|
57
|
+
const basePath = import_node_path.default.resolve(rootPath, subpath);
|
|
58
|
+
const hit = (0, import_base.tryExtensions)(basePath, knownFiles);
|
|
59
|
+
if (hit) return hit;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const typescriptResolver = {
|
|
65
|
+
languages: ["typescript", "javascript"],
|
|
66
|
+
resolve
|
|
67
|
+
};
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
typescriptResolver
|
|
71
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
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 retention_exports = {};
|
|
19
|
+
__export(retention_exports, {
|
|
20
|
+
DAY_MS: () => DAY_MS,
|
|
21
|
+
DEFAULT_RETENTION_DAYS: () => DEFAULT_RETENTION_DAYS,
|
|
22
|
+
DEVICE_LOG_CAP: () => DEVICE_LOG_CAP,
|
|
23
|
+
retentionCutoff: () => retentionCutoff,
|
|
24
|
+
retentionDays: () => retentionDays,
|
|
25
|
+
retentionWords: () => retentionWords
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(retention_exports);
|
|
28
|
+
var import_settings_service = require("./settings-service");
|
|
29
|
+
const DAY_MS = 24 * 60 * 60 * 1e3;
|
|
30
|
+
const DEFAULT_RETENTION_DAYS = 14;
|
|
31
|
+
const DEVICE_LOG_CAP = 1e4;
|
|
32
|
+
function retentionDays() {
|
|
33
|
+
try {
|
|
34
|
+
return (0, import_settings_service.getSettings)().data.retentionDays;
|
|
35
|
+
} catch {
|
|
36
|
+
return DEFAULT_RETENTION_DAYS;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function retentionCutoff(now = Date.now(), days = retentionDays()) {
|
|
40
|
+
return days === null ? null : now - days * DAY_MS;
|
|
41
|
+
}
|
|
42
|
+
function retentionWords(days = retentionDays()) {
|
|
43
|
+
if (days === null) return "everything";
|
|
44
|
+
return days === 365 ? "a year" : `${days} days`;
|
|
45
|
+
}
|
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
47
|
+
0 && (module.exports = {
|
|
48
|
+
DAY_MS,
|
|
49
|
+
DEFAULT_RETENTION_DAYS,
|
|
50
|
+
DEVICE_LOG_CAP,
|
|
51
|
+
retentionCutoff,
|
|
52
|
+
retentionDays,
|
|
53
|
+
retentionWords
|
|
54
|
+
});
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var review_architecture_exports = {};
|
|
29
|
+
__export(review_architecture_exports, {
|
|
30
|
+
architectureMarkdown: () => architectureMarkdown,
|
|
31
|
+
architectureOf: () => architectureOf,
|
|
32
|
+
callChanges: () => callChanges,
|
|
33
|
+
folderLinks: () => folderLinks,
|
|
34
|
+
folderOf: () => folderOf,
|
|
35
|
+
packagesIn: () => packagesIn
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(review_architecture_exports);
|
|
38
|
+
var import_node_path = __toESM(require("node:path"));
|
|
39
|
+
var import_node_child_process = require("node:child_process");
|
|
40
|
+
var import_snapshot_compare_service = require("./snapshot-compare-service");
|
|
41
|
+
var import_ast_parser = require("./ast-parser");
|
|
42
|
+
var import_rules_at = require("./rules-at");
|
|
43
|
+
var import_architecture_rule = require("./architecture-rule");
|
|
44
|
+
var import_rule_changes = require("./rule-changes");
|
|
45
|
+
var import_review_risk = require("./review-risk");
|
|
46
|
+
const MAX_PARSED = 200;
|
|
47
|
+
const MAX_BYTES = 512 * 1024;
|
|
48
|
+
function git(root, args) {
|
|
49
|
+
try {
|
|
50
|
+
return (0, import_node_child_process.execFileSync)("git", ["-C", root, ...args], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], maxBuffer: 16 * 1024 * 1024, timeout: 2e4 });
|
|
51
|
+
} catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function at(root, commit, rel) {
|
|
56
|
+
const text = git(root, ["show", `${commit}:./${rel}`]);
|
|
57
|
+
return text !== null && text.length <= MAX_BYTES ? text : null;
|
|
58
|
+
}
|
|
59
|
+
function folderOf(p) {
|
|
60
|
+
const parts = p.replace(/\\/g, "/").replace(/^\.\//, "").split("/");
|
|
61
|
+
if (parts.length <= 1) return ".";
|
|
62
|
+
return parts.slice(0, Math.min(2, parts.length - 1)).join("/");
|
|
63
|
+
}
|
|
64
|
+
function folderLinks(added, removed) {
|
|
65
|
+
const links = /* @__PURE__ */ new Map();
|
|
66
|
+
const note = (e, change) => {
|
|
67
|
+
const from = folderOf(e.from);
|
|
68
|
+
const to = folderOf(e.to);
|
|
69
|
+
if (from === to) return;
|
|
70
|
+
const k = `${from}>${to}`;
|
|
71
|
+
let l = links.get(k);
|
|
72
|
+
if (!l) links.set(k, l = { from, to, added: 0, removed: 0, examples: [] });
|
|
73
|
+
l[change]++;
|
|
74
|
+
if (l.examples.length < 3) l.examples.push({ ...e, change });
|
|
75
|
+
};
|
|
76
|
+
for (const e of added) note(e, "added");
|
|
77
|
+
for (const e of removed) note(e, "removed");
|
|
78
|
+
return [...links.values()].sort((a, b) => b.added - a.added || b.removed - a.removed || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));
|
|
79
|
+
}
|
|
80
|
+
function packagesIn(manifest, text) {
|
|
81
|
+
const out = /* @__PURE__ */ new Set();
|
|
82
|
+
if (!text) return out;
|
|
83
|
+
const base = import_node_path.default.posix.basename(manifest);
|
|
84
|
+
if (base === "package.json") {
|
|
85
|
+
try {
|
|
86
|
+
const j = JSON.parse(text);
|
|
87
|
+
for (const k of ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]) {
|
|
88
|
+
const deps = j[k];
|
|
89
|
+
if (deps && typeof deps === "object") for (const name of Object.keys(deps)) out.add(name);
|
|
90
|
+
}
|
|
91
|
+
} catch {
|
|
92
|
+
}
|
|
93
|
+
} else if (base === "requirements.txt") {
|
|
94
|
+
for (const line of text.split("\n")) {
|
|
95
|
+
const m = /^\s*([A-Za-z0-9][A-Za-z0-9._-]*)/.exec(line.replace(/#.*/, ""));
|
|
96
|
+
if (m && !line.trim().startsWith("-")) out.add(m[1].toLowerCase());
|
|
97
|
+
}
|
|
98
|
+
} else if (base === "go.mod") {
|
|
99
|
+
let block = false;
|
|
100
|
+
for (const line of text.split("\n")) {
|
|
101
|
+
const t = line.replace(/\/\/.*/, "").trim();
|
|
102
|
+
if (/^require\s*\($/.test(t)) {
|
|
103
|
+
block = true;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (block && t === ")") {
|
|
107
|
+
block = false;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const m = block ? /^(\S+)\s+\S+/.exec(t) : /^require\s+(\S+)\s+\S+/.exec(t);
|
|
111
|
+
if (m) out.add(m[1]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
const ECOSYSTEM = { "package.json": "npm", "requirements.txt": "pip", "go.mod": "go" };
|
|
117
|
+
function describeCall(c) {
|
|
118
|
+
if ((c.kind === "http_call" || c.kind === "http_route") && c.urlPattern) return `${c.method ? `${c.method} ` : ""}${c.urlPattern}`;
|
|
119
|
+
if (c.kind === "sql_query") return c.sqlText?.trim().split(/\s+/).slice(0, 6).join(" ") ?? c.context ?? null;
|
|
120
|
+
if (c.kind === "entry" && c.urlPattern) return c.urlPattern;
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function callChanges(file, before, after) {
|
|
124
|
+
const key = (c) => `${c.kind}|${describeCall(c)}`;
|
|
125
|
+
const was = new Set(before.map(key));
|
|
126
|
+
const now = new Set(after.map(key));
|
|
127
|
+
const out = [];
|
|
128
|
+
for (const c of after) {
|
|
129
|
+
const what = describeCall(c);
|
|
130
|
+
if (what && !was.has(key(c))) out.push({ file, line: c.line, kind: c.kind, what, change: "added" });
|
|
131
|
+
}
|
|
132
|
+
for (const c of before) {
|
|
133
|
+
const what = describeCall(c);
|
|
134
|
+
if (what && !now.has(key(c))) out.push({ file, line: c.line, kind: c.kind, what, change: "removed" });
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
139
|
+
const CALL_WORDS = {
|
|
140
|
+
http_call: "an HTTP call to",
|
|
141
|
+
http_route: "a route,",
|
|
142
|
+
sql_query: "SQL:",
|
|
143
|
+
subprocess: "a command:",
|
|
144
|
+
env_lookup: "an environment variable:",
|
|
145
|
+
entry: ""
|
|
146
|
+
};
|
|
147
|
+
async function architectureOf(projectRoot, baseRef, headRef) {
|
|
148
|
+
const base = git(projectRoot, ["rev-parse", "--verify", "--quiet", `${baseRef}^{commit}`])?.trim();
|
|
149
|
+
const head = git(projectRoot, ["rev-parse", "--verify", "--quiet", `${headRef}^{commit}`])?.trim();
|
|
150
|
+
if (!base) return { error: `${baseRef} is not a commit in this repository` };
|
|
151
|
+
if (!head) return { error: `${headRef} is not a commit in this repository` };
|
|
152
|
+
const cmp = (0, import_snapshot_compare_service.compareSnapshots)(`commit:${base}`, `commit:${head}`, projectRoot);
|
|
153
|
+
const rel = (p) => (import_node_path.default.isAbsolute(p) ? import_node_path.default.relative(projectRoot, p) : p).split(import_node_path.default.sep).join("/");
|
|
154
|
+
const edgesKnown = cmp.ok && cmp.result.edgesComparable;
|
|
155
|
+
const added = cmp.ok && edgesKnown ? cmp.result.diff.addedEdges.map((e) => ({ from: rel(e.source), to: rel(e.target) })) : [];
|
|
156
|
+
const removed = cmp.ok && edgesKnown ? cmp.result.diff.removedEdges.map((e) => ({ from: rel(e.source), to: rel(e.target) })) : [];
|
|
157
|
+
const folders = folderLinks(added, removed);
|
|
158
|
+
const changed = (git(projectRoot, ["diff", "--name-only", "--no-renames", base, head, "--"]) ?? "").split("\n").map((s) => s.trim()).filter(Boolean);
|
|
159
|
+
const packages = [];
|
|
160
|
+
for (const f of changed) {
|
|
161
|
+
const eco = ECOSYSTEM[import_node_path.default.posix.basename(f)];
|
|
162
|
+
if (!eco) continue;
|
|
163
|
+
const was = packagesIn(f, at(projectRoot, base, f));
|
|
164
|
+
const now = packagesIn(f, at(projectRoot, head, f));
|
|
165
|
+
const a = [...now].filter((p) => !was.has(p)).sort();
|
|
166
|
+
const r = [...was].filter((p) => !now.has(p)).sort();
|
|
167
|
+
if (a.length || r.length) packages.push({ manifest: f, ecosystem: eco, added: a, removed: r });
|
|
168
|
+
}
|
|
169
|
+
const calls = [];
|
|
170
|
+
for (const f of changed.slice(0, MAX_PARSED)) {
|
|
171
|
+
const before = at(projectRoot, base, f);
|
|
172
|
+
const after = at(projectRoot, head, f);
|
|
173
|
+
let b = [];
|
|
174
|
+
let h = [];
|
|
175
|
+
try {
|
|
176
|
+
b = before !== null ? (0, import_ast_parser.parseVirtualFile)(import_node_path.default.join(projectRoot, f), before)?.callsites ?? [] : [];
|
|
177
|
+
} catch {
|
|
178
|
+
b = [];
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
h = after !== null ? (0, import_ast_parser.parseVirtualFile)(import_node_path.default.join(projectRoot, f), after)?.callsites ?? [] : [];
|
|
182
|
+
} catch {
|
|
183
|
+
h = [];
|
|
184
|
+
}
|
|
185
|
+
calls.push(...callChanges(f, b, h));
|
|
186
|
+
}
|
|
187
|
+
const rules = [];
|
|
188
|
+
const baseRules = await (0, import_rules_at.rulesAt)(projectRoot, base);
|
|
189
|
+
const headRules = await (0, import_rules_at.rulesAt)(projectRoot, head);
|
|
190
|
+
if (baseRules) {
|
|
191
|
+
for (const b of (0, import_architecture_rule.checkEdges)(baseRules.rules, added)) {
|
|
192
|
+
const r = baseRules.rules.find((x) => x.id === b.rule);
|
|
193
|
+
rules.push({ rule: r.id, words: (0, import_architecture_rule.ruleWords)(r), kind: "breach", detail: `${b.from} now imports ${b.to}, which it forbids` });
|
|
194
|
+
}
|
|
195
|
+
if (headRules) {
|
|
196
|
+
for (const c of (0, import_rule_changes.diffRules)(baseRules.rules, headRules.rules, added)) {
|
|
197
|
+
rules.push({ rule: c.rule, words: c.after ? (0, import_architecture_rule.ruleWords)(c.after) : c.before ? (0, import_architecture_rule.ruleWords)(c.before) : c.rule, kind: c.effect, detail: c.words });
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const words = [];
|
|
202
|
+
for (const r of rules.filter((x) => x.kind === "breach" || x.kind === "loosens")) words.push(r.kind === "breach" ? `\u2717 ${r.detail} (${r.rule})` : r.detail);
|
|
203
|
+
for (const c of calls.filter((x) => x.change === "added")) words.push(`Adds ${CALL_WORDS[c.kind] ? `${CALL_WORDS[c.kind]} ` : ""}${c.what} (${c.file}:${c.line})`);
|
|
204
|
+
for (const p of packages) {
|
|
205
|
+
if (p.added.length) words.push(`Adds ${plural(p.added.length, `${p.ecosystem} package`)}: ${p.added.join(", ")} (${p.manifest})`);
|
|
206
|
+
if (p.removed.length) words.push(`Drops ${plural(p.removed.length, `${p.ecosystem} package`)}: ${p.removed.join(", ")} (${p.manifest})`);
|
|
207
|
+
}
|
|
208
|
+
for (const l of folders) {
|
|
209
|
+
const bits = [l.added ? `${plural(l.added, "import")} added` : "", l.removed ? `${plural(l.removed, "import")} removed` : ""].filter(Boolean).join(", ");
|
|
210
|
+
words.push(`${l.from} \u2192 ${l.to}: ${bits}`);
|
|
211
|
+
}
|
|
212
|
+
for (const c of calls.filter((x) => x.change === "removed")) words.push(`Drops ${CALL_WORDS[c.kind] ? `${CALL_WORDS[c.kind]} ` : ""}${c.what} (${c.file})`);
|
|
213
|
+
for (const r of rules.filter((x) => x.kind === "tightens" || x.kind === "reworded")) words.push(r.detail);
|
|
214
|
+
if (!edgesKnown) words.push("The imports between folders are not known: one side's import graph could not be read.");
|
|
215
|
+
const inputs = await (0, import_review_risk.riskInputs)(projectRoot, changed, headRef);
|
|
216
|
+
const order = (0, import_review_risk.riskOrder)(changed, inputs);
|
|
217
|
+
return { base, head, edgesKnown, folders, packages, calls, rules, words, order };
|
|
218
|
+
}
|
|
219
|
+
function architectureMarkdown(a) {
|
|
220
|
+
const lines = ["### What this change does to the architecture", ""];
|
|
221
|
+
const shown = a.words.filter((w) => !w.startsWith("The imports between folders are not known"));
|
|
222
|
+
if (shown.length === 0) lines.push("No imports between folders, outside packages, cross-system calls or rules change.");
|
|
223
|
+
else for (const w of a.words) lines.push(`- ${w}`);
|
|
224
|
+
if (shown.length === 0 && !a.edgesKnown) lines.push("", "_The imports between folders are not known: one side's import graph could not be read._");
|
|
225
|
+
if (a.order?.length) lines.push("", (0, import_review_risk.riskMarkdown)(a.order));
|
|
226
|
+
return lines.join("\n");
|
|
227
|
+
}
|
|
228
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
229
|
+
0 && (module.exports = {
|
|
230
|
+
architectureMarkdown,
|
|
231
|
+
architectureOf,
|
|
232
|
+
callChanges,
|
|
233
|
+
folderLinks,
|
|
234
|
+
folderOf,
|
|
235
|
+
packagesIn
|
|
236
|
+
});
|