@iowarp/clio-coder 0.3.6 → 0.3.8
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/CHANGELOG.md +59 -0
- package/README.md +22 -6
- package/dist/{acp-2BEHC4DL.js → acp-U67UHUK2.js} +14 -14
- package/dist/{agents-LNNFTM53.js → agents-YU6SGALZ.js} +42 -35
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-KXXFI2VS.js → auth-5ZPJOIVG.js} +32 -24
- package/dist/builtins-C6JMZVV6.js +17 -0
- package/dist/{chunk-E25LMLRW.js → chunk-26LEYJZH.js} +2 -2
- package/dist/{chunk-TSHXZTOQ.js → chunk-2HEJ2F35.js} +5 -5
- package/dist/{chunk-PBTHKCPN.js → chunk-2HFZQUHL.js} +7 -7
- package/dist/{chunk-FO5ZOVUY.js → chunk-3BINW3FP.js} +5 -5
- package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
- package/dist/{chunk-CKXWIANG.js → chunk-4SPRNWDE.js} +18 -16
- package/dist/{chunk-E2ER4LJF.js → chunk-5C3AQNDW.js} +25 -1
- package/dist/{chunk-XF5N4U5A.js → chunk-5DHKRSMQ.js} +9 -8
- package/dist/{chunk-43AOLP7E.js → chunk-5FR74PWO.js} +2 -1
- package/dist/{chunk-EKY57CSP.js → chunk-5H3GB5BO.js} +68 -772
- package/dist/{chunk-6XXKFVSN.js → chunk-5Q2VVUKB.js} +4 -4
- package/dist/{chunk-DJVECN66.js → chunk-7RFXX52T.js} +295 -3705
- package/dist/{chunk-ZXF4XRKW.js → chunk-7RGZWPB6.js} +158 -8
- package/dist/{chunk-FYYLNIL5.js → chunk-A2NJGIB3.js} +2 -2
- package/dist/{chunk-XXQNGV4M.js → chunk-A3WNZD3P.js} +548 -72
- package/dist/{chunk-VEZEGCGW.js → chunk-B5CSFE7B.js} +23 -21
- package/dist/{chunk-2SFS6XQE.js → chunk-DGSYXYMX.js} +3 -2
- package/dist/chunk-DR52UMZW.js +21 -0
- package/dist/{chunk-ZWLZP4ZT.js → chunk-DYIM5TJT.js} +98 -12
- package/dist/{chunk-QKMUKYO7.js → chunk-E77JEWSD.js} +270 -125
- package/dist/{chunk-LYF7OHWH.js → chunk-EMYUUSFG.js} +12 -467
- package/dist/{chunk-4VP4KH3K.js → chunk-EQ63NRB7.js} +8 -8
- package/dist/chunk-FBVTI2TJ.js +518 -0
- package/dist/{chunk-R46L2BIR.js → chunk-FHJEP5SW.js} +19 -25
- package/dist/{chunk-WR67VIZY.js → chunk-GN57SG4G.js} +66 -8
- package/dist/{chunk-RD5U66HV.js → chunk-GPIEI3LY.js} +9 -9
- package/dist/{chunk-PCZJO5TI.js → chunk-GU2UIAFZ.js} +13 -178
- package/dist/chunk-GWS3VEIW.js +195 -0
- package/dist/chunk-H7IXIC72.js +103 -0
- package/dist/{chunk-3BPUFZDL.js → chunk-HLE42MG7.js} +3 -3
- package/dist/{chunk-24I7BN55.js → chunk-IFBNV6H6.js} +3 -3
- package/dist/{chunk-QNQHSOLF.js → chunk-IGWKHNIQ.js} +114 -55
- package/dist/chunk-IIZWH4XA.js +172 -0
- package/dist/{chunk-AD2SYQYC.js → chunk-IJ7RPIYJ.js} +124 -6
- package/dist/chunk-J3YUBZWY.js +382 -0
- package/dist/{chunk-5JGRAMKL.js → chunk-JOZYP4GM.js} +8 -6
- package/dist/{chunk-OH3TOQTB.js → chunk-K4XHGFR5.js} +751 -15
- package/dist/{chunk-EYPA3EGJ.js → chunk-KTYTFRMB.js} +178 -14
- package/dist/chunk-LU7P4LHA.js +33 -0
- package/dist/chunk-ME6CCNFO.js +108 -0
- package/dist/chunk-MXKJU4JB.js +1100 -0
- package/dist/{chunk-RY3LY4J5.js → chunk-N22QMJKY.js} +21 -18
- package/dist/chunk-NMPKI6XL.js +3006 -0
- package/dist/chunk-NUGM5KR6.js +165 -0
- package/dist/{chunk-22NAGB7X.js → chunk-P43ETTHK.js} +5 -94
- package/dist/{chunk-NILBFAPG.js → chunk-PMDBGQSJ.js} +2 -2
- package/dist/chunk-PT7HYKEM.js +165 -0
- package/dist/chunk-RVG5JXAL.js +41 -0
- package/dist/{chunk-GEYXPTRF.js → chunk-RWSI4YD7.js} +2 -2
- package/dist/{chunk-4BPJXDWC.js → chunk-TANS5ZJS.js} +35 -19
- package/dist/{verifiers-NCBTHHN2.js → chunk-TB5666IT.js} +67 -324
- package/dist/{chunk-QM3F2GKX.js → chunk-TLQJPP24.js} +7927 -8088
- package/dist/{chunk-G7MUEIGA.js → chunk-TT36MB5S.js} +2 -1
- package/dist/chunk-TTHACPOM.js +961 -0
- package/dist/{chunk-6US73PDB.js → chunk-TYPGUK6W.js} +7 -7
- package/dist/{chunk-MFFY33HR.js → chunk-U6MBIEMB.js} +554 -209
- package/dist/chunk-VAWNZU7Z.js +242 -0
- package/dist/{chunk-IR4CFBFN.js → chunk-VCBR6CU7.js} +12 -12
- package/dist/{chunk-WHJYKASB.js → chunk-VHN4MY6O.js} +2 -2
- package/dist/{chunk-XYDYPRZI.js → chunk-VWZOAB7K.js} +10 -10
- package/dist/{chunk-ZRGEBJ4T.js → chunk-WLFILSD5.js} +48 -48
- package/dist/{chunk-K7T3E2SR.js → chunk-WNIJTQQK.js} +12 -11
- package/dist/{chunk-CYQKWTG3.js → chunk-WSB3FPX7.js} +68 -20
- package/dist/{chunk-KHSFENX2.js → chunk-WWCZ5F23.js} +116 -14
- package/dist/{chunk-XE2VEJHX.js → chunk-WXY7KU3G.js} +2 -2
- package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
- package/dist/{chunk-KOHPCX4K.js → chunk-XWSF374K.js} +5 -5
- package/dist/{chunk-CJUB2JJ2.js → chunk-YS5VLNH5.js} +10 -10
- package/dist/{chunk-ZZMN5OM4.js → chunk-ZNLWCMVZ.js} +2 -2
- package/dist/{chunk-WHGPSPT5.js → chunk-ZVJ5BLO2.js} +2 -2
- package/dist/cli/index.js +33 -31
- package/dist/{clio-M2KGYUFZ.js → clio-QVTYJ57A.js} +10 -10
- package/dist/{code-nav-GQNL7XA6.js → code-nav-FGGFIE7L.js} +5 -5
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/{components-5TTYYX6G.js → components-ZFA3SAER.js} +9 -9
- package/dist/{config-XUUYQIWO.js → config-LW5IJFQN.js} +65 -55
- package/dist/{configure-IHJ7YOMV.js → configure-7XIZCOU4.js} +29 -24
- package/dist/{context-75MIWW3U.js → context-L3WL3X7K.js} +54 -43
- package/dist/{context-ZQ7SIFJV.js → context-N52ZA626.js} +30 -14
- package/dist/{context-74JLXAWD.js → context-Y6Y7QPR6.js} +12 -12
- package/dist/{context-clear-GYKWNUML.js → context-clear-MBQRLSDQ.js} +54 -43
- package/dist/{context-index-SSR5ECNE.js → context-index-HVMFQHK3.js} +5 -5
- package/dist/{context-working-set-UX5KEP4J.js → context-working-set-GS6DSO7F.js} +18 -18
- package/dist/{dispatch-runner-GIJBHNFL.js → dispatch-runner-22ZCNOM3.js} +367 -79
- package/dist/{docs-6FZSCG5B.js → docs-7LQ23DLM.js} +9 -9
- package/dist/{doctor-SVJ5BZCW.js → doctor-M7YEDGAE.js} +27 -23
- package/dist/{eval-CG6LLBLD.js → eval-BEC2WHDA.js} +73 -20
- package/dist/{evidence-ZYFIEN42.js → evidence-REJUMSKM.js} +70 -59
- package/dist/{evolve-QGEXEMDW.js → evolve-PY5ZBA5K.js} +50 -39
- package/dist/{extensions-ADGNCJJD.js → extensions-HVKU65YU.js} +7 -7
- package/dist/{fleet-S5R4ZOQY.js → fleet-7WZEWRFA.js} +236 -377
- package/dist/fleet-commands-UVHWM76J.js +70 -0
- package/dist/fleet-graph-6ULH7PES.js +125 -0
- package/dist/fleet-new-RDVJLHHH.js +48 -0
- package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-J53T6CCE.js} +5 -5
- package/dist/fleet-validate-72PC4SLA.js +79 -0
- package/dist/{init-5DRU55YR.js → init-OG3TPGQG.js} +69 -57
- package/dist/library-CNTMPLRF.js +217 -0
- package/dist/{memory-7YKKR6UC.js → memory-6IS7F275.js} +52 -41
- package/dist/{models-ZPOLRU2C.js → models-ENRJDA5W.js} +37 -31
- package/dist/{monitor-US5F5YGZ.js → monitor-XLDVO7TN.js} +79 -42
- package/dist/{orchestrator-E2AL4T5N.js → orchestrator-6KSPYRHA.js} +4126 -762
- package/dist/{paths-E7KYAQWE.js → paths-DBXMZMDU.js} +6 -6
- package/dist/registry-LG64LTF4.js +11 -0
- package/dist/{reset-KZ652EK6.js → reset-RZ4ER727.js} +12 -12
- package/dist/{run-SRNBKDWD.js → run-Y2CNK5RU.js} +89 -76
- package/dist/{share-CGZE33UP.js → share-A55GYP6Z.js} +37 -13
- package/dist/{skills-S2X4DLY5.js → skills-ALC5J6AT.js} +29 -13
- package/dist/{skills-eval-W2GGIC4R.js → skills-eval-JPBEBYQU.js} +60 -48
- package/dist/support-MIETYA5E.js +38 -0
- package/dist/{targets-54SWINWB.js → targets-VGNXIR3S.js} +46 -36
- package/dist/{terminal-lease-SAIF2OGY.js → terminal-lease-WOBR64YA.js} +4 -4
- package/dist/{uninstall-BVLWXKBT.js → uninstall-ZJF5H5ZN.js} +9 -9
- package/dist/{upgrade-JKAR27XC.js → upgrade-FUSUAGHR.js} +31 -28
- package/dist/{usage-MSAWCLX4.js → usage-N4MKVHKD.js} +140 -68
- package/dist/verifiers-YAWOJ3H2.js +336 -0
- package/dist/{verify-X5HDROLA.js → verify-LTDHYBGY.js} +10 -9
- package/dist/{wiki-generate-GUSOQ6ZP.js → wiki-generate-6M7GHTBJ.js} +75 -62
- package/dist/worker/entry.js +67 -57
- package/docs/README.md +3 -2
- package/docs/acp.md +1 -1
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-versions.md +11 -6
- package/docs/built-in-agents.md +26 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +83 -3
- package/docs/configuration-and-targets.md +86 -4
- package/docs/context-engine.md +1 -1
- package/docs/development-pipeline.md +1 -1
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +3 -3
- package/docs/documentation-guide.md +3 -3
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +74 -10
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +4 -1
- package/docs/extensions-and-sharing.md +6 -2
- package/docs/fleet-demo-runbook.md +2 -2
- package/docs/fleet-dispatch.md +228 -16
- package/docs/git-commit-provenance.md +2 -2
- package/docs/glossary.md +22 -2
- package/docs/installation-and-lifecycle.md +2 -2
- package/docs/middleware-and-components.md +2 -1
- package/docs/model-catalog.md +1 -1
- package/docs/observability.md +56 -9
- package/docs/proactive-memory.md +1 -1
- package/docs/prompt-envelope-and-tools.md +4 -2
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +83 -65
- package/docs/resource-library.md +59 -0
- package/docs/safety-model.md +2 -2
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +37 -1
- package/docs/skills-marketplace.md +16 -3
- package/docs/tool-usage.md +14 -7
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +1 -2
- package/src/cli/argv.ts +5 -0
- package/src/cli/configure.ts +107 -23
- package/src/cli/doctor.ts +5 -1
- package/src/cli/evidence.ts +30 -25
- package/src/cli/fleet-commands.ts +37 -0
- package/src/cli/fleet-graph.ts +102 -0
- package/src/cli/fleet-new.ts +36 -0
- package/src/cli/fleet-preflight.ts +111 -0
- package/src/cli/fleet-validate.ts +30 -0
- package/src/cli/fleet.ts +173 -335
- package/src/cli/index.ts +3 -1
- package/src/cli/library.ts +190 -0
- package/src/cli/share.ts +13 -1
- package/src/cli/shared.ts +1 -0
- package/src/cli/targets.ts +4 -1
- package/src/cli/usage.ts +111 -19
- package/src/cli/validate-model.ts +60 -5
- package/src/core/bus-events.ts +29 -0
- package/src/core/commit-attribution.ts +4 -4
- package/src/core/config.ts +130 -0
- package/src/core/defaults.ts +81 -0
- package/src/core/path-boundary.ts +100 -0
- package/src/domains/agents/builtins/architect.md +1 -0
- package/src/domains/agents/builtins/oracle.md +33 -0
- package/src/domains/agents/catalog.ts +13 -1
- package/src/domains/agents/extension.ts +2 -11
- package/src/domains/agents/fleet-contract.ts +304 -24
- package/src/domains/agents/index.ts +14 -0
- package/src/domains/agents/recipe.ts +7 -1
- package/src/domains/agents/registry.ts +73 -5
- package/src/domains/agents/result-contract.ts +360 -15
- package/src/domains/agents/write-boundary.ts +15 -50
- package/src/domains/config/classify.ts +4 -0
- package/src/domains/context/project-rules.ts +51 -1
- package/src/domains/dispatch/active-route-planner.ts +14 -0
- package/src/domains/dispatch/assignment-reconcile.ts +22 -5
- package/src/domains/dispatch/assignment-store.ts +151 -14
- package/src/domains/dispatch/backoff.ts +2 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
- package/src/domains/dispatch/contract.ts +48 -0
- package/src/domains/dispatch/delegation-plan.ts +164 -0
- package/src/domains/dispatch/execution-plan.ts +76 -5
- package/src/domains/dispatch/execution-role.ts +12 -2
- package/src/domains/dispatch/execution-scheduler.ts +183 -67
- package/src/domains/dispatch/extension.ts +412 -74
- package/src/domains/dispatch/fleet-gate.ts +14 -0
- package/src/domains/dispatch/fleet-plan.ts +63 -3
- package/src/domains/dispatch/fleet-run.ts +791 -0
- package/src/domains/dispatch/gate-role-prompts.ts +47 -0
- package/src/domains/dispatch/host-verification.ts +178 -0
- package/src/domains/dispatch/index.ts +41 -1
- package/src/domains/dispatch/intent-requirements.ts +40 -0
- package/src/domains/dispatch/intent.ts +235 -0
- package/src/domains/dispatch/path-scope.ts +370 -0
- package/src/domains/dispatch/receipt-integrity.ts +9 -4
- package/src/domains/dispatch/state.ts +36 -3
- package/src/domains/dispatch/types.ts +64 -12
- package/src/domains/dispatch/validation.ts +69 -6
- package/src/domains/dispatch/write-boundary-enforcer.ts +45 -0
- package/src/domains/dispatch/write-boundary.ts +201 -22
- package/src/domains/eval/metrics/evidence.ts +79 -2
- package/src/domains/eval/runners/clio-run.ts +12 -2
- package/src/domains/evidence/build.ts +69 -11
- package/src/domains/evidence/index.ts +21 -0
- package/src/domains/evidence/provenance.ts +46 -11
- package/src/domains/evidence/trust-projection.ts +274 -0
- package/src/domains/evidence/trust-status.ts +155 -18
- package/src/domains/evidence/types.ts +4 -0
- package/src/domains/extensions/discovery.ts +88 -1
- package/src/domains/extensions/resources.ts +20 -8
- package/src/domains/extensions/state.ts +6 -2
- package/src/domains/extensions/types.ts +4 -1
- package/src/domains/lifecycle/doctor.ts +140 -1
- package/src/domains/middleware/index.ts +15 -0
- package/src/domains/middleware/watchdog.ts +281 -0
- package/src/domains/observability/contract.ts +3 -1
- package/src/domains/observability/cost.ts +12 -1
- package/src/domains/observability/extension.ts +2 -2
- package/src/domains/observability/index.ts +10 -0
- package/src/domains/observability/out-of-turn-usage.ts +223 -0
- package/src/domains/prompts/contract.ts +3 -5
- package/src/domains/providers/extension.ts +30 -2
- package/src/domains/resources/common-loader.ts +3 -0
- package/src/domains/resources/index.ts +20 -0
- package/src/domains/resources/library.ts +326 -0
- package/src/domains/resources/prompts/loader.ts +119 -14
- package/src/domains/resources/skills/marketplace.ts +37 -12
- package/src/domains/safety/policy-engine.ts +5 -5
- package/src/domains/safety/run-effects.ts +64 -1
- package/src/domains/safety/scope.ts +7 -12
- package/src/domains/session/handoff.ts +629 -0
- package/src/domains/share/archive.ts +67 -2
- package/src/engine/acp/server.ts +4 -1
- package/src/engine/prompt-templates.ts +18 -1
- package/src/engine/worker-runtime.ts +6 -3
- package/src/entry/orchestrator.ts +37 -0
- package/src/interactive/bus-notices.ts +26 -0
- package/src/interactive/chat-loop.ts +235 -1
- package/src/interactive/chat-renderer.ts +22 -0
- package/src/interactive/cost-overlay.ts +31 -3
- package/src/interactive/council-dispatch.ts +30 -0
- package/src/interactive/council-grid.ts +213 -0
- package/src/interactive/council.ts +99 -0
- package/src/interactive/dispatch-board.ts +311 -17
- package/src/interactive/fleet-run-preview.ts +307 -0
- package/src/interactive/footer/notifications.ts +219 -0
- package/src/interactive/handoff-round.ts +56 -0
- package/src/interactive/interactive-application.ts +43 -1
- package/src/interactive/interactive-event-projection.ts +23 -1
- package/src/interactive/interactive-slash-runtime.ts +52 -2
- package/src/interactive/interactive-subscriptions.ts +14 -2
- package/src/interactive/oracle.ts +179 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +6 -0
- package/src/interactive/overlay-general-openers.ts +190 -1
- package/src/interactive/overlay-key-routing.ts +17 -1
- package/src/interactive/overlay-lifecycle.ts +41 -1
- package/src/interactive/overlay-permission-lifecycle.ts +10 -0
- package/src/interactive/overlay-resource-openers.ts +11 -3
- package/src/interactive/overlay-session-lifecycle.ts +234 -2
- package/src/interactive/overlays/fleet-run-approval.ts +208 -0
- package/src/interactive/overlays/handoff-review.ts +185 -0
- package/src/interactive/overlays/library-install-confirm.ts +151 -0
- package/src/interactive/overlays/list-overlay.ts +168 -2
- package/src/interactive/overlays/settings.ts +221 -30
- package/src/interactive/overlays/side-question.ts +139 -0
- package/src/interactive/overlays/skills-hub.ts +401 -15
- package/src/interactive/side-question.ts +171 -0
- package/src/interactive/slash-commands.ts +439 -7
- package/src/interactive/slash-spec.ts +19 -6
- package/src/interactive/theme/tokens.ts +30 -0
- package/src/interactive/turn-middleware.ts +15 -1
- package/src/interactive/view/artifacts.ts +42 -9
- package/src/interactive/view/view-overlay.ts +15 -3
- package/src/interactive/watchdog-run.ts +75 -0
- package/src/interactive/worker-receipts.ts +14 -2
- package/src/interactive/worker-share.ts +56 -1
- package/src/interactive/worker-stream.ts +15 -0
- package/src/tools/bootstrap.ts +3 -0
- package/src/tools/compete-worktrees.ts +13 -79
- package/src/tools/dispatch-admission.ts +251 -18
- package/src/tools/dispatch-arguments.ts +84 -1
- package/src/tools/dispatch-plan.ts +165 -6
- package/src/tools/dispatch-runner.ts +364 -23
- package/src/tools/dispatch-types.ts +20 -1
- package/src/tools/dispatch.ts +72 -2
- package/src/tools/monitor.ts +29 -0
- package/src/tools/profiles.ts +18 -4
- package/src/tools/task-worktree.ts +238 -0
- package/src/tools/verify/authoring.ts +61 -1
- package/src/tools/verify/scripts.ts +62 -0
- package/src/tools/worker-evidence.ts +21 -14
- package/src/worker/spec-contract.ts +3 -1
- package/dist/chunk-HC4CLZ2Y.js +0 -68
|
@@ -2,16 +2,32 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
clampTimerDelayMs
|
|
4
4
|
} from "./chunk-FQ4SKYE4.js";
|
|
5
|
-
import {
|
|
6
|
-
clioStateDir
|
|
7
|
-
} from "./chunk-BNAZZHFG.js";
|
|
8
5
|
import {
|
|
9
6
|
AI_AGENT_NAME
|
|
10
7
|
} from "./chunk-6EJMN2Y3.js";
|
|
8
|
+
import {
|
|
9
|
+
clioStateDir
|
|
10
|
+
} from "./chunk-BNAZZHFG.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
14
14
|
|
|
15
|
+
// src/core/git-commit-attribution.ts
|
|
16
|
+
init_esm_shims();
|
|
17
|
+
import { execFileSync } from "node:child_process";
|
|
18
|
+
import {
|
|
19
|
+
accessSync,
|
|
20
|
+
chmodSync,
|
|
21
|
+
existsSync,
|
|
22
|
+
constants as fsConstants,
|
|
23
|
+
mkdirSync,
|
|
24
|
+
readFileSync,
|
|
25
|
+
renameSync,
|
|
26
|
+
rmSync,
|
|
27
|
+
writeFileSync
|
|
28
|
+
} from "node:fs";
|
|
29
|
+
import { join, resolve } from "node:path";
|
|
30
|
+
|
|
15
31
|
// src/core/commit-attribution.ts
|
|
16
32
|
init_esm_shims();
|
|
17
33
|
var CLIO_COMMIT_IDENTITY = "Clio Coder <clio-coder@iowarp.ai>";
|
|
@@ -32,7 +48,7 @@ var KNOWN_CLIO_TRAILERS = new Set(
|
|
|
32
48
|
Object.values(CLIO_COMMIT_TRAILERS).map((line) => normalizedTrailer(line)).filter((line) => line !== null)
|
|
33
49
|
);
|
|
34
50
|
function isClioTrailer(key) {
|
|
35
|
-
return KNOWN_CLIO_TRAILERS.has(key) || key.startsWith("clio-evidence:receipt-
|
|
51
|
+
return KNOWN_CLIO_TRAILERS.has(key) || key.startsWith("clio-evidence:receipt-v20/sha256:");
|
|
36
52
|
}
|
|
37
53
|
function trailerBlockStart(lines) {
|
|
38
54
|
if (lines.length < 2) return null;
|
|
@@ -51,10 +67,10 @@ function trailerBlockStart(lines) {
|
|
|
51
67
|
return sawTrailer ? first : null;
|
|
52
68
|
}
|
|
53
69
|
function receiptTrailer(receipt) {
|
|
54
|
-
if (receipt?.version !==
|
|
70
|
+
if (receipt?.version !== 20 || receipt.algorithm !== "sha256" || receipt.integrityValid !== true || receipt.directlyRelevant !== true || !SHA256.test(receipt.digest)) {
|
|
55
71
|
return null;
|
|
56
72
|
}
|
|
57
|
-
return `Clio-Evidence: receipt-
|
|
73
|
+
return `Clio-Evidence: receipt-v20/sha256:${receipt.digest}`;
|
|
58
74
|
}
|
|
59
75
|
function attributeCommitMessage(originalMessage, evidence, enabled = true) {
|
|
60
76
|
if (!enabled) return originalMessage;
|
|
@@ -96,20 +112,6 @@ function attributeCommitMessage(originalMessage, evidence, enabled = true) {
|
|
|
96
112
|
}
|
|
97
113
|
|
|
98
114
|
// src/core/git-commit-attribution.ts
|
|
99
|
-
init_esm_shims();
|
|
100
|
-
import { execFileSync } from "node:child_process";
|
|
101
|
-
import {
|
|
102
|
-
accessSync,
|
|
103
|
-
chmodSync,
|
|
104
|
-
existsSync,
|
|
105
|
-
constants as fsConstants,
|
|
106
|
-
mkdirSync,
|
|
107
|
-
readFileSync,
|
|
108
|
-
renameSync,
|
|
109
|
-
rmSync,
|
|
110
|
-
writeFileSync
|
|
111
|
-
} from "node:fs";
|
|
112
|
-
import { join, resolve } from "node:path";
|
|
113
115
|
var CLIO_GIT_COMMITS_ENABLED_ENV = "CLIO_CODER_GIT_COMMITS_ENABLED";
|
|
114
116
|
var ASSISTED_ENV = "CLIO_CODER_COMMIT_ASSISTED";
|
|
115
117
|
var AUTHORED_ENV = "CLIO_CODER_COMMIT_AUTHORED";
|
|
@@ -565,4 +567,4 @@ export {
|
|
|
565
567
|
runCommandVector,
|
|
566
568
|
combineSafeOutput
|
|
567
569
|
};
|
|
568
|
-
//# sourceMappingURL=chunk-
|
|
570
|
+
//# sourceMappingURL=chunk-B5CSFE7B.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
enabledExtensionResourceRoots
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DYIM5TJT.js";
|
|
5
5
|
import {
|
|
6
6
|
require_dist
|
|
7
7
|
} from "./chunk-APJ265NV.js";
|
|
@@ -29,6 +29,7 @@ function defaultScopedResourceRoots(kind, cwd) {
|
|
|
29
29
|
return [
|
|
30
30
|
...enabledExtensionResourceRoots(kind, cwd).map((root) => ({
|
|
31
31
|
path: root.path,
|
|
32
|
+
rootPath: root.rootPath,
|
|
32
33
|
scope: "package",
|
|
33
34
|
source: root.source,
|
|
34
35
|
precedence: COMPAT_RESOURCE_PRECEDENCE.extension
|
|
@@ -119,4 +120,4 @@ export {
|
|
|
119
120
|
splitYamlFrontmatter,
|
|
120
121
|
stringField
|
|
121
122
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-DGSYXYMX.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-3R73A4XB.js";
|
|
5
|
+
|
|
6
|
+
// src/domains/config/agent-namespace.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
function assertAgentIdNamespace(nativeRecipes, acpDelegates) {
|
|
9
|
+
const native = new Set(nativeRecipes.map((recipe) => recipe.id));
|
|
10
|
+
const collision = acpDelegates.find((delegate) => native.has(delegate.id));
|
|
11
|
+
if (collision !== void 0) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
`agent id collision: native recipe '${collision.id}' and ACP delegation agent '${collision.id}' share one namespace`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
assertAgentIdNamespace
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=chunk-DR52UMZW.js.map
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
// src/domains/extensions/discovery.ts
|
|
17
17
|
init_esm_shims();
|
|
18
18
|
var import_yaml = __toESM(require_dist(), 1);
|
|
19
|
-
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
19
|
+
import { existsSync, lstatSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
20
20
|
import path from "node:path";
|
|
21
21
|
var MANIFEST_NAMES = ["clio-coder-extension.yaml", "clio-coder-extension.yml", "clio-coder-extension.json"];
|
|
22
22
|
function isRecord(value) {
|
|
@@ -44,12 +44,85 @@ function normalizeResources(value) {
|
|
|
44
44
|
const out = {};
|
|
45
45
|
const skills = trimString(value.skills);
|
|
46
46
|
const prompts = trimString(value.prompts);
|
|
47
|
+
const agents = trimString(value.agents);
|
|
48
|
+
const fleets = trimString(value.fleets);
|
|
47
49
|
const themes = trimString(value.themes);
|
|
48
50
|
if (skills) out.skills = skills;
|
|
49
51
|
if (prompts) out.prompts = prompts;
|
|
52
|
+
if (agents) out.agents = agents;
|
|
53
|
+
if (fleets) out.fleets = fleets;
|
|
50
54
|
if (themes) out.themes = themes;
|
|
51
55
|
return out;
|
|
52
56
|
}
|
|
57
|
+
function contained(root, candidate) {
|
|
58
|
+
const relative = path.relative(root, candidate);
|
|
59
|
+
return relative === "" || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
|
|
60
|
+
}
|
|
61
|
+
function validateResourceTree(root, resourcePath, kind, diagnostics) {
|
|
62
|
+
if (path.isAbsolute(resourcePath)) {
|
|
63
|
+
diagnostics.push({ type: "error", message: `resources.${kind} must be relative`, path: resourcePath });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const resolvedRoot = path.resolve(root);
|
|
67
|
+
const resolved = path.resolve(resolvedRoot, resourcePath);
|
|
68
|
+
if (!contained(resolvedRoot, resolved) || resolved === resolvedRoot) {
|
|
69
|
+
diagnostics.push({ type: "error", message: `resources.${kind} escapes the extension root`, path: resourcePath });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
let canonicalRoot;
|
|
73
|
+
let canonicalResource;
|
|
74
|
+
try {
|
|
75
|
+
canonicalRoot = realpathSync(resolvedRoot);
|
|
76
|
+
canonicalResource = realpathSync(resolved);
|
|
77
|
+
if (!lstatSync(resolved).isDirectory()) {
|
|
78
|
+
diagnostics.push({ type: "error", message: `resources.${kind} is not a directory`, path: resolved });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
} catch (error) {
|
|
82
|
+
diagnostics.push({
|
|
83
|
+
type: "error",
|
|
84
|
+
message: `resources.${kind} cannot be resolved: ${error instanceof Error ? error.message : String(error)}`,
|
|
85
|
+
path: resolved
|
|
86
|
+
});
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!contained(canonicalRoot, canonicalResource)) {
|
|
90
|
+
diagnostics.push({ type: "error", message: `resources.${kind} escapes through a symbolic link`, path: resolved });
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const pending = [resolved];
|
|
94
|
+
while (pending.length > 0) {
|
|
95
|
+
const directory = pending.pop();
|
|
96
|
+
if (!directory) continue;
|
|
97
|
+
for (const entry of readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
98
|
+
const candidate = path.join(directory, entry.name);
|
|
99
|
+
if (entry.isSymbolicLink()) {
|
|
100
|
+
try {
|
|
101
|
+
if (!contained(canonicalRoot, realpathSync(candidate))) {
|
|
102
|
+
diagnostics.push({
|
|
103
|
+
type: "error",
|
|
104
|
+
message: `resources.${kind} contains an escaping symbolic link`,
|
|
105
|
+
path: candidate
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
} catch (error) {
|
|
109
|
+
diagnostics.push({
|
|
110
|
+
type: "error",
|
|
111
|
+
message: `resources.${kind} contains an unresolved symbolic link: ${error instanceof Error ? error.message : String(error)}`,
|
|
112
|
+
path: candidate
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
} else if (entry.isDirectory()) {
|
|
116
|
+
pending.push(candidate);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function validateResourceRoots(root, resources, diagnostics) {
|
|
122
|
+
for (const [kind, resourcePath] of Object.entries(resources)) {
|
|
123
|
+
if (resourcePath) validateResourceTree(root, resourcePath, kind, diagnostics);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
53
126
|
function stringArray(value) {
|
|
54
127
|
if (!Array.isArray(value)) return void 0;
|
|
55
128
|
const out = value.map((entry) => trimString(entry)).filter((entry) => entry !== void 0);
|
|
@@ -115,6 +188,7 @@ function loadManifestFromRoot(root) {
|
|
|
115
188
|
}
|
|
116
189
|
try {
|
|
117
190
|
const parsed = parseExtensionManifest(readJsonOrYaml(manifestPath), manifestPath);
|
|
191
|
+
if (parsed.manifest) validateResourceRoots(root, parsed.manifest.resources, parsed.diagnostics);
|
|
118
192
|
return {
|
|
119
193
|
path: root,
|
|
120
194
|
manifestPath,
|
|
@@ -284,7 +358,7 @@ function installExtension(sourcePath, options = {}) {
|
|
|
284
358
|
const cwd = options.cwd ?? process.cwd();
|
|
285
359
|
const source = path2.resolve(sourcePath);
|
|
286
360
|
const candidate = loadManifestFromRoot(source);
|
|
287
|
-
if (!candidate.manifest) return { diagnostics: candidate.diagnostics };
|
|
361
|
+
if (!candidate.manifest || !candidate.valid) return { diagnostics: candidate.diagnostics };
|
|
288
362
|
const targetRoot = path2.join(extensionBaseDir(scope, cwd), candidate.manifest.id);
|
|
289
363
|
if (existsSync2(targetRoot)) {
|
|
290
364
|
if (!options.force) {
|
|
@@ -307,7 +381,11 @@ function installExtension(sourcePath, options = {}) {
|
|
|
307
381
|
rmSync(backupRoot, { recursive: true, force: true });
|
|
308
382
|
cpSync(source, stagingRoot, {
|
|
309
383
|
recursive: true,
|
|
310
|
-
|
|
384
|
+
// `state.json` beside the installed extension directories belongs to
|
|
385
|
+
// Clio's extension manager. An extension may legitimately ship nested
|
|
386
|
+
// resources with the same basename (for example a project-state JSON
|
|
387
|
+
// template), so exclude only a bookkeeping file at the package root.
|
|
388
|
+
filter: (src) => path2.relative(source, src) !== "state.json"
|
|
311
389
|
});
|
|
312
390
|
if (existsSync2(targetRoot)) {
|
|
313
391
|
renameSync(targetRoot, backupRoot);
|
|
@@ -379,14 +457,26 @@ init_esm_shims();
|
|
|
379
457
|
|
|
380
458
|
// src/domains/extensions/resources.ts
|
|
381
459
|
init_esm_shims();
|
|
382
|
-
import {
|
|
460
|
+
import { lstatSync as lstatSync2, realpathSync as realpathSync2 } from "node:fs";
|
|
383
461
|
import path3 from "node:path";
|
|
384
462
|
function extensionResourcePath(rootPath, resourcePath) {
|
|
385
463
|
const root = path3.resolve(rootPath);
|
|
386
464
|
const full = path3.resolve(root, resourcePath);
|
|
387
465
|
const relative = path3.relative(root, full);
|
|
388
|
-
if (relative === "" ||
|
|
389
|
-
|
|
466
|
+
if (relative === "" || relative === ".." || relative.startsWith(`..${path3.sep}`) || path3.isAbsolute(relative))
|
|
467
|
+
return null;
|
|
468
|
+
try {
|
|
469
|
+
const rootReal = realpathSync2(root);
|
|
470
|
+
const fullReal = realpathSync2(full);
|
|
471
|
+
const canonicalRelative = path3.relative(rootReal, fullReal);
|
|
472
|
+
if (canonicalRelative === ".." || canonicalRelative.startsWith(`..${path3.sep}`) || path3.isAbsolute(canonicalRelative)) {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
if (!lstatSync2(full).isDirectory()) return null;
|
|
476
|
+
return full;
|
|
477
|
+
} catch {
|
|
478
|
+
return null;
|
|
479
|
+
}
|
|
390
480
|
}
|
|
391
481
|
function enabledExtensionResourceRoots(kind, cwd = process.cwd()) {
|
|
392
482
|
const roots = [];
|
|
@@ -396,15 +486,11 @@ function enabledExtensionResourceRoots(kind, cwd = process.cwd()) {
|
|
|
396
486
|
if (!rel) continue;
|
|
397
487
|
const full = extensionResourcePath(entry.rootPath, rel);
|
|
398
488
|
if (!full) continue;
|
|
399
|
-
try {
|
|
400
|
-
if (!statSync2(full).isDirectory()) continue;
|
|
401
|
-
} catch {
|
|
402
|
-
continue;
|
|
403
|
-
}
|
|
404
489
|
roots.push({
|
|
405
490
|
id: entry.id,
|
|
406
491
|
scope: entry.scope,
|
|
407
492
|
path: full,
|
|
493
|
+
rootPath: entry.rootPath,
|
|
408
494
|
source: `extension:${entry.scope}:${entry.id}`
|
|
409
495
|
});
|
|
410
496
|
}
|
|
@@ -474,4 +560,4 @@ export {
|
|
|
474
560
|
enabledExtensionResourceRoots,
|
|
475
561
|
ExtensionsDomainModule
|
|
476
562
|
};
|
|
477
|
-
//# sourceMappingURL=chunk-
|
|
563
|
+
//# sourceMappingURL=chunk-DYIM5TJT.js.map
|