@rpamis/comet 0.4.0-beta.1 → 0.4.0-beta.10
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 +21 -21
- package/README.md +279 -113
- package/assets/manifest.json +17 -5
- package/assets/skills/comet/SKILL.md +17 -256
- package/assets/skills/comet/reference/auto-transition.md +1 -1
- package/assets/skills/comet/reference/classic-layout.md +34 -0
- package/assets/skills/comet/reference/comet-yaml-fields.md +14 -8
- package/assets/skills/comet/reference/context-recovery.md +14 -4
- package/assets/skills/comet/reference/decision-point.md +11 -0
- package/assets/skills/comet/reference/file-structure.md +2 -2
- package/assets/skills/comet/reference/intent-frame.md +3 -3
- package/assets/skills/comet/reference/scripts.md +47 -15
- package/assets/skills/comet/reference/subagent-dispatch.md +8 -7
- package/assets/skills/comet/rules/comet-phase-guard.en.md +34 -31
- package/assets/skills/comet/rules/comet-phase-guard.md +34 -32
- package/assets/skills/comet/rules/comet-workflow-guard.en.md +32 -0
- package/assets/skills/comet/rules/comet-workflow-guard.md +32 -0
- package/assets/skills/comet/scripts/comet-entry-runtime.mjs +8074 -0
- package/assets/skills/comet/scripts/comet-hook-router.mjs +12786 -0
- package/assets/skills/comet/scripts/comet-resume-probe.mjs +3 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +10449 -4105
- package/assets/skills/comet-any/SKILL.md +5 -5
- package/assets/skills/comet-any/reference/authored-zone-example.md +10 -5
- package/assets/skills/comet-any/reference/authoring-subagents.md +1 -1
- package/assets/skills/comet-any/reference/bundle-authoring.md +2 -2
- package/assets/skills/comet-any/reference/subagents/pause-points-author.md +14 -11
- package/assets/skills/comet-any/reference/subagents/reference-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/script-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/skill-core-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +4 -2
- package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +8 -7
- package/assets/skills/comet-archive/SKILL.md +69 -26
- package/assets/skills/comet-build/SKILL.md +77 -58
- package/assets/skills/comet-classic/SKILL.md +295 -0
- package/assets/skills/comet-design/SKILL.md +40 -36
- package/assets/skills/comet-hotfix/SKILL.md +57 -35
- package/assets/skills/comet-native/SKILL.md +133 -0
- package/assets/skills/comet-native/reference/artifacts.md +141 -0
- package/assets/skills/comet-native/reference/clarification.md +54 -0
- package/assets/skills/comet-native/reference/commands.md +170 -0
- package/assets/skills/comet-native/reference/recovery.md +96 -0
- package/assets/skills/comet-native/scripts/comet-native-hook-guard.mjs +4 -0
- package/assets/skills/comet-native/scripts/comet-native-runtime.mjs +34468 -0
- package/assets/skills/comet-open/SKILL.md +119 -59
- package/assets/skills/comet-tweak/SKILL.md +52 -27
- package/assets/skills/comet-verify/SKILL.md +65 -73
- package/assets/skills-zh/comet/SKILL.md +17 -244
- package/assets/skills-zh/comet/reference/auto-transition.md +1 -1
- package/assets/skills-zh/comet/reference/classic-layout.md +34 -0
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +13 -8
- package/assets/skills-zh/comet/reference/context-recovery.md +14 -4
- package/assets/skills-zh/comet/reference/decision-point.md +11 -0
- package/assets/skills-zh/comet/reference/file-structure.md +2 -2
- package/assets/skills-zh/comet/reference/intent-frame.md +3 -3
- package/assets/skills-zh/comet/reference/scripts.md +47 -15
- package/assets/skills-zh/comet/reference/subagent-dispatch.md +8 -7
- package/assets/skills-zh/comet-any/SKILL.md +5 -5
- package/assets/skills-zh/comet-any/reference/authored-zone-example.md +10 -5
- package/assets/skills-zh/comet-any/reference/authoring-subagents.md +1 -1
- package/assets/skills-zh/comet-any/reference/bundle-authoring.md +2 -2
- package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +14 -12
- package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/script-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +4 -2
- package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +8 -7
- package/assets/skills-zh/comet-archive/SKILL.md +69 -26
- package/assets/skills-zh/comet-build/SKILL.md +77 -58
- package/assets/skills-zh/comet-classic/SKILL.md +283 -0
- package/assets/skills-zh/comet-design/SKILL.md +40 -36
- package/assets/skills-zh/comet-hotfix/SKILL.md +56 -34
- package/assets/skills-zh/comet-native/SKILL.md +133 -0
- package/assets/skills-zh/comet-native/reference/artifacts.md +141 -0
- package/assets/skills-zh/comet-native/reference/clarification.md +54 -0
- package/assets/skills-zh/comet-native/reference/commands.md +170 -0
- package/assets/skills-zh/comet-native/reference/recovery.md +96 -0
- package/assets/skills-zh/comet-open/SKILL.md +118 -58
- package/assets/skills-zh/comet-tweak/SKILL.md +51 -26
- package/assets/skills-zh/comet-verify/SKILL.md +65 -73
- package/dist/app/cli/comet-banner.d.ts +25 -0
- package/dist/app/cli/comet-banner.d.ts.map +1 -0
- package/dist/app/cli/comet-banner.js +265 -0
- package/dist/app/cli/comet-banner.js.map +1 -0
- package/dist/app/cli/index.js +113 -16
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/commands/classic.d.ts +5 -0
- package/dist/app/commands/classic.d.ts.map +1 -0
- package/dist/app/commands/classic.js +32 -0
- package/dist/app/commands/classic.js.map +1 -0
- package/dist/app/commands/command-result.d.ts +6 -0
- package/dist/app/commands/command-result.d.ts.map +1 -0
- package/dist/app/commands/command-result.js +4 -0
- package/dist/app/commands/command-result.js.map +1 -0
- package/dist/app/commands/doctor.d.ts +4 -0
- package/dist/app/commands/doctor.d.ts.map +1 -1
- package/dist/app/commands/doctor.js +926 -95
- package/dist/app/commands/doctor.js.map +1 -1
- package/dist/app/commands/eval.d.ts +3 -1
- package/dist/app/commands/eval.d.ts.map +1 -1
- package/dist/app/commands/eval.js +80 -22
- package/dist/app/commands/eval.js.map +1 -1
- package/dist/app/commands/i18n.d.ts +1 -1
- package/dist/app/commands/i18n.d.ts.map +1 -1
- package/dist/app/commands/i18n.js +18 -6
- package/dist/app/commands/i18n.js.map +1 -1
- package/dist/app/commands/init.d.ts +13 -3
- package/dist/app/commands/init.d.ts.map +1 -1
- package/dist/app/commands/init.js +561 -72
- package/dist/app/commands/init.js.map +1 -1
- package/dist/app/commands/native.d.ts +2 -0
- package/dist/app/commands/native.d.ts.map +1 -0
- package/dist/app/commands/native.js +10 -0
- package/dist/app/commands/native.js.map +1 -0
- package/dist/app/commands/project-scope-selection.d.ts +13 -0
- package/dist/app/commands/project-scope-selection.d.ts.map +1 -0
- package/dist/app/commands/project-scope-selection.js +35 -0
- package/dist/app/commands/project-scope-selection.js.map +1 -0
- package/dist/app/commands/resume-probe.d.ts +12 -0
- package/dist/app/commands/resume-probe.d.ts.map +1 -0
- package/dist/app/commands/resume-probe.js +68 -0
- package/dist/app/commands/resume-probe.js.map +1 -0
- package/dist/app/commands/status.d.ts.map +1 -1
- package/dist/app/commands/status.js +70 -104
- package/dist/app/commands/status.js.map +1 -1
- package/dist/app/commands/uninstall.d.ts +5 -0
- package/dist/app/commands/uninstall.d.ts.map +1 -1
- package/dist/app/commands/uninstall.js +264 -53
- package/dist/app/commands/uninstall.js.map +1 -1
- package/dist/app/commands/update.d.ts +29 -5
- package/dist/app/commands/update.d.ts.map +1 -1
- package/dist/app/commands/update.js +1419 -127
- package/dist/app/commands/update.js.map +1 -1
- package/dist/app/commands/workflow.d.ts +6 -0
- package/dist/app/commands/workflow.d.ts.map +1 -0
- package/dist/app/commands/workflow.js +11 -0
- package/dist/app/commands/workflow.js.map +1 -0
- package/dist/config/repository-layout.json +29 -3
- package/dist/domains/bundle/bundle-platform.d.ts +1 -0
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
- package/dist/domains/bundle/bundle-platform.js +10 -4
- package/dist/domains/bundle/bundle-platform.js.map +1 -1
- package/dist/domains/bundle/eval-manifest-runtime.d.ts +8 -0
- package/dist/domains/bundle/eval-manifest-runtime.d.ts.map +1 -0
- package/dist/domains/bundle/eval-manifest-runtime.js +118 -0
- package/dist/domains/bundle/eval-manifest-runtime.js.map +1 -0
- package/dist/domains/bundle/eval-run-result.d.ts +22 -0
- package/dist/domains/bundle/eval-run-result.d.ts.map +1 -0
- package/dist/domains/bundle/eval-run-result.js +207 -0
- package/dist/domains/bundle/eval-run-result.js.map +1 -0
- package/dist/domains/bundle/eval.d.ts.map +1 -1
- package/dist/domains/bundle/eval.js +21 -24
- package/dist/domains/bundle/eval.js.map +1 -1
- package/dist/domains/bundle/factory.d.ts.map +1 -1
- package/dist/domains/bundle/factory.js +2 -9
- package/dist/domains/bundle/factory.js.map +1 -1
- package/dist/domains/bundle/review-summary.js +1 -1
- package/dist/domains/bundle/review-summary.js.map +1 -1
- package/dist/domains/bundle/state.d.ts.map +1 -1
- package/dist/domains/bundle/state.js +117 -2
- package/dist/domains/bundle/state.js.map +1 -1
- package/dist/domains/bundle/types.d.ts +1 -1
- package/dist/domains/bundle/types.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive-pointer.d.ts +8 -0
- package/dist/domains/comet-classic/classic-archive-pointer.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-archive-pointer.js +66 -0
- package/dist/domains/comet-classic/classic-archive-pointer.js.map +1 -0
- package/dist/domains/comet-classic/classic-archive.d.ts +1 -0
- package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.js +205 -114
- package/dist/domains/comet-classic/classic-archive.js.map +1 -1
- package/dist/domains/comet-classic/classic-branch-binding.d.ts +51 -0
- package/dist/domains/comet-classic/classic-branch-binding.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-branch-binding.js +107 -0
- package/dist/domains/comet-classic/classic-branch-binding.js.map +1 -0
- package/dist/domains/comet-classic/classic-cli.d.ts +3 -1
- package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-cli.js +12 -3
- package/dist/domains/comet-classic/classic-cli.js.map +1 -1
- package/dist/domains/comet-classic/classic-command-checks.d.ts +20 -0
- package/dist/domains/comet-classic/classic-command-checks.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-command-checks.js +94 -0
- package/dist/domains/comet-classic/classic-command-checks.js.map +1 -0
- package/dist/domains/comet-classic/classic-command-context.d.ts +12 -0
- package/dist/domains/comet-classic/classic-command-context.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-command-context.js +42 -0
- package/dist/domains/comet-classic/classic-command-context.js.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts +17 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.js +112 -0
- package/dist/domains/comet-classic/classic-current-change.js.map +1 -0
- package/dist/domains/comet-classic/classic-diagnostics.d.ts +2 -1
- package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-diagnostics.js +54 -1
- package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.d.ts +1 -0
- package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.js +101 -37
- package/dist/domains/comet-classic/classic-evidence.js.map +1 -1
- package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-guard.js +229 -208
- package/dist/domains/comet-classic/classic-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-handoff.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-handoff.js +155 -107
- package/dist/domains/comet-classic/classic-handoff.js.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.d.ts +9 -0
- package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.js +406 -54
- package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-layout-initialization.d.ts +86 -0
- package/dist/domains/comet-classic/classic-layout-initialization.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-layout-initialization.js +813 -0
- package/dist/domains/comet-classic/classic-layout-initialization.js.map +1 -0
- package/dist/domains/comet-classic/classic-layout.d.ts +47 -0
- package/dist/domains/comet-classic/classic-layout.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-layout.js +227 -0
- package/dist/domains/comet-classic/classic-layout.js.map +1 -0
- package/dist/domains/comet-classic/classic-migrate.d.ts +4 -0
- package/dist/domains/comet-classic/classic-migrate.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-migrate.js +8 -12
- package/dist/domains/comet-classic/classic-migrate.js.map +1 -1
- package/dist/domains/comet-classic/classic-openspec-command.d.ts +4 -0
- package/dist/domains/comet-classic/classic-openspec-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-openspec-command.js +45 -0
- package/dist/domains/comet-classic/classic-openspec-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-openspec-root.d.ts +13 -0
- package/dist/domains/comet-classic/classic-openspec-root.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-openspec-root.js +47 -0
- package/dist/domains/comet-classic/classic-openspec-root.js.map +1 -0
- package/dist/domains/comet-classic/classic-paths.d.ts +11 -1
- package/dist/domains/comet-classic/classic-paths.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-paths.js +87 -35
- package/dist/domains/comet-classic/classic-paths.js.map +1 -1
- package/dist/domains/comet-classic/classic-project-config.d.ts +16 -0
- package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-project-config.js +36 -0
- package/dist/domains/comet-classic/classic-project-config.js.map +1 -0
- package/dist/domains/comet-classic/classic-protected-path.d.ts +39 -0
- package/dist/domains/comet-classic/classic-protected-path.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-protected-path.js +69 -0
- package/dist/domains/comet-classic/classic-protected-path.js.map +1 -0
- package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-resolver.js +4 -4
- package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js +59 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js +4 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts +29 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.js +406 -0
- package/dist/domains/comet-classic/classic-resume-probe.js.map +1 -0
- package/dist/domains/comet-classic/classic-root-command.d.ts +5 -0
- package/dist/domains/comet-classic/classic-root-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-root-command.js +84 -0
- package/dist/domains/comet-classic/classic-root-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-root-move.d.ts +119 -0
- package/dist/domains/comet-classic/classic-root-move.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-root-move.js +1737 -0
- package/dist/domains/comet-classic/classic-root-move.js.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-run.d.ts +2 -1
- package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-runtime-run.js +278 -5
- package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.js +342 -87
- package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
- package/dist/domains/comet-classic/classic-state-events.d.ts +1 -1
- package/dist/domains/comet-classic/classic-state-events.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state-events.js +3 -4
- package/dist/domains/comet-classic/classic-state-events.js.map +1 -1
- package/dist/domains/comet-classic/classic-state.d.ts +6 -4
- package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state.js +20 -7
- package/dist/domains/comet-classic/classic-state.js.map +1 -1
- package/dist/domains/comet-classic/classic-store.d.ts +6 -1
- package/dist/domains/comet-classic/classic-store.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-store.js +36 -23
- package/dist/domains/comet-classic/classic-store.js.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.js +37 -3
- package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.js +40 -20
- package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
- package/dist/domains/comet-classic/index.d.ts +3 -0
- package/dist/domains/comet-classic/index.d.ts.map +1 -1
- package/dist/domains/comet-classic/index.js +3 -0
- package/dist/domains/comet-classic/index.js.map +1 -1
- package/dist/domains/comet-entry/current-selection-repair.d.ts +17 -0
- package/dist/domains/comet-entry/current-selection-repair.d.ts.map +1 -0
- package/dist/domains/comet-entry/current-selection-repair.js +19 -0
- package/dist/domains/comet-entry/current-selection-repair.js.map +1 -0
- package/dist/domains/comet-entry/current-selection.d.ts +28 -0
- package/dist/domains/comet-entry/current-selection.d.ts.map +1 -0
- package/dist/domains/comet-entry/current-selection.js +114 -0
- package/dist/domains/comet-entry/current-selection.js.map +1 -0
- package/dist/domains/comet-entry/entry-runtime-entry.d.ts +2 -0
- package/dist/domains/comet-entry/entry-runtime-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/entry-runtime-entry.js +3 -0
- package/dist/domains/comet-entry/entry-runtime-entry.js.map +1 -0
- package/dist/domains/comet-entry/entry-runtime.d.ts +7 -0
- package/dist/domains/comet-entry/entry-runtime.d.ts.map +1 -0
- package/dist/domains/comet-entry/entry-runtime.js +55 -0
- package/dist/domains/comet-entry/entry-runtime.js.map +1 -0
- package/dist/domains/comet-entry/hook-adapter.d.ts +6 -0
- package/dist/domains/comet-entry/hook-adapter.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-adapter.js +202 -0
- package/dist/domains/comet-entry/hook-adapter.js.map +1 -0
- package/dist/domains/comet-entry/hook-router-entry.d.ts +8 -0
- package/dist/domains/comet-entry/hook-router-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-router-entry.js +88 -0
- package/dist/domains/comet-entry/hook-router-entry.js.map +1 -0
- package/dist/domains/comet-entry/hook-router.d.ts +32 -0
- package/dist/domains/comet-entry/hook-router.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-router.js +133 -0
- package/dist/domains/comet-entry/hook-router.js.map +1 -0
- package/dist/domains/comet-entry/hook-types.d.ts +20 -0
- package/dist/domains/comet-entry/hook-types.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-types.js +2 -0
- package/dist/domains/comet-entry/hook-types.js.map +1 -0
- package/dist/domains/comet-entry/init-workflow.d.ts +19 -0
- package/dist/domains/comet-entry/init-workflow.d.ts.map +1 -0
- package/dist/domains/comet-entry/init-workflow.js +118 -0
- package/dist/domains/comet-entry/init-workflow.js.map +1 -0
- package/dist/domains/comet-entry/project-status.d.ts +3 -0
- package/dist/domains/comet-entry/project-status.d.ts.map +1 -0
- package/dist/domains/comet-entry/project-status.js +291 -0
- package/dist/domains/comet-entry/project-status.js.map +1 -0
- package/dist/domains/comet-entry/resolve-entry.d.ts +3 -0
- package/dist/domains/comet-entry/resolve-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/resolve-entry.js +18 -0
- package/dist/domains/comet-entry/resolve-entry.js.map +1 -0
- package/dist/domains/comet-entry/resume-probe.d.ts +34 -0
- package/dist/domains/comet-entry/resume-probe.d.ts.map +1 -0
- package/dist/domains/comet-entry/resume-probe.js +462 -0
- package/dist/domains/comet-entry/resume-probe.js.map +1 -0
- package/dist/domains/comet-entry/types.d.ts +60 -0
- package/dist/domains/comet-entry/types.d.ts.map +1 -0
- package/dist/domains/comet-entry/types.js +2 -0
- package/dist/domains/comet-entry/types.js.map +1 -0
- package/dist/domains/comet-entry/workflow-resolution.d.ts +8 -0
- package/dist/domains/comet-entry/workflow-resolution.d.ts.map +1 -0
- package/dist/domains/comet-entry/workflow-resolution.js +16 -0
- package/dist/domains/comet-entry/workflow-resolution.js.map +1 -0
- package/dist/domains/comet-native/index.d.ts +35 -0
- package/dist/domains/comet-native/index.d.ts.map +1 -0
- package/dist/domains/comet-native/index.js +35 -0
- package/dist/domains/comet-native/index.js.map +1 -0
- package/dist/domains/comet-native/native-acceptance.d.ts +53 -0
- package/dist/domains/comet-native/native-acceptance.d.ts.map +1 -0
- package/dist/domains/comet-native/native-acceptance.js +658 -0
- package/dist/domains/comet-native/native-acceptance.js.map +1 -0
- package/dist/domains/comet-native/native-archive-content.d.ts +26 -0
- package/dist/domains/comet-native/native-archive-content.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-content.js +159 -0
- package/dist/domains/comet-native/native-archive-content.js.map +1 -0
- package/dist/domains/comet-native/native-archive-inspection.d.ts +9 -0
- package/dist/domains/comet-native/native-archive-inspection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-inspection.js +97 -0
- package/dist/domains/comet-native/native-archive-inspection.js.map +1 -0
- package/dist/domains/comet-native/native-archive-preflight.d.ts +54 -0
- package/dist/domains/comet-native/native-archive-preflight.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-preflight.js +222 -0
- package/dist/domains/comet-native/native-archive-preflight.js.map +1 -0
- package/dist/domains/comet-native/native-archive-transaction.d.ts +20 -0
- package/dist/domains/comet-native/native-archive-transaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-transaction.js +1183 -0
- package/dist/domains/comet-native/native-archive-transaction.js.map +1 -0
- package/dist/domains/comet-native/native-archive.d.ts +36 -0
- package/dist/domains/comet-native/native-archive.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive.js +422 -0
- package/dist/domains/comet-native/native-archive.js.map +1 -0
- package/dist/domains/comet-native/native-artifacts.d.ts +10 -0
- package/dist/domains/comet-native/native-artifacts.d.ts.map +1 -0
- package/dist/domains/comet-native/native-artifacts.js +204 -0
- package/dist/domains/comet-native/native-artifacts.js.map +1 -0
- package/dist/domains/comet-native/native-atomic-file.d.ts +10 -0
- package/dist/domains/comet-native/native-atomic-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-atomic-file.js +179 -0
- package/dist/domains/comet-native/native-atomic-file.js.map +1 -0
- package/dist/domains/comet-native/native-bounded-file.d.ts +19 -0
- package/dist/domains/comet-native/native-bounded-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-bounded-file.js +184 -0
- package/dist/domains/comet-native/native-bounded-file.js.map +1 -0
- package/dist/domains/comet-native/native-build-evidence.d.ts +42 -0
- package/dist/domains/comet-native/native-build-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-build-evidence.js +257 -0
- package/dist/domains/comet-native/native-build-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-canonical-hash.d.ts +10 -0
- package/dist/domains/comet-native/native-canonical-hash.d.ts.map +1 -0
- package/dist/domains/comet-native/native-canonical-hash.js +100 -0
- package/dist/domains/comet-native/native-canonical-hash.js.map +1 -0
- package/dist/domains/comet-native/native-change-recovery.d.ts +11 -0
- package/dist/domains/comet-native/native-change-recovery.d.ts.map +1 -0
- package/dist/domains/comet-native/native-change-recovery.js +15 -0
- package/dist/domains/comet-native/native-change-recovery.js.map +1 -0
- package/dist/domains/comet-native/native-change.d.ts +66 -0
- package/dist/domains/comet-native/native-change.d.ts.map +1 -0
- package/dist/domains/comet-native/native-change.js +834 -0
- package/dist/domains/comet-native/native-change.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-model.d.ts +63 -0
- package/dist/domains/comet-native/native-check-receipt-model.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-model.js +352 -0
- package/dist/domains/comet-native/native-check-receipt-model.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-storage.d.ts +10 -0
- package/dist/domains/comet-native/native-check-receipt-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-storage.js +200 -0
- package/dist/domains/comet-native/native-check-receipt-storage.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt.d.ts +19 -0
- package/dist/domains/comet-native/native-check-receipt.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt.js +453 -0
- package/dist/domains/comet-native/native-check-receipt.js.map +1 -0
- package/dist/domains/comet-native/native-check.d.ts +24 -0
- package/dist/domains/comet-native/native-check.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check.js +38 -0
- package/dist/domains/comet-native/native-check.js.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-journal.d.ts +13 -0
- package/dist/domains/comet-native/native-checkpoint-journal.d.ts.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-journal.js +53 -0
- package/dist/domains/comet-native/native-checkpoint-journal.js.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-storage.d.ts +43 -0
- package/dist/domains/comet-native/native-checkpoint-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-storage.js +487 -0
- package/dist/domains/comet-native/native-checkpoint-storage.js.map +1 -0
- package/dist/domains/comet-native/native-cli-entry.d.ts +2 -0
- package/dist/domains/comet-native/native-cli-entry.d.ts.map +1 -0
- package/dist/domains/comet-native/native-cli-entry.js +18 -0
- package/dist/domains/comet-native/native-cli-entry.js.map +1 -0
- package/dist/domains/comet-native/native-cli.d.ts +7 -0
- package/dist/domains/comet-native/native-cli.d.ts.map +1 -0
- package/dist/domains/comet-native/native-cli.js +1300 -0
- package/dist/domains/comet-native/native-cli.js.map +1 -0
- package/dist/domains/comet-native/native-config.d.ts +23 -0
- package/dist/domains/comet-native/native-config.d.ts.map +1 -0
- package/dist/domains/comet-native/native-config.js +60 -0
- package/dist/domains/comet-native/native-config.js.map +1 -0
- package/dist/domains/comet-native/native-conflict-inspection.d.ts +17 -0
- package/dist/domains/comet-native/native-conflict-inspection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-conflict-inspection.js +90 -0
- package/dist/domains/comet-native/native-conflict-inspection.js.map +1 -0
- package/dist/domains/comet-native/native-conflict-radar.d.ts +75 -0
- package/dist/domains/comet-native/native-conflict-radar.d.ts.map +1 -0
- package/dist/domains/comet-native/native-conflict-radar.js +326 -0
- package/dist/domains/comet-native/native-conflict-radar.js.map +1 -0
- package/dist/domains/comet-native/native-continuation.d.ts +12 -0
- package/dist/domains/comet-native/native-continuation.d.ts.map +1 -0
- package/dist/domains/comet-native/native-continuation.js +201 -0
- package/dist/domains/comet-native/native-continuation.js.map +1 -0
- package/dist/domains/comet-native/native-contract-files.d.ts +24 -0
- package/dist/domains/comet-native/native-contract-files.d.ts.map +1 -0
- package/dist/domains/comet-native/native-contract-files.js +66 -0
- package/dist/domains/comet-native/native-contract-files.js.map +1 -0
- package/dist/domains/comet-native/native-contract.d.ts +41 -0
- package/dist/domains/comet-native/native-contract.d.ts.map +1 -0
- package/dist/domains/comet-native/native-contract.js +142 -0
- package/dist/domains/comet-native/native-contract.js.map +1 -0
- package/dist/domains/comet-native/native-controller-trust.d.ts +22 -0
- package/dist/domains/comet-native/native-controller-trust.d.ts.map +1 -0
- package/dist/domains/comet-native/native-controller-trust.js +153 -0
- package/dist/domains/comet-native/native-controller-trust.js.map +1 -0
- package/dist/domains/comet-native/native-creation-authorization.d.ts +30 -0
- package/dist/domains/comet-native/native-creation-authorization.d.ts.map +1 -0
- package/dist/domains/comet-native/native-creation-authorization.js +110 -0
- package/dist/domains/comet-native/native-creation-authorization.js.map +1 -0
- package/dist/domains/comet-native/native-diagnostics.d.ts +25 -0
- package/dist/domains/comet-native/native-diagnostics.d.ts.map +1 -0
- package/dist/domains/comet-native/native-diagnostics.js +551 -0
- package/dist/domains/comet-native/native-diagnostics.js.map +1 -0
- package/dist/domains/comet-native/native-doctor.d.ts +12 -0
- package/dist/domains/comet-native/native-doctor.d.ts.map +1 -0
- package/dist/domains/comet-native/native-doctor.js +771 -0
- package/dist/domains/comet-native/native-doctor.js.map +1 -0
- package/dist/domains/comet-native/native-evidence-retention.d.ts +37 -0
- package/dist/domains/comet-native/native-evidence-retention.d.ts.map +1 -0
- package/dist/domains/comet-native/native-evidence-retention.js +916 -0
- package/dist/domains/comet-native/native-evidence-retention.js.map +1 -0
- package/dist/domains/comet-native/native-evidence-storage.d.ts +54 -0
- package/dist/domains/comet-native/native-evidence-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-evidence-storage.js +401 -0
- package/dist/domains/comet-native/native-evidence-storage.js.map +1 -0
- package/dist/domains/comet-native/native-file-identity.d.ts +3 -0
- package/dist/domains/comet-native/native-file-identity.d.ts.map +1 -0
- package/dist/domains/comet-native/native-file-identity.js +2 -0
- package/dist/domains/comet-native/native-file-identity.js.map +1 -0
- package/dist/domains/comet-native/native-findings.d.ts +8 -0
- package/dist/domains/comet-native/native-findings.d.ts.map +1 -0
- package/dist/domains/comet-native/native-findings.js +254 -0
- package/dist/domains/comet-native/native-findings.js.map +1 -0
- package/dist/domains/comet-native/native-guards.d.ts +8 -0
- package/dist/domains/comet-native/native-guards.d.ts.map +1 -0
- package/dist/domains/comet-native/native-guards.js +140 -0
- package/dist/domains/comet-native/native-guards.js.map +1 -0
- package/dist/domains/comet-native/native-hash.d.ts +3 -0
- package/dist/domains/comet-native/native-hash.d.ts.map +1 -0
- package/dist/domains/comet-native/native-hash.js +12 -0
- package/dist/domains/comet-native/native-hash.js.map +1 -0
- package/dist/domains/comet-native/native-hook-guard.d.ts +17 -0
- package/dist/domains/comet-native/native-hook-guard.d.ts.map +1 -0
- package/dist/domains/comet-native/native-hook-guard.js +154 -0
- package/dist/domains/comet-native/native-hook-guard.js.map +1 -0
- package/dist/domains/comet-native/native-independent-review.d.ts +28 -0
- package/dist/domains/comet-native/native-independent-review.d.ts.map +1 -0
- package/dist/domains/comet-native/native-independent-review.js +134 -0
- package/dist/domains/comet-native/native-independent-review.js.map +1 -0
- package/dist/domains/comet-native/native-lock.d.ts +47 -0
- package/dist/domains/comet-native/native-lock.d.ts.map +1 -0
- package/dist/domains/comet-native/native-lock.js +390 -0
- package/dist/domains/comet-native/native-lock.js.map +1 -0
- package/dist/domains/comet-native/native-mutation-lock.d.ts +5 -0
- package/dist/domains/comet-native/native-mutation-lock.d.ts.map +1 -0
- package/dist/domains/comet-native/native-mutation-lock.js +66 -0
- package/dist/domains/comet-native/native-mutation-lock.js.map +1 -0
- package/dist/domains/comet-native/native-paths.d.ts +10 -0
- package/dist/domains/comet-native/native-paths.d.ts.map +1 -0
- package/dist/domains/comet-native/native-paths.js +160 -0
- package/dist/domains/comet-native/native-paths.js.map +1 -0
- package/dist/domains/comet-native/native-progress-checkpoint.d.ts +13 -0
- package/dist/domains/comet-native/native-progress-checkpoint.d.ts.map +1 -0
- package/dist/domains/comet-native/native-progress-checkpoint.js +104 -0
- package/dist/domains/comet-native/native-progress-checkpoint.js.map +1 -0
- package/dist/domains/comet-native/native-protected-file.d.ts +113 -0
- package/dist/domains/comet-native/native-protected-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-protected-file.js +510 -0
- package/dist/domains/comet-native/native-protected-file.js.map +1 -0
- package/dist/domains/comet-native/native-redaction.d.ts +2 -0
- package/dist/domains/comet-native/native-redaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-redaction.js +18 -0
- package/dist/domains/comet-native/native-redaction.js.map +1 -0
- package/dist/domains/comet-native/native-repair-integration.d.ts +46 -0
- package/dist/domains/comet-native/native-repair-integration.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-integration.js +235 -0
- package/dist/domains/comet-native/native-repair-integration.js.map +1 -0
- package/dist/domains/comet-native/native-repair-runtime.d.ts +78 -0
- package/dist/domains/comet-native/native-repair-runtime.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-runtime.js +593 -0
- package/dist/domains/comet-native/native-repair-runtime.js.map +1 -0
- package/dist/domains/comet-native/native-repair-stagnation.d.ts +89 -0
- package/dist/domains/comet-native/native-repair-stagnation.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-stagnation.js +308 -0
- package/dist/domains/comet-native/native-repair-stagnation.js.map +1 -0
- package/dist/domains/comet-native/native-resume-view.d.ts +14 -0
- package/dist/domains/comet-native/native-resume-view.d.ts.map +1 -0
- package/dist/domains/comet-native/native-resume-view.js +105 -0
- package/dist/domains/comet-native/native-resume-view.js.map +1 -0
- package/dist/domains/comet-native/native-review-contract.d.ts +6 -0
- package/dist/domains/comet-native/native-review-contract.d.ts.map +1 -0
- package/dist/domains/comet-native/native-review-contract.js +6 -0
- package/dist/domains/comet-native/native-review-contract.js.map +1 -0
- package/dist/domains/comet-native/native-review-identity.d.ts +50 -0
- package/dist/domains/comet-native/native-review-identity.d.ts.map +1 -0
- package/dist/domains/comet-native/native-review-identity.js +209 -0
- package/dist/domains/comet-native/native-review-identity.js.map +1 -0
- package/dist/domains/comet-native/native-review-signer.d.ts +24 -0
- package/dist/domains/comet-native/native-review-signer.d.ts.map +1 -0
- package/dist/domains/comet-native/native-review-signer.js +125 -0
- package/dist/domains/comet-native/native-review-signer.js.map +1 -0
- package/dist/domains/comet-native/native-review-trust.d.ts +35 -0
- package/dist/domains/comet-native/native-review-trust.d.ts.map +1 -0
- package/dist/domains/comet-native/native-review-trust.js +176 -0
- package/dist/domains/comet-native/native-review-trust.js.map +1 -0
- package/dist/domains/comet-native/native-revision.d.ts +20 -0
- package/dist/domains/comet-native/native-revision.d.ts.map +1 -0
- package/dist/domains/comet-native/native-revision.js +32 -0
- package/dist/domains/comet-native/native-revision.js.map +1 -0
- package/dist/domains/comet-native/native-root-move.d.ts +20 -0
- package/dist/domains/comet-native/native-root-move.d.ts.map +1 -0
- package/dist/domains/comet-native/native-root-move.js +818 -0
- package/dist/domains/comet-native/native-root-move.js.map +1 -0
- package/dist/domains/comet-native/native-run-consistency.d.ts +3 -0
- package/dist/domains/comet-native/native-run-consistency.d.ts.map +1 -0
- package/dist/domains/comet-native/native-run-consistency.js +136 -0
- package/dist/domains/comet-native/native-run-consistency.js.map +1 -0
- package/dist/domains/comet-native/native-run-store.d.ts +41 -0
- package/dist/domains/comet-native/native-run-store.d.ts.map +1 -0
- package/dist/domains/comet-native/native-run-store.js +452 -0
- package/dist/domains/comet-native/native-run-store.js.map +1 -0
- package/dist/domains/comet-native/native-runtime-package.d.ts +16 -0
- package/dist/domains/comet-native/native-runtime-package.d.ts.map +1 -0
- package/dist/domains/comet-native/native-runtime-package.js +72 -0
- package/dist/domains/comet-native/native-runtime-package.js.map +1 -0
- package/dist/domains/comet-native/native-schema-migration.d.ts +11 -0
- package/dist/domains/comet-native/native-schema-migration.d.ts.map +1 -0
- package/dist/domains/comet-native/native-schema-migration.js +900 -0
- package/dist/domains/comet-native/native-schema-migration.js.map +1 -0
- package/dist/domains/comet-native/native-selection.d.ts +12 -0
- package/dist/domains/comet-native/native-selection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-selection.js +52 -0
- package/dist/domains/comet-native/native-selection.js.map +1 -0
- package/dist/domains/comet-native/native-sensitive-paths.d.ts +7 -0
- package/dist/domains/comet-native/native-sensitive-paths.d.ts.map +1 -0
- package/dist/domains/comet-native/native-sensitive-paths.js +69 -0
- package/dist/domains/comet-native/native-sensitive-paths.js.map +1 -0
- package/dist/domains/comet-native/native-snapshot.d.ts +78 -0
- package/dist/domains/comet-native/native-snapshot.d.ts.map +1 -0
- package/dist/domains/comet-native/native-snapshot.js +2609 -0
- package/dist/domains/comet-native/native-snapshot.js.map +1 -0
- package/dist/domains/comet-native/native-specs.d.ts +12 -0
- package/dist/domains/comet-native/native-specs.d.ts.map +1 -0
- package/dist/domains/comet-native/native-specs.js +270 -0
- package/dist/domains/comet-native/native-specs.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory-limits.d.ts +7 -0
- package/dist/domains/comet-native/native-trajectory-limits.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory-limits.js +13 -0
- package/dist/domains/comet-native/native-trajectory-limits.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory-recovery.d.ts +37 -0
- package/dist/domains/comet-native/native-trajectory-recovery.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory-recovery.js +133 -0
- package/dist/domains/comet-native/native-trajectory-recovery.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory.d.ts +16 -0
- package/dist/domains/comet-native/native-trajectory.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory.js +27 -0
- package/dist/domains/comet-native/native-trajectory.js.map +1 -0
- package/dist/domains/comet-native/native-transaction.d.ts +45 -0
- package/dist/domains/comet-native/native-transaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transaction.js +846 -0
- package/dist/domains/comet-native/native-transaction.js.map +1 -0
- package/dist/domains/comet-native/native-transition-evidence.d.ts +4 -0
- package/dist/domains/comet-native/native-transition-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transition-evidence.js +27 -0
- package/dist/domains/comet-native/native-transition-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-transition-journal.d.ts +30 -0
- package/dist/domains/comet-native/native-transition-journal.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transition-journal.js +819 -0
- package/dist/domains/comet-native/native-transition-journal.js.map +1 -0
- package/dist/domains/comet-native/native-transitions.d.ts +15 -0
- package/dist/domains/comet-native/native-transitions.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transitions.js +683 -0
- package/dist/domains/comet-native/native-transitions.js.map +1 -0
- package/dist/domains/comet-native/native-types.d.ts +556 -0
- package/dist/domains/comet-native/native-types.d.ts.map +1 -0
- package/dist/domains/comet-native/native-types.js +8 -0
- package/dist/domains/comet-native/native-types.js.map +1 -0
- package/dist/domains/comet-native/native-verification-evidence.d.ts +136 -0
- package/dist/domains/comet-native/native-verification-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-evidence.js +824 -0
- package/dist/domains/comet-native/native-verification-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-verification-receipt-runtime.d.ts +188 -0
- package/dist/domains/comet-native/native-verification-receipt-runtime.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-receipt-runtime.js +1129 -0
- package/dist/domains/comet-native/native-verification-receipt-runtime.js.map +1 -0
- package/dist/domains/comet-native/native-verification-receipt.d.ts +165 -0
- package/dist/domains/comet-native/native-verification-receipt.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-receipt.js +636 -0
- package/dist/domains/comet-native/native-verification-receipt.js.map +1 -0
- package/dist/domains/comet-native/native-verification-runtime.d.ts +61 -0
- package/dist/domains/comet-native/native-verification-runtime.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-runtime.js +609 -0
- package/dist/domains/comet-native/native-verification-runtime.js.map +1 -0
- package/dist/domains/comet-native/native-verification-scope.d.ts +118 -0
- package/dist/domains/comet-native/native-verification-scope.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-scope.js +1045 -0
- package/dist/domains/comet-native/native-verification-scope.js.map +1 -0
- package/dist/domains/comet-native/native-workspace.d.ts +46 -0
- package/dist/domains/comet-native/native-workspace.d.ts.map +1 -0
- package/dist/domains/comet-native/native-workspace.js +276 -0
- package/dist/domains/comet-native/native-workspace.js.map +1 -0
- package/dist/domains/dashboard/collector.d.ts.map +1 -1
- package/dist/domains/dashboard/collector.js +182 -75
- package/dist/domains/dashboard/collector.js.map +1 -1
- package/dist/domains/dashboard/native-adapter.d.ts +157 -0
- package/dist/domains/dashboard/native-adapter.d.ts.map +1 -0
- package/dist/domains/dashboard/native-adapter.js +302 -0
- package/dist/domains/dashboard/native-adapter.js.map +1 -0
- package/dist/domains/dashboard/native-collector.d.ts +6 -0
- package/dist/domains/dashboard/native-collector.d.ts.map +1 -0
- package/dist/domains/dashboard/native-collector.js +289 -0
- package/dist/domains/dashboard/native-collector.js.map +1 -0
- package/dist/domains/dashboard/types.d.ts +10 -0
- package/dist/domains/dashboard/types.d.ts.map +1 -1
- package/dist/domains/dashboard/verify-parser.d.ts.map +1 -1
- package/dist/domains/dashboard/verify-parser.js +37 -31
- package/dist/domains/dashboard/verify-parser.js.map +1 -1
- package/dist/domains/dashboard/web/assets/_commonjsHelpers-CqkleIqs.js +1 -0
- package/dist/domains/dashboard/web/assets/arc-BXWNV2Qv.js +1 -0
- package/dist/domains/dashboard/web/assets/architectureDiagram-3BPJPVTR-CjVHPivo.js +36 -0
- package/dist/domains/dashboard/web/assets/blockDiagram-GPEHLZMM-P2PGImSM.js +132 -0
- package/dist/domains/dashboard/web/assets/c4Diagram-AAUBKEIU-fTj6Xhs1.js +10 -0
- package/dist/domains/dashboard/web/assets/channel--JtnhJr8.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-2J33WTMH-BjFDZ5yo.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-4BX2VUAB-BAUkbZdT.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-55IACEB6-DBmuiYme.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-727SXJPM-Do9ufCgY.js +206 -0
- package/dist/domains/dashboard/web/assets/chunk-AQP2D5EJ-qRQWlB5d.js +231 -0
- package/dist/domains/dashboard/web/assets/chunk-FMBD7UC4-BzDzeJ4_.js +15 -0
- package/dist/domains/dashboard/web/assets/chunk-ND2GUHAM-OQcAmIvL.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-QZHKN3VN-BiRfH4d2.js +1 -0
- package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-BRGmx8Iz.js +1 -0
- package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-BRGmx8Iz.js +1 -0
- package/dist/domains/dashboard/web/assets/cose-bilkent-S5V4N54A-CZk37fGn.js +1 -0
- package/dist/domains/dashboard/web/assets/cynefin-VYW2F7L2-B3F-qRTJ.js +166 -0
- package/dist/domains/dashboard/web/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
- package/dist/domains/dashboard/web/assets/dagre-BM42HDAG-D5BQ0eqN.js +4 -0
- package/dist/domains/dashboard/web/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/domains/dashboard/web/assets/demo-BuVau32v.js +25 -0
- package/dist/domains/dashboard/web/assets/diagram-2AECGRRQ-33mXstha.js +43 -0
- package/dist/domains/dashboard/web/assets/diagram-5GNKFQAL-BWHCMFvD.js +10 -0
- package/dist/domains/dashboard/web/assets/diagram-KO2AKTUF-DrPGimEt.js +3 -0
- package/dist/domains/dashboard/web/assets/diagram-LMA3HP47-BBlsg7jG.js +24 -0
- package/dist/domains/dashboard/web/assets/diagram-OG6HWLK6-CsaFSpHi.js +24 -0
- package/dist/domains/dashboard/web/assets/erDiagram-TEJ5UH35-CoB0mzhk.js +85 -0
- package/dist/domains/dashboard/web/assets/flowDiagram-I6XJVG4X-lT53XfSE.js +162 -0
- package/dist/domains/dashboard/web/assets/ganttDiagram-6RSMTGT7-D1SQ56fl.js +292 -0
- package/dist/domains/dashboard/web/assets/gitGraphDiagram-PVQCEYII-D4oDMS5x.js +106 -0
- package/dist/domains/dashboard/web/assets/graph--OzhPTMs.js +1 -0
- package/dist/domains/dashboard/web/assets/index-D-AGxvI4.css +1 -0
- package/dist/domains/dashboard/web/assets/index-DlSYK56b.js +139 -0
- package/dist/domains/dashboard/web/assets/index-Msce_H_q.js +24 -0
- package/dist/domains/dashboard/web/assets/index-QO0z6F4w.js +10 -0
- package/dist/domains/dashboard/web/assets/infoDiagram-5YYISTIA-BeICn98s.js +2 -0
- package/dist/domains/dashboard/web/assets/init-Gi6I4Gst.js +1 -0
- package/dist/domains/dashboard/web/assets/ishikawaDiagram-YF4QCWOH-Dkspu33d.js +70 -0
- package/dist/domains/dashboard/web/assets/journeyDiagram-JHISSGLW-C-EM1sZl.js +139 -0
- package/dist/domains/dashboard/web/assets/kanban-definition-UN3LZRKU-BTbB0IO2.js +89 -0
- package/dist/domains/dashboard/web/assets/katex-HP8lGamR.js +257 -0
- package/dist/domains/dashboard/web/assets/layout-SsrduOYp.js +1 -0
- package/dist/domains/dashboard/web/assets/linear-Cp0UrqDr.js +1 -0
- package/dist/domains/dashboard/web/assets/marked.esm-DECB3bxB.js +64 -0
- package/dist/domains/dashboard/web/assets/mermaid.core-CucmqsLW.js +301 -0
- package/dist/domains/dashboard/web/assets/mindmap-definition-RKZ34NQL-CjEshF1X.js +96 -0
- package/dist/domains/dashboard/web/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/domains/dashboard/web/assets/pieDiagram-4H26LBE5-DrwFnX1b.js +30 -0
- package/dist/domains/dashboard/web/assets/purify.es-VaSPOPhr.js +3 -0
- package/dist/domains/dashboard/web/assets/quadrantDiagram-W4KKPZXB-CjG6pBR2.js +7 -0
- package/dist/domains/dashboard/web/assets/requirementDiagram-4Y6WPE33-BpUQVqCV.js +84 -0
- package/dist/domains/dashboard/web/assets/sankeyDiagram-5OEKKPKP-BeGkEvzR.js +40 -0
- package/dist/domains/dashboard/web/assets/sequenceDiagram-3UESZ5HK-sSTU3MCO.js +162 -0
- package/dist/domains/dashboard/web/assets/stateDiagram-AJRCARHV-CcFBc6qh.js +1 -0
- package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-D5zZYi4x.js +1 -0
- package/dist/domains/dashboard/web/assets/timeline-definition-PNZ67QCA-DCN7NjEs.js +120 -0
- package/dist/domains/dashboard/web/assets/vennDiagram-CIIHVFJN-DZAN1_rr.js +34 -0
- package/dist/domains/dashboard/web/assets/wardleyDiagram-YWT4CUSO-FfkJfr4C.js +78 -0
- package/dist/domains/dashboard/web/assets/xychartDiagram-2RQKCTM6-CD8B-EmR.js +7 -0
- package/dist/domains/dashboard/web/index.html +16 -16
- package/dist/domains/engine/protected-run-file.d.ts +15 -0
- package/dist/domains/engine/protected-run-file.d.ts.map +1 -0
- package/dist/domains/engine/protected-run-file.js +76 -0
- package/dist/domains/engine/protected-run-file.js.map +1 -0
- package/dist/domains/engine/run-store.d.ts +12 -11
- package/dist/domains/engine/run-store.d.ts.map +1 -1
- package/dist/domains/engine/run-store.js +46 -65
- package/dist/domains/engine/run-store.js.map +1 -1
- package/dist/domains/engine/state.d.ts +4 -3
- package/dist/domains/engine/state.d.ts.map +1 -1
- package/dist/domains/engine/state.js +10 -21
- package/dist/domains/engine/state.js.map +1 -1
- package/dist/domains/engine/storage-layout.d.ts +14 -0
- package/dist/domains/engine/storage-layout.d.ts.map +1 -0
- package/dist/domains/engine/storage-layout.js +32 -0
- package/dist/domains/engine/storage-layout.js.map +1 -0
- package/dist/domains/engine/storage-run.d.ts +9 -0
- package/dist/domains/engine/storage-run.d.ts.map +1 -0
- package/dist/domains/engine/storage-run.js +116 -0
- package/dist/domains/engine/storage-run.js.map +1 -0
- package/dist/domains/engine/types.d.ts +1 -1
- package/dist/domains/engine/types.d.ts.map +1 -1
- package/dist/domains/factory/package.d.ts.map +1 -1
- package/dist/domains/factory/package.js +562 -91
- package/dist/domains/factory/package.js.map +1 -1
- package/dist/domains/integrations/codegraph.d.ts +13 -2
- package/dist/domains/integrations/codegraph.d.ts.map +1 -1
- package/dist/domains/integrations/codegraph.js +160 -12
- package/dist/domains/integrations/codegraph.js.map +1 -1
- package/dist/domains/integrations/openspec.d.ts +12 -2
- package/dist/domains/integrations/openspec.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.js +256 -47
- package/dist/domains/integrations/openspec.js.map +1 -1
- package/dist/domains/skill/find.js +8 -7
- package/dist/domains/skill/find.js.map +1 -1
- package/dist/domains/skill/json-object.d.ts +13 -0
- package/dist/domains/skill/json-object.d.ts.map +1 -0
- package/dist/domains/skill/json-object.js +24 -0
- package/dist/domains/skill/json-object.js.map +1 -0
- package/dist/domains/skill/languages.d.ts +2 -1
- package/dist/domains/skill/languages.d.ts.map +1 -1
- package/dist/domains/skill/languages.js +4 -1
- package/dist/domains/skill/languages.js.map +1 -1
- package/dist/domains/skill/managed-markdown.d.ts +14 -0
- package/dist/domains/skill/managed-markdown.d.ts.map +1 -0
- package/dist/domains/skill/managed-markdown.js +126 -0
- package/dist/domains/skill/managed-markdown.js.map +1 -0
- package/dist/domains/skill/platform-inspect.d.ts +13 -0
- package/dist/domains/skill/platform-inspect.d.ts.map +1 -0
- package/dist/domains/skill/platform-inspect.js +193 -0
- package/dist/domains/skill/platform-inspect.js.map +1 -0
- package/dist/domains/skill/platform-install.d.ts +38 -23
- package/dist/domains/skill/platform-install.d.ts.map +1 -1
- package/dist/domains/skill/platform-install.js +809 -230
- package/dist/domains/skill/platform-install.js.map +1 -1
- package/dist/domains/skill/project-instructions.d.ts +22 -0
- package/dist/domains/skill/project-instructions.d.ts.map +1 -0
- package/dist/domains/skill/project-instructions.js +69 -0
- package/dist/domains/skill/project-instructions.js.map +1 -0
- package/dist/domains/skill/uninstall.d.ts +9 -2
- package/dist/domains/skill/uninstall.d.ts.map +1 -1
- package/dist/domains/skill/uninstall.js +734 -158
- package/dist/domains/skill/uninstall.js.map +1 -1
- package/dist/domains/workflow-contract/builtins.d.ts +6 -0
- package/dist/domains/workflow-contract/builtins.d.ts.map +1 -1
- package/dist/domains/workflow-contract/builtins.js +149 -6
- package/dist/domains/workflow-contract/builtins.js.map +1 -1
- package/dist/domains/workflow-contract/contained-atomic-write.d.ts +21 -0
- package/dist/domains/workflow-contract/contained-atomic-write.d.ts.map +1 -0
- package/dist/domains/workflow-contract/contained-atomic-write.js +235 -0
- package/dist/domains/workflow-contract/contained-atomic-write.js.map +1 -0
- package/dist/domains/workflow-contract/index.d.ts +11 -1
- package/dist/domains/workflow-contract/index.d.ts.map +1 -1
- package/dist/domains/workflow-contract/index.js +7 -1
- package/dist/domains/workflow-contract/index.js.map +1 -1
- package/dist/domains/workflow-contract/normalize.d.ts.map +1 -1
- package/dist/domains/workflow-contract/normalize.js +30 -11
- package/dist/domains/workflow-contract/normalize.js.map +1 -1
- package/dist/domains/workflow-contract/project-config-reader.d.ts +24 -0
- package/dist/domains/workflow-contract/project-config-reader.d.ts.map +1 -0
- package/dist/domains/workflow-contract/project-config-reader.js +54 -0
- package/dist/domains/workflow-contract/project-config-reader.js.map +1 -0
- package/dist/domains/workflow-contract/project-config-transaction.d.ts +20 -0
- package/dist/domains/workflow-contract/project-config-transaction.d.ts.map +1 -0
- package/dist/domains/workflow-contract/project-config-transaction.js +293 -0
- package/dist/domains/workflow-contract/project-config-transaction.js.map +1 -0
- package/dist/domains/workflow-contract/project-config-writer.d.ts +13 -0
- package/dist/domains/workflow-contract/project-config-writer.d.ts.map +1 -0
- package/dist/domains/workflow-contract/project-config-writer.js +142 -0
- package/dist/domains/workflow-contract/project-config-writer.js.map +1 -0
- package/dist/domains/workflow-contract/project-config.d.ts +32 -0
- package/dist/domains/workflow-contract/project-config.d.ts.map +1 -0
- package/dist/domains/workflow-contract/project-config.js +1566 -0
- package/dist/domains/workflow-contract/project-config.js.map +1 -0
- package/dist/domains/workflow-contract/protected-project-path.d.ts +34 -0
- package/dist/domains/workflow-contract/protected-project-path.d.ts.map +1 -0
- package/dist/domains/workflow-contract/protected-project-path.js +162 -0
- package/dist/domains/workflow-contract/protected-project-path.js.map +1 -0
- package/dist/domains/workflow-contract/types.d.ts +67 -2
- package/dist/domains/workflow-contract/types.d.ts.map +1 -1
- package/dist/domains/workflow-contract/validation.d.ts.map +1 -1
- package/dist/domains/workflow-contract/validation.js +14 -5
- package/dist/domains/workflow-contract/validation.js.map +1 -1
- package/dist/platform/fs/file-identity.d.ts +9 -0
- package/dist/platform/fs/file-identity.d.ts.map +1 -0
- package/dist/platform/fs/file-identity.js +21 -0
- package/dist/platform/fs/file-identity.js.map +1 -0
- package/dist/platform/fs/file-system.d.ts +3 -3
- package/dist/platform/fs/file-system.d.ts.map +1 -1
- package/dist/platform/fs/file-system.js +31 -17
- package/dist/platform/fs/file-system.js.map +1 -1
- package/dist/platform/fs/race-safe-read.d.ts +47 -0
- package/dist/platform/fs/race-safe-read.d.ts.map +1 -0
- package/dist/platform/fs/race-safe-read.js +132 -0
- package/dist/platform/fs/race-safe-read.js.map +1 -0
- package/dist/platform/fs/trusted-readonly-file.d.ts +31 -0
- package/dist/platform/fs/trusted-readonly-file.d.ts.map +1 -0
- package/dist/platform/fs/trusted-readonly-file.js +107 -0
- package/dist/platform/fs/trusted-readonly-file.js.map +1 -0
- package/dist/platform/install/detect.d.ts +5 -2
- package/dist/platform/install/detect.d.ts.map +1 -1
- package/dist/platform/install/detect.js +14 -2
- package/dist/platform/install/detect.js.map +1 -1
- package/dist/platform/install/platform-targets.d.ts +8 -0
- package/dist/platform/install/platform-targets.d.ts.map +1 -0
- package/dist/platform/install/platform-targets.js +31 -0
- package/dist/platform/install/platform-targets.js.map +1 -0
- package/dist/platform/install/platforms.d.ts +10 -1
- package/dist/platform/install/platforms.d.ts.map +1 -1
- package/dist/platform/install/platforms.js +27 -4
- package/dist/platform/install/platforms.js.map +1 -1
- package/dist/platform/install/project-registry.d.ts +38 -0
- package/dist/platform/install/project-registry.d.ts.map +1 -0
- package/dist/platform/install/project-registry.js +213 -0
- package/dist/platform/install/project-registry.js.map +1 -0
- package/dist/platform/install/skill-root-owner.d.ts +15 -0
- package/dist/platform/install/skill-root-owner.d.ts.map +1 -0
- package/dist/platform/install/skill-root-owner.js +68 -0
- package/dist/platform/install/skill-root-owner.js.map +1 -0
- package/dist/platform/paths/git-worktree.d.ts +10 -0
- package/dist/platform/paths/git-worktree.d.ts.map +1 -0
- package/dist/platform/paths/git-worktree.js +43 -0
- package/dist/platform/paths/git-worktree.js.map +1 -0
- package/dist/platform/paths/repository-layout.d.ts +16 -0
- package/dist/platform/paths/repository-layout.d.ts.map +1 -1
- package/dist/platform/paths/repository-layout.js.map +1 -1
- package/dist/platform/process/terminate-process-tree.d.ts +3 -0
- package/dist/platform/process/terminate-process-tree.d.ts.map +1 -0
- package/dist/platform/process/terminate-process-tree.js +65 -0
- package/dist/platform/process/terminate-process-tree.js.map +1 -0
- package/eval/CLAUDE.md +43 -0
- package/eval/README.md +538 -0
- package/eval/langsmith/README.md +93 -0
- package/eval/langsmith/skills/README.md +5 -0
- package/eval/langsmith/tasks/README.md +5 -0
- package/eval/langsmith/tests/conftest.py +187 -0
- package/eval/langsmith/tests/tasks/test_tasks.py +287 -0
- package/eval/langsmith/treatments/README.md +5 -0
- package/eval/local/README.md +130 -0
- package/eval/local/regression_baseline.json +13 -0
- package/eval/local/report-style-demo-assets/quality_cost.en.svg +41 -0
- package/eval/local/report-style-demo-assets/quality_cost.zh.svg +41 -0
- package/eval/local/report-style-demo-assets/rubric_delta.en.svg +56 -0
- package/eval/local/report-style-demo-assets/rubric_delta.zh.svg +56 -0
- package/eval/local/report-style-demo-assets/task_outcomes.en.svg +46 -0
- package/eval/local/report-style-demo-assets/task_outcomes.zh.svg +46 -0
- package/eval/local/report-style-demo.html +867 -0
- package/eval/local/scripts/compare_baselines.py +1144 -0
- package/eval/local/scripts/generate_report_style_demo_charts.py +322 -0
- package/eval/local/scripts/regression_check.py +170 -0
- package/eval/local/scripts/render_readme_benchmark_figures.py +416 -0
- package/eval/local/scripts/rescore_rubric.py +120 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/SKILL.md +282 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/comet-yaml-fields.md +68 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/context-recovery.md +35 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/debug-gate.md +17 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/decision-point.md +20 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/subagent-dispatch.md +113 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/rules/comet-phase-guard.md +125 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-archive.sh +311 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-env.sh +110 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-guard.sh +778 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-handoff.sh +390 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-hook-guard.sh +336 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-state.sh +1338 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-yaml-validate.sh +225 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-archive/SKILL.md +100 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-build/SKILL.md +304 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-design/SKILL.md +263 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-hotfix/SKILL.md +204 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-open/SKILL.md +220 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-tweak/SKILL.md +180 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-verify/SKILL.md +234 -0
- package/eval/local/skills/benchmarks/040-beta/comet/SKILL.md +261 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/comet-yaml-fields.md +73 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/context-recovery.md +45 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/debug-gate.md +33 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/decision-point.md +31 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/intent-frame.md +74 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/scripts.md +69 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/subagent-dispatch.md +169 -0
- package/eval/local/skills/benchmarks/040-beta/comet/rules/comet-phase-guard.md +130 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/checks.yaml +6 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/guardrails.yaml +13 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/skill.yaml +122 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-archive.mjs +9515 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-env.mjs +15 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-guard.mjs +10173 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-handoff.mjs +9491 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-hook-guard.mjs +9175 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-intent.mjs +404 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-state.mjs +9273 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-yaml-validate.mjs +7627 -0
- package/eval/local/skills/benchmarks/040-beta/comet-archive/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/040-beta/comet-build/SKILL.md +315 -0
- package/eval/local/skills/benchmarks/040-beta/comet-design/SKILL.md +260 -0
- package/eval/local/skills/benchmarks/040-beta/comet-hotfix/SKILL.md +190 -0
- package/eval/local/skills/benchmarks/040-beta/comet-open/SKILL.md +210 -0
- package/eval/local/skills/benchmarks/040-beta/comet-tweak/SKILL.md +183 -0
- package/eval/local/skills/benchmarks/040-beta/comet-verify/SKILL.md +230 -0
- package/eval/local/skills/benchmarks/dependency/claude-md/comet-workflow/CLAUDE.md +12 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-apply-change/SKILL.md +156 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-archive-change/SKILL.md +114 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-continue-change/SKILL.md +118 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-explore/SKILL.md +288 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-ff-change/SKILL.md +101 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-new-change/SKILL.md +74 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-onboard/SKILL.md +554 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-propose/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-sync-specs/SKILL.md +138 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-verify-change/SKILL.md +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/SKILL.md +159 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/frame-template.html +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/helper.js +167 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/server.cjs +723 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/start-server.sh +209 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/stop-server.sh +120 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/visual-companion.md +291 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/dispatching-parallel-agents/SKILL.md +185 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/executing-plans/SKILL.md +70 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/finishing-a-development-branch/SKILL.md +241 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/receiving-code-review/SKILL.md +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/SKILL.md +103 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/code-reviewer.md +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/SKILL.md +418 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/implementer-prompt.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/review-package +44 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/sdd-workspace +22 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/task-brief +40 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/task-reviewer-prompt.md +188 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/SKILL.md +296 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/defense-in-depth.md +122 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/find-polluter.sh +63 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-academic.md +14 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-1.md +58 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-2.md +68 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-3.md +69 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/SKILL.md +371 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/using-git-worktrees/SKILL.md +202 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/verification-before-completion/SKILL.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/SKILL.md +174 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/SKILL.md +689 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/graphviz-conventions.dot +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/persuasion-principles.md +187 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/render-graphs.js +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
- package/eval/local/tasks/authoring-skill-smoke/environment/Dockerfile +14 -0
- package/eval/local/tasks/authoring-skill-smoke/instruction.md +4 -0
- package/eval/local/tasks/authoring-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/authoring-skill-smoke/validation/test_authoring_skill_smoke.py +54 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/Dockerfile +26 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/agent_system.py +40 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/test_agent_system.py +29 -0
- package/eval/local/tasks/comet-agent-memory-routing/instruction.md +20 -0
- package/eval/local/tasks/comet-agent-memory-routing/task.toml +24 -0
- package/eval/local/tasks/comet-agent-memory-routing/validation/test_agent_memory_routing.py +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/Dockerfile +35 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/cache.py +39 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/test_cache.py +81 -0
- package/eval/local/tasks/comet-api-cache-ttl/instruction.md +33 -0
- package/eval/local/tasks/comet-api-cache-ttl/task.toml +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/validation/test_api_cache_ttl.py +58 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/.include-current-comet-cli +1 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/Dockerfile +45 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/current-comet-package.json +18 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/current-comet.sh +14 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/test_wordcount.py +29 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/environment/wordcount.py +40 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/instruction.md +18 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/task.toml +23 -0
- package/eval/local/tasks/comet-classic-layout-lifecycle/validation/test_classic_layout_lifecycle.py +604 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/cli.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/counting.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/test_textkit.py +21 -0
- package/eval/local/tasks/comet-cross-file-refactor/instruction.md +16 -0
- package/eval/local/tasks/comet-cross-file-refactor/task.toml +20 -0
- package/eval/local/tasks/comet-cross-file-refactor/validation/test_cross_file_refactor.py +20 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/app.py +8 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/settings_loader.py +14 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/test_settings_service.py +19 -0
- package/eval/local/tasks/comet-dependency-confusion/instruction.md +18 -0
- package/eval/local/tasks/comet-dependency-confusion/task.toml +24 -0
- package/eval/local/tasks/comet-dependency-confusion/validation/test_dependency_confusion.py +24 -0
- package/eval/local/tasks/comet-fix-median/environment/Dockerfile +46 -0
- package/eval/local/tasks/comet-fix-median/environment/stats.py +54 -0
- package/eval/local/tasks/comet-fix-median/environment/test_stats.py +68 -0
- package/eval/local/tasks/comet-fix-median/instruction.md +25 -0
- package/eval/local/tasks/comet-fix-median/task.toml +24 -0
- package/eval/local/tasks/comet-fix-median/validation/test_fix_median.py +60 -0
- package/eval/local/tasks/comet-framework-selection/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-framework-selection/environment/architecture.py +12 -0
- package/eval/local/tasks/comet-framework-selection/environment/test_architecture.py +30 -0
- package/eval/local/tasks/comet-framework-selection/instruction.md +22 -0
- package/eval/local/tasks/comet-framework-selection/task.toml +24 -0
- package/eval/local/tasks/comet-framework-selection/validation/test_framework_selection.py +24 -0
- package/eval/local/tasks/comet-full-workflow/environment/Dockerfile +49 -0
- package/eval/local/tasks/comet-full-workflow/environment/test_wordcount.py +29 -0
- package/eval/local/tasks/comet-full-workflow/environment/wordcount.py +40 -0
- package/eval/local/tasks/comet-full-workflow/instruction.md +18 -0
- package/eval/local/tasks/comet-full-workflow/task.toml +24 -0
- package/eval/local/tasks/comet-full-workflow/validation/test_full_workflow.py +171 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/pipeline.py +19 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/test_pipeline.py +53 -0
- package/eval/local/tasks/comet-graph-execution-review/instruction.md +21 -0
- package/eval/local/tasks/comet-graph-execution-review/task.toml +24 -0
- package/eval/local/tasks/comet-graph-execution-review/validation/test_graph_execution_review.py +24 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/approvals.py +17 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/test_approvals.py +30 -0
- package/eval/local/tasks/comet-human-approval-flow/instruction.md +15 -0
- package/eval/local/tasks/comet-human-approval-flow/task.toml +20 -0
- package/eval/local/tasks/comet-human-approval-flow/validation/test_human_approval_flow.py +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/Dockerfile +17 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/chat_app.py +19 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/test_chat_app.py +15 -0
- package/eval/local/tasks/comet-layered-streaming-fix/instruction.md +14 -0
- package/eval/local/tasks/comet-layered-streaming-fix/task.toml +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/validation/test_layered_streaming_fix.py +20 -0
- package/eval/local/tasks/comet-native-clarification/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-clarification/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-clarification/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-clarification/instruction.md +7 -0
- package/eval/local/tasks/comet-native-clarification/task.toml +40 -0
- package/eval/local/tasks/comet-native-clarification/validation/test_native_clarification.py +193 -0
- package/eval/local/tasks/comet-native-clarification-depth/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-clarification-depth/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-clarification-depth/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-clarification-depth/instruction.md +17 -0
- package/eval/local/tasks/comet-native-clarification-depth/task.toml +47 -0
- package/eval/local/tasks/comet-native-clarification-depth/validation/test_native_clarification_depth.py +618 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-clarification-modes/instruction.md +13 -0
- package/eval/local/tasks/comet-native-clarification-modes/task.toml +39 -0
- package/eval/local/tasks/comet-native-clarification-modes/validation/test_native_clarification_modes.py +235 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/.comet/config.yaml +6 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/Dockerfile +26 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/brief.md +17 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/comet-state.yaml +12 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/runtime/transition.json +69 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/specs/character-counting/spec.md +3 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/test_wordcount.py +20 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/wordcount.py +27 -0
- package/eval/local/tasks/comet-native-interrupted-transition/instruction.md +7 -0
- package/eval/local/tasks/comet-native-interrupted-transition/task.toml +35 -0
- package/eval/local/tasks/comet-native-interrupted-transition/validation/test_native_interrupted_transition.py +63 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/Dockerfile +24 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/PRODUCT_RULES.md +3 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/test_wordcount.py +20 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/wordcount.py +27 -0
- package/eval/local/tasks/comet-native-repository-fact/instruction.md +7 -0
- package/eval/local/tasks/comet-native-repository-fact/task.toml +35 -0
- package/eval/local/tasks/comet-native-repository-fact/validation/test_native_repository_fact.py +53 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/instruction.md +9 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/task.toml +40 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/validation/test_native_wave_b_decision_resume.py +208 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/instruction.md +11 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/task.toml +36 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/validation/test_native_wave_c_verification_integrity.py +344 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/instruction.md +11 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/task.toml +37 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/validation/test_native_wave_d_stagnation_stop.py +284 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/.include-trusted-native-runtime +1 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/Dockerfile +25 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/instruction.md +9 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/task.toml +37 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/validation/test_native_wave_e_parallel_safety.py +309 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/.include-current-comet-cli +1 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/Dockerfile +29 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet-package.json +18 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet.sh +14 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/instruction.md +7 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/task.toml +36 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/validation/test_native_wave_f_dashboard_readonly.py +483 -0
- package/eval/local/tasks/comet-native-workflow/environment/.include-trusted-native-review-fixture +1 -0
- package/eval/local/tasks/comet-native-workflow/environment/.include-trusted-native-runtime +1 -0
- package/eval/local/tasks/comet-native-workflow/environment/Dockerfile +26 -0
- package/eval/local/tasks/comet-native-workflow/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-workflow/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-workflow/instruction.md +36 -0
- package/eval/local/tasks/comet-native-workflow/task.toml +36 -0
- package/eval/local/tasks/comet-native-workflow/validation/test_native_workflow.py +680 -0
- package/eval/local/tasks/comet-noise-distractor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-noise-distractor/environment/distractor.md +4 -0
- package/eval/local/tasks/comet-noise-distractor/environment/invoice.py +5 -0
- package/eval/local/tasks/comet-noise-distractor/environment/test_invoice.py +18 -0
- package/eval/local/tasks/comet-noise-distractor/instruction.md +17 -0
- package/eval/local/tasks/comet-noise-distractor/task.toml +20 -0
- package/eval/local/tasks/comet-noise-distractor/validation/test_noise_distractor.py +20 -0
- package/eval/local/tasks/comet-observability-env-template/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-observability-env-template/environment/env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/environment/test_env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/instruction.md +20 -0
- package/eval/local/tasks/comet-observability-env-template/task.toml +20 -0
- package/eval/local/tasks/comet-observability-env-template/validation/test_observability_env_template.py +46 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/Dockerfile +35 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/dedupe.py +22 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/test_dedupe.py +43 -0
- package/eval/local/tasks/comet-perf-dedupe/instruction.md +25 -0
- package/eval/local/tasks/comet-perf-dedupe/task.toml +24 -0
- package/eval/local/tasks/comet-perf-dedupe/validation/test_perf_dedupe.py +40 -0
- package/eval/local/tasks/comet-persistence-threading/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/session_store.py +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/test_session_store.py +21 -0
- package/eval/local/tasks/comet-persistence-threading/instruction.md +14 -0
- package/eval/local/tasks/comet-persistence-threading/task.toml +20 -0
- package/eval/local/tasks/comet-persistence-threading/validation/test_persistence_threading.py +20 -0
- package/eval/local/tasks/comet-refactor-counter/environment/Dockerfile +35 -0
- package/eval/local/tasks/comet-refactor-counter/environment/test_text_processor.py +57 -0
- package/eval/local/tasks/comet-refactor-counter/environment/text_processor.py +49 -0
- package/eval/local/tasks/comet-refactor-counter/instruction.md +31 -0
- package/eval/local/tasks/comet-refactor-counter/task.toml +24 -0
- package/eval/local/tasks/comet-refactor-counter/validation/test_refactor_counter.py +75 -0
- package/eval/local/tasks/comet-robust-config/environment/Dockerfile +35 -0
- package/eval/local/tasks/comet-robust-config/environment/config_loader.py +56 -0
- package/eval/local/tasks/comet-robust-config/environment/test_config_loader.py +72 -0
- package/eval/local/tasks/comet-robust-config/instruction.md +30 -0
- package/eval/local/tasks/comet-robust-config/task.toml +24 -0
- package/eval/local/tasks/comet-robust-config/validation/test_robust_config.py +37 -0
- package/eval/local/tasks/generic-skill-smoke/environment/Dockerfile +14 -0
- package/eval/local/tasks/generic-skill-smoke/instruction.md +7 -0
- package/eval/local/tasks/generic-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/generic-skill-smoke/validation/test_generic_skill_smoke.py +41 -0
- package/eval/local/tasks/index.yaml +229 -0
- package/eval/local/tasks/workflow-overlay-contract/environment/Dockerfile +16 -0
- package/eval/local/tasks/workflow-overlay-contract/instruction.md +5 -0
- package/eval/local/tasks/workflow-overlay-contract/task.toml +21 -0
- package/eval/local/tasks/workflow-overlay-contract/validation/test_workflow_overlay_contract.py +235 -0
- package/eval/local/tasks/workflow-route-conformance/environment/Dockerfile +14 -0
- package/eval/local/tasks/workflow-route-conformance/instruction.md +5 -0
- package/eval/local/tasks/workflow-route-conformance/task.toml +21 -0
- package/eval/local/tasks/workflow-route-conformance/validation/test_workflow_route_conformance.py +84 -0
- package/eval/local/tests/conftest.py +1946 -0
- package/eval/local/tests/scaffold/test_aligned_comparison.py +1012 -0
- package/eval/local/tests/scaffold/test_attribution.py +48 -0
- package/eval/local/tests/scaffold/test_compare_baselines.py +999 -0
- package/eval/local/tests/scaffold/test_conftest_helpers.py +980 -0
- package/eval/local/tests/scaffold/test_evidence.py +15 -0
- package/eval/local/tests/scaffold/test_langsmith_conftest.py +244 -0
- package/eval/local/tests/scaffold/test_logging.py +377 -0
- package/eval/local/tests/scaffold/test_manifests.py +134 -0
- package/eval/local/tests/scaffold/test_native_aligned_eval.py +353 -0
- package/eval/local/tests/scaffold/test_native_wave_evaluations.py +2183 -0
- package/eval/local/tests/scaffold/test_profiles.py +1149 -0
- package/eval/local/tests/scaffold/test_regression_check.py +19 -0
- package/eval/local/tests/scaffold/test_report_style_demo_charts.py +45 -0
- package/eval/local/tests/scaffold/test_sample_quality.py +268 -0
- package/eval/local/tests/scaffold/test_tasks.py +1013 -0
- package/eval/local/tests/scaffold/test_treatments.py +353 -0
- package/eval/local/tests/scaffold/test_utils.py +561 -0
- package/eval/local/tests/tasks/__init__.py +1 -0
- package/eval/local/tests/tasks/test_tasks.py +474 -0
- package/eval/local/tests/tasks/test_validation_scripts.py +787 -0
- package/eval/local/treatments/comet/comet_classic_docs_layout.yaml +121 -0
- package/eval/local/treatments/comet/comet_full_039.yaml +141 -0
- package/eval/local/treatments/comet/comet_full_040_beta.yaml +140 -0
- package/eval/local/treatments/comet/comet_native_phase1.yaml +66 -0
- package/eval/local/treatments/common/control.yaml +4 -0
- package/eval/pyproject.toml +41 -0
- package/eval/report-html-config.json +6 -0
- package/eval/scaffold/__init__.py +67 -0
- package/eval/scaffold/python/__init__.py +95 -0
- package/eval/scaffold/python/aligned_comparison.py +1632 -0
- package/eval/scaffold/python/attribution.py +43 -0
- package/eval/scaffold/python/evidence.py +38 -0
- package/eval/scaffold/python/external_data_handler.py +18 -0
- package/eval/scaffold/python/generic_llm_judge.py +237 -0
- package/eval/scaffold/python/judge_config.py +168 -0
- package/eval/scaffold/python/llm_judge.py +188 -0
- package/eval/scaffold/python/logging.py +804 -0
- package/eval/scaffold/python/manifests.py +131 -0
- package/eval/scaffold/python/native_eval.py +143 -0
- package/eval/scaffold/python/paper_charts.py +25 -0
- package/eval/scaffold/python/pass_at_k.py +106 -0
- package/eval/scaffold/python/paths.py +56 -0
- package/eval/scaffold/python/profiles.py +127 -0
- package/eval/scaffold/python/report_outputs.py +1573 -0
- package/eval/scaffold/python/sample_quality.py +382 -0
- package/eval/scaffold/python/schema.py +39 -0
- package/eval/scaffold/python/skill_parser.py +469 -0
- package/eval/scaffold/python/tasks.py +343 -0
- package/eval/scaffold/python/treatments.py +271 -0
- package/eval/scaffold/python/utils.py +460 -0
- package/eval/scaffold/python/validation/__init__.py +31 -0
- package/eval/scaffold/python/validation/authoring_rubric.py +328 -0
- package/eval/scaffold/python/validation/comet_workflow.py +227 -0
- package/eval/scaffold/python/validation/core.py +264 -0
- package/eval/scaffold/python/validation/dataset.py +337 -0
- package/eval/scaffold/python/validation/docker.py +106 -0
- package/eval/scaffold/python/validation/evaluator.py +549 -0
- package/eval/scaffold/python/validation/generic_rubric.py +198 -0
- package/eval/scaffold/python/validation/native_wave.py +2154 -0
- package/eval/scaffold/python/validation/native_workflow.py +252 -0
- package/eval/scaffold/python/validation/rubric.py +780 -0
- package/eval/scaffold/python/validation/runner.py +237 -0
- package/eval/scaffold/python/validation/scripts.py +58 -0
- package/eval/scaffold/python/validation/tracing.py +313 -0
- package/eval/scaffold/shell/common.sh +126 -0
- package/eval/scaffold/shell/completion-point.sh +18 -0
- package/eval/scaffold/shell/decision-point.sh +35 -0
- package/eval/scaffold/shell/docker.sh +716 -0
- package/eval/scaffold/shell/native-review-signer-daemon.mjs +144 -0
- package/eval/scaffold/shell/native-review-verifier-daemon.mjs +178 -0
- package/eval/scaffold/shell/run-claude-loop.sh +234 -0
- package/eval/scaffold/shell/setup.sh +259 -0
- package/eval/simulator-instruction.md +9 -0
- package/package.json +64 -10
- package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +0 -1
- package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +0 -1
- package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +0 -22
|
@@ -0,0 +1,1300 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { RaceSafeReadError, readFileRaceSafe } from '../../platform/fs/race-safe-read.js';
|
|
4
|
+
import { archiveNativeChange, NativeArchivePreflightError, NativeSpecConflictError, } from './native-archive.js';
|
|
5
|
+
import { atomicWriteJson } from './native-atomic-file.js';
|
|
6
|
+
import { serializeNativeVerificationMachineBlock } from './native-acceptance.js';
|
|
7
|
+
import { inspectNativeArchivePreflight } from './native-archive-inspection.js';
|
|
8
|
+
import { createNativeChange, inspectNativeChange, NativeChangeRevisionConflictError, NativeBaselineIncompleteError, NativeRuntimeCompatibilityError, nativeChangeDir, readNativeChange, } from './native-change.js';
|
|
9
|
+
import { defaultProjectConfig, readProjectConfig, resolveNativeProject, writeProjectConfig, } from './native-config.js';
|
|
10
|
+
import { inspectNativeStatus, listNativeStatusPage } from './native-diagnostics.js';
|
|
11
|
+
import { doctorNativeProject } from './native-doctor.js';
|
|
12
|
+
import { checkNativeChange } from './native-check.js';
|
|
13
|
+
import { checkpointNativeChange } from './native-progress-checkpoint.js';
|
|
14
|
+
import { nativeContinuation } from './native-continuation.js';
|
|
15
|
+
import { discoverNativeProject, ensureNativeDirectories, nativeProjectPaths, normalizeArtifactRootRef, resolveContainedNativePath, } from './native-paths.js';
|
|
16
|
+
import { withNativeMutationLock } from './native-mutation-lock.js';
|
|
17
|
+
import { moveNativeRoot } from './native-root-move.js';
|
|
18
|
+
import { selectNativeChange } from './native-selection.js';
|
|
19
|
+
import { markNativeSpecRemoval, readNativeProposedSpecs, rebaseNativeSpecChanges, } from './native-specs.js';
|
|
20
|
+
import { readNativeBoundedTextFile } from './native-bounded-file.js';
|
|
21
|
+
import { NATIVE_CONTRACT_FILE_LIMITS } from './native-contract-files.js';
|
|
22
|
+
import { MAX_NATIVE_IMPLEMENTATION_EVIDENCE_DOCUMENT_BYTES } from './native-verification-scope.js';
|
|
23
|
+
import { buildNativeCreationAuthorization, parseNativeCreationAuthorization, } from './native-creation-authorization.js';
|
|
24
|
+
import { nativeControllerProjectRootHash, readNativeControllerTrustProject, } from './native-controller-trust.js';
|
|
25
|
+
import { approveNativeIndependentReviewPreparation, finalizeNativeImplementationAttestation, finalizeNativeIndependentReviewReceipt, issueNativeAutomatedCheckReceipt, issueNativeManualEvidenceReceipt, issueNativeWaiverReceipt, MAX_NATIVE_AUTOMATED_COMMAND_TIMEOUT_MS, prepareNativeIndependentReview, prepareNativeImplementationAttestation, } from './native-verification-receipt-runtime.js';
|
|
26
|
+
import { generateNativeReviewKeyPair, nativeReviewIdentityFromPrivateKey, nativeReviewPrivateKeyFilePersistenceSupported, parseNativeReviewIdentity, parseNativeReviewSignature, } from './native-review-identity.js';
|
|
27
|
+
import { buildNativeReviewTrustPolicy, NATIVE_REVIEW_TRUST_POLICY_REF, readNativeReviewTrustPolicy, } from './native-review-trust.js';
|
|
28
|
+
import { parseNativeImplementationPreparation, parseNativeIndependentReviewApproval, signNativeImplementationPreparation, signNativeIndependentReviewApproval, } from './native-review-signer.js';
|
|
29
|
+
import { advanceNativeChange } from './native-transitions.js';
|
|
30
|
+
import { inspectNativeHookGuard, readNativeHookRequest } from './native-hook-guard.js';
|
|
31
|
+
const NATIVE_SHOW_MAX_SERIALIZED_BYTES = 10 * 1024 * 1024;
|
|
32
|
+
class NativeUsageError extends Error {
|
|
33
|
+
}
|
|
34
|
+
const USAGE = `Usage: comet native <command> [options]
|
|
35
|
+
|
|
36
|
+
Commands:
|
|
37
|
+
hook-guard [--hook-output copilot]
|
|
38
|
+
init [--root <artifact-root>] [--language en|zh-CN]
|
|
39
|
+
root show
|
|
40
|
+
root move <artifact-root>
|
|
41
|
+
new <change-name> --creation-authorization <path> [--language en|zh-CN]
|
|
42
|
+
spec remove <change-name> <capability>
|
|
43
|
+
spec rebase <change-name> --summary <text>
|
|
44
|
+
list [--cursor <token>]
|
|
45
|
+
show <change-name>
|
|
46
|
+
status [<change-name>] [--cursor <token>] [--details [--acceptance-cursor <token>]]
|
|
47
|
+
select <change-name>
|
|
48
|
+
checkpoint <change-name> --summary <text> --next-action <text> [--artifact <project-relative>] [--expect-revision <n>]
|
|
49
|
+
check <change-name>
|
|
50
|
+
evidence format [--entries <path>]
|
|
51
|
+
trust keygen --identity <path> --private-key <outside-project-path>
|
|
52
|
+
trust identity --private-key-env <name> --identity <path>
|
|
53
|
+
trust policy --implementation-identity <path> --reviewer-identity <path> --waiver-identity <path> --controller-private-key-env <name>
|
|
54
|
+
trust authorize <change-name> --controller-private-key-env <name> --output <path>
|
|
55
|
+
receipt manual <change-name> --acceptance <id> --responsible <text> --step <text> --observation <text> --confirmed
|
|
56
|
+
receipt automated <change-name> --acceptance <id> [--timeout-ms <n>] -- <executable> [args...]
|
|
57
|
+
receipt implement <change-name> prepare --identity <path> --output <path>
|
|
58
|
+
receipt implement sign --preparation <path> --identity <path> --private-key-env <name> --output <path>
|
|
59
|
+
receipt implement <change-name> finalize --preparation <path> --attestation <path> --confirmed
|
|
60
|
+
receipt review <change-name> prepare --implementation-receipt <ref> --report <path> --required-receipt <ref> --identity <path> [--unified-io-receipt <ref> --adversarial-paths-receipt <ref> --generated-assets-receipt <ref> --lifecycle-eval-receipt <ref>] --output <path>
|
|
61
|
+
receipt review <change-name> approve --preparation <path> --attest-manual <ref> [--findings <path>] --checked-acceptance-applicability --output <path>
|
|
62
|
+
receipt review sign --approval <path> --identity <path> --private-key-env <name> --output <path>
|
|
63
|
+
receipt review <change-name> finalize --preparation <path> --approval <path> --attestation <path> --confirmed
|
|
64
|
+
receipt waive <change-name> --acceptance <id> --blocked-receipt <ref> --reason <text> --risk <text> --alternative-receipt <ref> --identity <path> --private-key-env <name> --confirmed
|
|
65
|
+
next <change-name> --summary <text> [--confirmed] [--artifact <path>] [--no-code-reason <text>] [--allow-partial-scope <sha256> --partial-reason <text>] [--result pass|fail] [--report <path>] [--receipt <required-ref>] [--evidence-receipt <ref>] [--waiver <ref>] [--independent-review-receipt <ref>] [--failure-category <token>] [--failed-check <token>] [--override-repair <sha256> --override-summary <text>]
|
|
66
|
+
archive <change-name> --dry-run
|
|
67
|
+
archive <change-name> --expect-preflight <sha256> [--confirmed]
|
|
68
|
+
doctor [<change-name>] [--repair] [--strategy continue|rollback]
|
|
69
|
+
`;
|
|
70
|
+
function takeFlag(args, name) {
|
|
71
|
+
const indexes = args.flatMap((value, index) => (value === name ? [index] : []));
|
|
72
|
+
if (indexes.length > 1)
|
|
73
|
+
throw new NativeUsageError(`${name} may only be provided once`);
|
|
74
|
+
if (indexes.length === 0)
|
|
75
|
+
return false;
|
|
76
|
+
args.splice(indexes[0], 1);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
function takeOption(args, name) {
|
|
80
|
+
const indexes = args.flatMap((value, index) => (value === name ? [index] : []));
|
|
81
|
+
if (indexes.length > 1)
|
|
82
|
+
throw new NativeUsageError(`${name} may only be provided once`);
|
|
83
|
+
if (indexes.length === 0)
|
|
84
|
+
return undefined;
|
|
85
|
+
const index = indexes[0];
|
|
86
|
+
const value = args[index + 1];
|
|
87
|
+
if (value === undefined || value.startsWith('--')) {
|
|
88
|
+
throw new NativeUsageError(`${name} requires a value`);
|
|
89
|
+
}
|
|
90
|
+
args.splice(index, 2);
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
function takeMany(args, name) {
|
|
94
|
+
const values = [];
|
|
95
|
+
for (let index = 0; index < args.length;) {
|
|
96
|
+
if (args[index] !== name) {
|
|
97
|
+
index += 1;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const value = args[index + 1];
|
|
101
|
+
if (value === undefined || value.startsWith('--')) {
|
|
102
|
+
throw new NativeUsageError(`${name} requires a value`);
|
|
103
|
+
}
|
|
104
|
+
values.push(value);
|
|
105
|
+
args.splice(index, 2);
|
|
106
|
+
}
|
|
107
|
+
return values;
|
|
108
|
+
}
|
|
109
|
+
function assertNoArguments(args) {
|
|
110
|
+
if (args.length > 0)
|
|
111
|
+
throw new NativeUsageError(`Unexpected argument: ${args[0]}`);
|
|
112
|
+
}
|
|
113
|
+
function requiredPositional(args, label) {
|
|
114
|
+
const value = args.shift();
|
|
115
|
+
if (!value || value.startsWith('--'))
|
|
116
|
+
throw new NativeUsageError(`${label} is required`);
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
function languageOption(args, fallback = 'en') {
|
|
120
|
+
const language = takeOption(args, '--language') ?? fallback;
|
|
121
|
+
if (language !== 'en' && language !== 'zh-CN') {
|
|
122
|
+
throw new NativeUsageError('--language must be en or zh-CN');
|
|
123
|
+
}
|
|
124
|
+
return language;
|
|
125
|
+
}
|
|
126
|
+
function revisionOption(args) {
|
|
127
|
+
const value = takeOption(args, '--expect-revision');
|
|
128
|
+
if (value === undefined)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (!/^[1-9]\d*$/u.test(value) || !Number.isSafeInteger(Number(value))) {
|
|
131
|
+
throw new NativeUsageError('--expect-revision must be a positive integer');
|
|
132
|
+
}
|
|
133
|
+
return Number(value);
|
|
134
|
+
}
|
|
135
|
+
async function projectRootFrom(explicit) {
|
|
136
|
+
return explicit ? path.resolve(explicit) : discoverNativeProject(process.cwd());
|
|
137
|
+
}
|
|
138
|
+
async function configuredPaths(projectRoot) {
|
|
139
|
+
const resolved = await resolveNativeProject({
|
|
140
|
+
startPath: projectRoot,
|
|
141
|
+
allowMissingConfig: false,
|
|
142
|
+
});
|
|
143
|
+
return { config: resolved.config, paths: resolved.paths };
|
|
144
|
+
}
|
|
145
|
+
async function doctorPaths(projectRoot) {
|
|
146
|
+
const config = await readProjectConfig(projectRoot);
|
|
147
|
+
return nativeProjectPaths(projectRoot, config?.native.artifact_root ?? 'docs');
|
|
148
|
+
}
|
|
149
|
+
function success(command, data, text) {
|
|
150
|
+
return { command, exitCode: 0, data, text: text ?? JSON.stringify(data, null, 2) + '\n' };
|
|
151
|
+
}
|
|
152
|
+
async function readBoundedEvidenceFile(filePath, maxBytes) {
|
|
153
|
+
try {
|
|
154
|
+
const { bytes } = await readFileRaceSafe(filePath, maxBytes, {
|
|
155
|
+
label: 'Acceptance evidence entries file',
|
|
156
|
+
});
|
|
157
|
+
return bytes.toString('utf8');
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error instanceof RaceSafeReadError) {
|
|
161
|
+
if (error.reason === 'not-regular-file') {
|
|
162
|
+
throw new Error(`Acceptance evidence entries path is not a regular file: ${filePath}`, {
|
|
163
|
+
cause: error,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (error.reason === 'too-large') {
|
|
167
|
+
throw new Error(`Acceptance evidence entries file exceeds ${maxBytes} bytes: ${filePath}`, {
|
|
168
|
+
cause: error,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
throw new Error(`Acceptance evidence entries file changed while reading: ${filePath}`, {
|
|
172
|
+
cause: error,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async function readBoundedEvidenceStdin(maxBytes) {
|
|
179
|
+
const chunks = [];
|
|
180
|
+
let total = 0;
|
|
181
|
+
for await (const chunk of process.stdin) {
|
|
182
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk));
|
|
183
|
+
total += buffer.byteLength;
|
|
184
|
+
if (total > maxBytes) {
|
|
185
|
+
throw new Error(`Acceptance evidence entries on stdin exceed ${maxBytes} bytes`);
|
|
186
|
+
}
|
|
187
|
+
chunks.push(buffer);
|
|
188
|
+
}
|
|
189
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
190
|
+
}
|
|
191
|
+
async function readEvidenceJson(filePath, label) {
|
|
192
|
+
const raw = await readBoundedEvidenceFile(path.resolve(filePath), MAX_NATIVE_IMPLEMENTATION_EVIDENCE_DOCUMENT_BYTES);
|
|
193
|
+
try {
|
|
194
|
+
return JSON.parse(raw);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
throw new Error(`${label} must be valid JSON: ${error.message}`, {
|
|
198
|
+
cause: error,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function privateKeyFromEnvironment(name) {
|
|
203
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(name)) {
|
|
204
|
+
throw new NativeUsageError('--private-key-env must be an environment variable name');
|
|
205
|
+
}
|
|
206
|
+
const value = process.env[name];
|
|
207
|
+
if (!value)
|
|
208
|
+
throw new NativeUsageError(`Private key environment variable ${name} is not set`);
|
|
209
|
+
delete process.env[name];
|
|
210
|
+
return value;
|
|
211
|
+
}
|
|
212
|
+
function pathIsInside(parent, target) {
|
|
213
|
+
const relative = path.relative(parent, target);
|
|
214
|
+
return (relative === '' ||
|
|
215
|
+
(!path.isAbsolute(relative) && relative !== '..' && !relative.startsWith(`..${path.sep}`)));
|
|
216
|
+
}
|
|
217
|
+
async function assertPrivateKeyOutsideProject(projectRoot, file) {
|
|
218
|
+
const relative = path.relative(projectRoot, file);
|
|
219
|
+
if (relative === '' ||
|
|
220
|
+
(relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative))) {
|
|
221
|
+
throw new NativeUsageError('--private-key must resolve outside the Native project');
|
|
222
|
+
}
|
|
223
|
+
const physicalProjectRoot = await fs.realpath(projectRoot);
|
|
224
|
+
const parsed = path.parse(path.resolve(path.dirname(file)));
|
|
225
|
+
let cursor = parsed.root;
|
|
226
|
+
for (const segment of path
|
|
227
|
+
.relative(parsed.root, path.resolve(path.dirname(file)))
|
|
228
|
+
.split(path.sep)
|
|
229
|
+
.filter(Boolean)) {
|
|
230
|
+
cursor = path.join(cursor, segment);
|
|
231
|
+
let stat;
|
|
232
|
+
try {
|
|
233
|
+
stat = await fs.lstat(cursor);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
if (error.code === 'ENOENT')
|
|
237
|
+
continue;
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
if (!stat.isDirectory() || stat.isSymbolicLink()) {
|
|
241
|
+
throw new NativeUsageError('--private-key parent chain must not contain symlinks, junctions, or non-directories');
|
|
242
|
+
}
|
|
243
|
+
if (pathIsInside(physicalProjectRoot, await fs.realpath(cursor))) {
|
|
244
|
+
throw new NativeUsageError('--private-key parent resolves inside the Native project');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
async function writeExclusiveFile(file, content, mode) {
|
|
249
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
250
|
+
const handle = await fs.open(file, 'wx', mode);
|
|
251
|
+
try {
|
|
252
|
+
await handle.writeFile(content, 'utf8');
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
await handle.close();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async function writeExclusivePrivateKeyFile(projectRoot, file, content) {
|
|
259
|
+
if (!nativeReviewPrivateKeyFilePersistenceSupported()) {
|
|
260
|
+
throw new NativeUsageError('trust keygen cannot persist private keys on Windows because owner-only ACLs cannot be verified; generate the identity in an external secret store and provide signing keys through --private-key-env');
|
|
261
|
+
}
|
|
262
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
263
|
+
await assertPrivateKeyOutsideProject(projectRoot, file);
|
|
264
|
+
const handle = await fs.open(file, 'wx', 0o600);
|
|
265
|
+
let secure = false;
|
|
266
|
+
try {
|
|
267
|
+
await handle.writeFile(content, 'utf8');
|
|
268
|
+
await handle.chmod(0o600);
|
|
269
|
+
const stat = await handle.stat();
|
|
270
|
+
if ((stat.mode & 0o077) !== 0) {
|
|
271
|
+
throw new Error('Native review private key file permissions are not owner-only');
|
|
272
|
+
}
|
|
273
|
+
const [physicalProjectRoot, physicalFile, target] = await Promise.all([
|
|
274
|
+
fs.realpath(projectRoot),
|
|
275
|
+
fs.realpath(file),
|
|
276
|
+
fs.lstat(file),
|
|
277
|
+
]);
|
|
278
|
+
if (!target.isFile() ||
|
|
279
|
+
target.isSymbolicLink() ||
|
|
280
|
+
pathIsInside(physicalProjectRoot, physicalFile)) {
|
|
281
|
+
throw new Error('Native review private key resolved inside the project during write');
|
|
282
|
+
}
|
|
283
|
+
secure = true;
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
await handle.close();
|
|
287
|
+
if (!secure)
|
|
288
|
+
await fs.rm(file, { force: true });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
async function dispatch(rawArgs, explicitProjectRoot) {
|
|
292
|
+
if (rawArgs.length === 0 || rawArgs[0] === '--help' || rawArgs[0] === 'help') {
|
|
293
|
+
return { command: rawArgs[0] ?? null, exitCode: 0, data: { usage: USAGE }, text: USAGE };
|
|
294
|
+
}
|
|
295
|
+
const command = rawArgs.shift();
|
|
296
|
+
const projectRoot = await projectRootFrom(explicitProjectRoot);
|
|
297
|
+
if (command === 'hook-guard') {
|
|
298
|
+
const hookOutput = takeOption(rawArgs, '--hook-output');
|
|
299
|
+
if (hookOutput !== undefined && hookOutput !== 'copilot') {
|
|
300
|
+
throw new NativeUsageError('--hook-output must be copilot');
|
|
301
|
+
}
|
|
302
|
+
assertNoArguments(rawArgs);
|
|
303
|
+
const result = await inspectNativeHookGuard(projectRoot, await readNativeHookRequest());
|
|
304
|
+
if (hookOutput === 'copilot') {
|
|
305
|
+
return {
|
|
306
|
+
command,
|
|
307
|
+
exitCode: 0,
|
|
308
|
+
data: result,
|
|
309
|
+
text: result.allowed
|
|
310
|
+
? '{}\n'
|
|
311
|
+
: `${JSON.stringify({
|
|
312
|
+
permissionDecision: 'deny',
|
|
313
|
+
permissionDecisionReason: result.reason,
|
|
314
|
+
})}\n`,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
return result.allowed
|
|
318
|
+
? { command, exitCode: 0, data: result }
|
|
319
|
+
: {
|
|
320
|
+
command,
|
|
321
|
+
exitCode: 2,
|
|
322
|
+
data: result,
|
|
323
|
+
error: { code: 'blocked', message: result.reason },
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
if (command === 'init') {
|
|
327
|
+
const requestedRoot = takeOption(rawArgs, '--root');
|
|
328
|
+
const existing = await readProjectConfig(projectRoot);
|
|
329
|
+
const language = languageOption(rawArgs, existing?.native.language ?? 'en');
|
|
330
|
+
assertNoArguments(rawArgs);
|
|
331
|
+
if (existing?.native.pending_root_move) {
|
|
332
|
+
throw new Error(`Native root move ${existing.native.pending_root_move.id} is incomplete`);
|
|
333
|
+
}
|
|
334
|
+
const artifactRoot = normalizeArtifactRootRef(requestedRoot ?? existing?.native.artifact_root ?? 'docs');
|
|
335
|
+
if (existing && requestedRoot && existing.native.artifact_root !== artifactRoot) {
|
|
336
|
+
throw new Error(`Configured Native artifact root is ${existing.native.artifact_root}; refusing conflicting root ${artifactRoot}`);
|
|
337
|
+
}
|
|
338
|
+
const config = existing
|
|
339
|
+
? { ...existing, native: { ...existing.native, language } }
|
|
340
|
+
: defaultProjectConfig(artifactRoot, language);
|
|
341
|
+
const paths = await nativeProjectPaths(projectRoot, config.native.artifact_root);
|
|
342
|
+
await ensureNativeDirectories(paths);
|
|
343
|
+
await writeProjectConfig(projectRoot, config);
|
|
344
|
+
return success('init', {
|
|
345
|
+
projectRoot,
|
|
346
|
+
artifactRoot: config.native.artifact_root,
|
|
347
|
+
nativeRoot: paths.nativeRoot,
|
|
348
|
+
language,
|
|
349
|
+
}, `Initialized Comet Native at ${paths.nativeRoot}\n`);
|
|
350
|
+
}
|
|
351
|
+
if (command === 'root') {
|
|
352
|
+
const subcommand = requiredPositional(rawArgs, 'root subcommand');
|
|
353
|
+
if (subcommand === 'show') {
|
|
354
|
+
assertNoArguments(rawArgs);
|
|
355
|
+
const config = await readProjectConfig(projectRoot);
|
|
356
|
+
if (!config)
|
|
357
|
+
throw new Error('.comet/config.yaml was not found');
|
|
358
|
+
const paths = await nativeProjectPaths(projectRoot, config.native.artifact_root);
|
|
359
|
+
return success('root show', {
|
|
360
|
+
projectRoot,
|
|
361
|
+
artifactRoot: config.native.artifact_root,
|
|
362
|
+
language: config.native.language,
|
|
363
|
+
nativeRoot: paths.nativeRoot,
|
|
364
|
+
pendingRootMove: config.native.pending_root_move ?? null,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
if (subcommand === 'move') {
|
|
368
|
+
const target = requiredPositional(rawArgs, 'artifact root');
|
|
369
|
+
assertNoArguments(rawArgs);
|
|
370
|
+
const result = await moveNativeRoot({ projectRoot, toArtifactRoot: target });
|
|
371
|
+
return success('root move', result, `Moved Comet Native to ${result.toNativeRoot}\n`);
|
|
372
|
+
}
|
|
373
|
+
throw new NativeUsageError(`Unknown root command: ${subcommand}`);
|
|
374
|
+
}
|
|
375
|
+
if (command === 'new') {
|
|
376
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
377
|
+
const creationAuthorizationPath = takeOption(rawArgs, '--creation-authorization');
|
|
378
|
+
if (!creationAuthorizationPath) {
|
|
379
|
+
throw new NativeUsageError('--creation-authorization is required');
|
|
380
|
+
}
|
|
381
|
+
let config = await readProjectConfig(projectRoot);
|
|
382
|
+
const language = languageOption(rawArgs, config?.native.language ?? 'en');
|
|
383
|
+
assertNoArguments(rawArgs);
|
|
384
|
+
const shouldWriteConfig = config === null;
|
|
385
|
+
if (!config) {
|
|
386
|
+
config = defaultProjectConfig('docs', language);
|
|
387
|
+
}
|
|
388
|
+
if (config.native.pending_root_move) {
|
|
389
|
+
throw new Error(`Native root move ${config.native.pending_root_move.id} is incomplete`);
|
|
390
|
+
}
|
|
391
|
+
if (shouldWriteConfig)
|
|
392
|
+
await writeProjectConfig(projectRoot, config);
|
|
393
|
+
const paths = await nativeProjectPaths(projectRoot, config.native.artifact_root);
|
|
394
|
+
await ensureNativeDirectories(paths);
|
|
395
|
+
const state = await createNativeChange({
|
|
396
|
+
paths,
|
|
397
|
+
name,
|
|
398
|
+
language,
|
|
399
|
+
verificationProtocol: 'signed-v2',
|
|
400
|
+
creationAuthorization: parseNativeCreationAuthorization(await readEvidenceJson(creationAuthorizationPath, 'Native creation authorization')),
|
|
401
|
+
});
|
|
402
|
+
await selectNativeChange(paths, state.name);
|
|
403
|
+
const status = await inspectNativeStatus(paths, state.name, {
|
|
404
|
+
clarificationMode: config.native.clarification_mode,
|
|
405
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
406
|
+
});
|
|
407
|
+
return success('new', { ...state, continuation: status.continuation }, `Created Native change ${state.name}\n`);
|
|
408
|
+
}
|
|
409
|
+
if (command === 'spec') {
|
|
410
|
+
const subcommand = requiredPositional(rawArgs, 'spec subcommand');
|
|
411
|
+
if (subcommand === 'remove') {
|
|
412
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
413
|
+
const capability = requiredPositional(rawArgs, 'capability');
|
|
414
|
+
assertNoArguments(rawArgs);
|
|
415
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
416
|
+
const state = await markNativeSpecRemoval(paths, name, capability);
|
|
417
|
+
const status = await inspectNativeStatus(paths, state.name, {
|
|
418
|
+
clarificationMode: config.native.clarification_mode,
|
|
419
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
420
|
+
});
|
|
421
|
+
return success('spec remove', { ...state, continuation: status.continuation }, `Marked Native capability ${capability} for removal in ${name}\n`);
|
|
422
|
+
}
|
|
423
|
+
if (subcommand === 'rebase') {
|
|
424
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
425
|
+
const summary = takeOption(rawArgs, '--summary');
|
|
426
|
+
if (!summary)
|
|
427
|
+
throw new NativeUsageError('--summary is required');
|
|
428
|
+
assertNoArguments(rawArgs);
|
|
429
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
430
|
+
const state = await rebaseNativeSpecChanges({ paths, name, summary });
|
|
431
|
+
const status = await inspectNativeStatus(paths, state.name, {
|
|
432
|
+
clarificationMode: config.native.clarification_mode,
|
|
433
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
434
|
+
});
|
|
435
|
+
return success('spec rebase', { ...state, continuation: status.continuation }, `Rebased Native specs for ${name}\n`);
|
|
436
|
+
}
|
|
437
|
+
throw new NativeUsageError(`Unknown spec command: ${subcommand}`);
|
|
438
|
+
}
|
|
439
|
+
if (command === 'list') {
|
|
440
|
+
const cursor = takeOption(rawArgs, '--cursor');
|
|
441
|
+
assertNoArguments(rawArgs);
|
|
442
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
443
|
+
const page = await listNativeStatusPage(paths, {
|
|
444
|
+
...(cursor ? { cursor } : {}),
|
|
445
|
+
clarificationMode: config.native.clarification_mode,
|
|
446
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
447
|
+
});
|
|
448
|
+
return success('list', page);
|
|
449
|
+
}
|
|
450
|
+
if (command === 'show') {
|
|
451
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
452
|
+
assertNoArguments(rawArgs);
|
|
453
|
+
const { paths } = await configuredPaths(projectRoot);
|
|
454
|
+
const inspection = await inspectNativeChange(paths, name);
|
|
455
|
+
if (inspection.status === 'migration-required') {
|
|
456
|
+
return success('show', {
|
|
457
|
+
name,
|
|
458
|
+
schema: inspection.schema,
|
|
459
|
+
minimumRuntimeVersion: inspection.minimumRuntimeVersion,
|
|
460
|
+
migrationRequired: true,
|
|
461
|
+
message: inspection.message,
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
if (inspection.status !== 'current' || !inspection.state) {
|
|
465
|
+
throw new NativeRuntimeCompatibilityError(inspection.schema, inspection.minimumRuntimeVersion);
|
|
466
|
+
}
|
|
467
|
+
const state = inspection.state;
|
|
468
|
+
const changeDir = nativeChangeDir(paths, name);
|
|
469
|
+
const proposedSpecs = await readNativeProposedSpecs(paths, name);
|
|
470
|
+
const brief = await readNativeBoundedTextFile({
|
|
471
|
+
root: changeDir,
|
|
472
|
+
ref: state.brief,
|
|
473
|
+
maxBytes: NATIVE_CONTRACT_FILE_LIMITS.maxFileBytes,
|
|
474
|
+
});
|
|
475
|
+
const payload = {
|
|
476
|
+
state,
|
|
477
|
+
brief: brief.text,
|
|
478
|
+
proposedSpecs,
|
|
479
|
+
};
|
|
480
|
+
if (Buffer.byteLength(JSON.stringify(payload), 'utf8') > NATIVE_SHOW_MAX_SERIALIZED_BYTES) {
|
|
481
|
+
throw new Error('Native show output exceeds its serialized byte budget');
|
|
482
|
+
}
|
|
483
|
+
return success('show', payload);
|
|
484
|
+
}
|
|
485
|
+
if (command === 'status') {
|
|
486
|
+
const details = takeFlag(rawArgs, '--details');
|
|
487
|
+
const cursor = takeOption(rawArgs, '--cursor');
|
|
488
|
+
const acceptanceCursor = takeOption(rawArgs, '--acceptance-cursor');
|
|
489
|
+
const name = rawArgs[0]?.startsWith('--') ? undefined : rawArgs.shift();
|
|
490
|
+
if (details && !name)
|
|
491
|
+
throw new NativeUsageError('status --details requires a change name');
|
|
492
|
+
if (cursor && name)
|
|
493
|
+
throw new NativeUsageError('--cursor is only valid for status lists');
|
|
494
|
+
if (cursor && details)
|
|
495
|
+
throw new NativeUsageError('--cursor cannot be combined with --details');
|
|
496
|
+
if (acceptanceCursor && !details) {
|
|
497
|
+
throw new NativeUsageError('--acceptance-cursor requires status --details');
|
|
498
|
+
}
|
|
499
|
+
if (acceptanceCursor && !name) {
|
|
500
|
+
throw new NativeUsageError('--acceptance-cursor requires a change name');
|
|
501
|
+
}
|
|
502
|
+
assertNoArguments(rawArgs);
|
|
503
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
504
|
+
const data = name
|
|
505
|
+
? await inspectNativeStatus(paths, name, {
|
|
506
|
+
details,
|
|
507
|
+
...(acceptanceCursor ? { acceptanceCursor } : {}),
|
|
508
|
+
clarificationMode: config.native.clarification_mode,
|
|
509
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
510
|
+
})
|
|
511
|
+
: await listNativeStatusPage(paths, {
|
|
512
|
+
...(cursor ? { cursor } : {}),
|
|
513
|
+
clarificationMode: config.native.clarification_mode,
|
|
514
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
515
|
+
});
|
|
516
|
+
return success('status', data);
|
|
517
|
+
}
|
|
518
|
+
if (command === 'select') {
|
|
519
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
520
|
+
assertNoArguments(rawArgs);
|
|
521
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
522
|
+
await selectNativeChange(paths, name);
|
|
523
|
+
const status = await inspectNativeStatus(paths, name, {
|
|
524
|
+
clarificationMode: config.native.clarification_mode,
|
|
525
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
526
|
+
});
|
|
527
|
+
return success('select', { selected: name, continuation: status.continuation }, `Selected Native change ${name}\n`);
|
|
528
|
+
}
|
|
529
|
+
if (command === 'checkpoint') {
|
|
530
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
531
|
+
const summary = takeOption(rawArgs, '--summary');
|
|
532
|
+
if (!summary)
|
|
533
|
+
throw new NativeUsageError('--summary is required');
|
|
534
|
+
const nextAction = takeOption(rawArgs, '--next-action');
|
|
535
|
+
if (!nextAction)
|
|
536
|
+
throw new NativeUsageError('--next-action is required');
|
|
537
|
+
const artifacts = takeMany(rawArgs, '--artifact');
|
|
538
|
+
const expectedRevision = revisionOption(rawArgs);
|
|
539
|
+
assertNoArguments(rawArgs);
|
|
540
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
541
|
+
const result = await checkpointNativeChange({
|
|
542
|
+
paths,
|
|
543
|
+
name,
|
|
544
|
+
summary,
|
|
545
|
+
nextAction,
|
|
546
|
+
artifacts,
|
|
547
|
+
expectedRevision,
|
|
548
|
+
});
|
|
549
|
+
const status = await inspectNativeStatus(paths, name, {
|
|
550
|
+
clarificationMode: config.native.clarification_mode,
|
|
551
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
552
|
+
});
|
|
553
|
+
const manifestRef = path
|
|
554
|
+
.relative(paths.projectRoot, path.join(nativeChangeDir(paths, name), ...result.checkpoint.manifestRef.split('/')))
|
|
555
|
+
.replaceAll('\\', '/');
|
|
556
|
+
return success('checkpoint', {
|
|
557
|
+
...result,
|
|
558
|
+
checkpoint: { ...result.checkpoint, manifestRef },
|
|
559
|
+
continuation: status.continuation,
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
if (command === 'check') {
|
|
563
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
564
|
+
assertNoArguments(rawArgs);
|
|
565
|
+
const { paths } = await configuredPaths(projectRoot);
|
|
566
|
+
const checked = await checkNativeChange({ paths, name });
|
|
567
|
+
const data = {
|
|
568
|
+
ref: checked.ref,
|
|
569
|
+
hash: checked.receipt.receiptHash,
|
|
570
|
+
status: checked.receipt.status,
|
|
571
|
+
checker: checked.receipt.checker,
|
|
572
|
+
counts: checked.receipt.counts,
|
|
573
|
+
issues: checked.receipt.issues,
|
|
574
|
+
issuesTruncated: checked.receipt.issuesTruncated,
|
|
575
|
+
stale: checked.receipt.stale,
|
|
576
|
+
staleReasons: checked.receipt.staleReasons,
|
|
577
|
+
startedAt: checked.receipt.startedAt,
|
|
578
|
+
endedAt: checked.receipt.endedAt,
|
|
579
|
+
sourceRevision: checked.receipt.sourceRevision,
|
|
580
|
+
};
|
|
581
|
+
const passed = checked.receipt.status === 'passed' && !checked.receipt.stale;
|
|
582
|
+
return {
|
|
583
|
+
command: 'check',
|
|
584
|
+
exitCode: passed ? 0 : 1,
|
|
585
|
+
data,
|
|
586
|
+
text: `Native check ${passed ? 'passed' : 'failed'}: ${checked.ref}\n`,
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
if (command === 'evidence') {
|
|
590
|
+
const subcommand = requiredPositional(rawArgs, 'evidence subcommand');
|
|
591
|
+
if (subcommand === 'format') {
|
|
592
|
+
const entriesPath = takeOption(rawArgs, '--entries');
|
|
593
|
+
assertNoArguments(rawArgs);
|
|
594
|
+
let raw;
|
|
595
|
+
if (entriesPath) {
|
|
596
|
+
raw = await readBoundedEvidenceFile(path.resolve(entriesPath), MAX_NATIVE_IMPLEMENTATION_EVIDENCE_DOCUMENT_BYTES);
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
if (process.stdin.isTTY) {
|
|
600
|
+
throw new NativeUsageError('evidence format requires acceptance evidence entries JSON on stdin, or --entries <path>');
|
|
601
|
+
}
|
|
602
|
+
raw = await readBoundedEvidenceStdin(MAX_NATIVE_IMPLEMENTATION_EVIDENCE_DOCUMENT_BYTES);
|
|
603
|
+
}
|
|
604
|
+
let entries;
|
|
605
|
+
try {
|
|
606
|
+
entries = JSON.parse(raw);
|
|
607
|
+
}
|
|
608
|
+
catch (error) {
|
|
609
|
+
throw new Error(`Acceptance evidence entries must be valid JSON: ${error.message}`, { cause: error });
|
|
610
|
+
}
|
|
611
|
+
if (!Array.isArray(entries)) {
|
|
612
|
+
throw new Error('Acceptance evidence entries must be a JSON array');
|
|
613
|
+
}
|
|
614
|
+
const block = serializeNativeVerificationMachineBlock(entries);
|
|
615
|
+
return success('evidence format', { block }, `${block}\n`);
|
|
616
|
+
}
|
|
617
|
+
throw new NativeUsageError(`Unknown evidence command: ${subcommand}`);
|
|
618
|
+
}
|
|
619
|
+
if (command === 'trust') {
|
|
620
|
+
const subcommand = requiredPositional(rawArgs, 'trust subcommand');
|
|
621
|
+
if (subcommand === 'identity') {
|
|
622
|
+
const identityPathValue = takeOption(rawArgs, '--identity');
|
|
623
|
+
const privateKeyEnv = takeOption(rawArgs, '--private-key-env');
|
|
624
|
+
if (!identityPathValue || !privateKeyEnv) {
|
|
625
|
+
throw new NativeUsageError('trust identity requires --identity and --private-key-env');
|
|
626
|
+
}
|
|
627
|
+
assertNoArguments(rawArgs);
|
|
628
|
+
const identityPath = path.resolve(identityPathValue);
|
|
629
|
+
const identity = nativeReviewIdentityFromPrivateKey(privateKeyFromEnvironment(privateKeyEnv));
|
|
630
|
+
await writeExclusiveFile(identityPath, `${JSON.stringify(identity, null, 2)}\n`, 0o644);
|
|
631
|
+
return success('trust identity', { identityPath, keyId: identity.keyId, privateKeyPrinted: false }, `Native review identity ${identity.keyId} created from external private key material\n`);
|
|
632
|
+
}
|
|
633
|
+
if (subcommand === 'keygen') {
|
|
634
|
+
const identityPathValue = takeOption(rawArgs, '--identity');
|
|
635
|
+
const privateKeyPathValue = takeOption(rawArgs, '--private-key');
|
|
636
|
+
if (!identityPathValue || !privateKeyPathValue) {
|
|
637
|
+
throw new NativeUsageError('trust keygen requires --identity and --private-key');
|
|
638
|
+
}
|
|
639
|
+
assertNoArguments(rawArgs);
|
|
640
|
+
const identityPath = path.resolve(identityPathValue);
|
|
641
|
+
const privateKeyPath = path.resolve(privateKeyPathValue);
|
|
642
|
+
await assertPrivateKeyOutsideProject(projectRoot, privateKeyPath);
|
|
643
|
+
if (identityPath === privateKeyPath) {
|
|
644
|
+
throw new NativeUsageError('--identity and --private-key must be different files');
|
|
645
|
+
}
|
|
646
|
+
const keyPair = generateNativeReviewKeyPair();
|
|
647
|
+
await writeExclusivePrivateKeyFile(projectRoot, privateKeyPath, `${keyPair.privateKey}\n`);
|
|
648
|
+
await writeExclusiveFile(identityPath, `${JSON.stringify(keyPair.identity, null, 2)}\n`, 0o644);
|
|
649
|
+
return success('trust keygen', {
|
|
650
|
+
identityPath,
|
|
651
|
+
privateKeyPath,
|
|
652
|
+
keyId: keyPair.identity.keyId,
|
|
653
|
+
privateKeyPrinted: false,
|
|
654
|
+
}, `Native review identity ${keyPair.identity.keyId} created; private key written only to ${privateKeyPath}\n`);
|
|
655
|
+
}
|
|
656
|
+
if (subcommand === 'policy') {
|
|
657
|
+
const implementationIdentityPath = takeOption(rawArgs, '--implementation-identity');
|
|
658
|
+
const reviewerIdentityPaths = takeMany(rawArgs, '--reviewer-identity');
|
|
659
|
+
const waiverIdentityPaths = takeMany(rawArgs, '--waiver-identity');
|
|
660
|
+
const controllerPrivateKeyEnv = takeOption(rawArgs, '--controller-private-key-env');
|
|
661
|
+
if (!implementationIdentityPath ||
|
|
662
|
+
reviewerIdentityPaths.length === 0 ||
|
|
663
|
+
waiverIdentityPaths.length === 0 ||
|
|
664
|
+
!controllerPrivateKeyEnv) {
|
|
665
|
+
throw new NativeUsageError('trust policy requires --implementation-identity, --reviewer-identity, --waiver-identity, and --controller-private-key-env');
|
|
666
|
+
}
|
|
667
|
+
assertNoArguments(rawArgs);
|
|
668
|
+
const { paths } = await configuredPaths(projectRoot);
|
|
669
|
+
const implementationIdentity = parseNativeReviewIdentity(await readEvidenceJson(implementationIdentityPath, 'Implementation identity'));
|
|
670
|
+
const trustedReviewers = await Promise.all(reviewerIdentityPaths.map(async (file) => parseNativeReviewIdentity(await readEvidenceJson(file, 'Reviewer identity'))));
|
|
671
|
+
const trustedWaiverSigners = await Promise.all(waiverIdentityPaths.map(async (file) => parseNativeReviewIdentity(await readEvidenceJson(file, 'Waiver signer identity'))));
|
|
672
|
+
const controllerTrust = await readNativeControllerTrustProject(projectRoot);
|
|
673
|
+
if (!controllerTrust) {
|
|
674
|
+
throw new Error('Native project has no controller-owned trust root');
|
|
675
|
+
}
|
|
676
|
+
const policy = buildNativeReviewTrustPolicy({
|
|
677
|
+
controllerIdentity: controllerTrust.controllerIdentity,
|
|
678
|
+
controllerPrivateKey: privateKeyFromEnvironment(controllerPrivateKeyEnv),
|
|
679
|
+
implementationKeyId: implementationIdentity.keyId,
|
|
680
|
+
trustedReviewers,
|
|
681
|
+
trustedWaiverSigners,
|
|
682
|
+
});
|
|
683
|
+
const policyPath = path.join(projectRoot, ...NATIVE_REVIEW_TRUST_POLICY_REF.split('/'));
|
|
684
|
+
await withNativeMutationLock(paths, 'create review trust policy', async () => {
|
|
685
|
+
await resolveContainedNativePath(projectRoot, policyPath);
|
|
686
|
+
const activeEntries = await fs.readdir(paths.changesDir).catch((error) => {
|
|
687
|
+
if (error.code === 'ENOENT')
|
|
688
|
+
return [];
|
|
689
|
+
throw error;
|
|
690
|
+
});
|
|
691
|
+
if (activeEntries.length > 0) {
|
|
692
|
+
throw new Error('Native review trust policy must be created before any active change');
|
|
693
|
+
}
|
|
694
|
+
await atomicWriteJson(policyPath, policy, {
|
|
695
|
+
containedRoot: projectRoot,
|
|
696
|
+
exclusive: true,
|
|
697
|
+
});
|
|
698
|
+
});
|
|
699
|
+
return success('trust policy', { ref: NATIVE_REVIEW_TRUST_POLICY_REF, policy }, `Native review trust policy created: ${NATIVE_REVIEW_TRUST_POLICY_REF}\n`);
|
|
700
|
+
}
|
|
701
|
+
if (subcommand === 'authorize') {
|
|
702
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
703
|
+
const controllerPrivateKeyEnv = takeOption(rawArgs, '--controller-private-key-env');
|
|
704
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
705
|
+
if (!controllerPrivateKeyEnv || !outputPathValue) {
|
|
706
|
+
throw new NativeUsageError('trust authorize requires --controller-private-key-env and --output');
|
|
707
|
+
}
|
|
708
|
+
assertNoArguments(rawArgs);
|
|
709
|
+
const { paths } = await configuredPaths(projectRoot);
|
|
710
|
+
const [controllerTrust, policy, projectRootHash] = await Promise.all([
|
|
711
|
+
readNativeControllerTrustProject(projectRoot),
|
|
712
|
+
readNativeReviewTrustPolicy(paths),
|
|
713
|
+
nativeControllerProjectRootHash(projectRoot),
|
|
714
|
+
]);
|
|
715
|
+
if (!controllerTrust) {
|
|
716
|
+
throw new Error('Native project has no controller-owned trust root');
|
|
717
|
+
}
|
|
718
|
+
const authorization = buildNativeCreationAuthorization({
|
|
719
|
+
controllerIdentity: controllerTrust.controllerIdentity,
|
|
720
|
+
controllerPrivateKey: privateKeyFromEnvironment(controllerPrivateKeyEnv),
|
|
721
|
+
projectRootHash,
|
|
722
|
+
policyHash: policy.policyHash,
|
|
723
|
+
change: name,
|
|
724
|
+
});
|
|
725
|
+
const outputPath = path.resolve(outputPathValue);
|
|
726
|
+
await writeExclusiveFile(outputPath, `${JSON.stringify(authorization, null, 2)}\n`, 0o644);
|
|
727
|
+
return success('trust authorize', { outputPath, authorization }, `Native creation authorization written to ${outputPath}\n`);
|
|
728
|
+
}
|
|
729
|
+
throw new NativeUsageError(`Unknown trust command: ${subcommand}`);
|
|
730
|
+
}
|
|
731
|
+
if (command === 'receipt') {
|
|
732
|
+
const subcommand = requiredPositional(rawArgs, 'receipt subcommand');
|
|
733
|
+
if (subcommand === 'implement' && rawArgs[0] === 'sign') {
|
|
734
|
+
rawArgs.shift();
|
|
735
|
+
const preparationPath = takeOption(rawArgs, '--preparation');
|
|
736
|
+
const identityPath = takeOption(rawArgs, '--identity');
|
|
737
|
+
const privateKeyEnv = takeOption(rawArgs, '--private-key-env');
|
|
738
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
739
|
+
if (!preparationPath || !identityPath || !privateKeyEnv || !outputPathValue) {
|
|
740
|
+
throw new NativeUsageError('receipt implement sign requires --preparation, --identity, --private-key-env, and --output');
|
|
741
|
+
}
|
|
742
|
+
assertNoArguments(rawArgs);
|
|
743
|
+
const attestation = signNativeImplementationPreparation({
|
|
744
|
+
preparation: await readEvidenceJson(preparationPath, 'Native implementation preparation'),
|
|
745
|
+
identity: parseNativeReviewIdentity(await readEvidenceJson(identityPath, 'Implementation identity')),
|
|
746
|
+
privateKey: privateKeyFromEnvironment(privateKeyEnv),
|
|
747
|
+
});
|
|
748
|
+
const outputPath = path.resolve(outputPathValue);
|
|
749
|
+
await atomicWriteJson(outputPath, attestation);
|
|
750
|
+
return success('receipt implement sign', { outputPath, attestation }, `Native implementation attestation written to ${outputPath}\n`);
|
|
751
|
+
}
|
|
752
|
+
if (subcommand === 'review' && rawArgs[0] === 'sign') {
|
|
753
|
+
rawArgs.shift();
|
|
754
|
+
const approvalPath = takeOption(rawArgs, '--approval');
|
|
755
|
+
const identityPath = takeOption(rawArgs, '--identity');
|
|
756
|
+
const privateKeyEnv = takeOption(rawArgs, '--private-key-env');
|
|
757
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
758
|
+
if (!approvalPath || !identityPath || !privateKeyEnv || !outputPathValue) {
|
|
759
|
+
throw new NativeUsageError('receipt review sign requires --approval, --identity, --private-key-env, and --output');
|
|
760
|
+
}
|
|
761
|
+
assertNoArguments(rawArgs);
|
|
762
|
+
const attestation = signNativeIndependentReviewApproval({
|
|
763
|
+
approval: await readEvidenceJson(approvalPath, 'Native review approval'),
|
|
764
|
+
identity: parseNativeReviewIdentity(await readEvidenceJson(identityPath, 'Reviewer identity')),
|
|
765
|
+
privateKey: privateKeyFromEnvironment(privateKeyEnv),
|
|
766
|
+
});
|
|
767
|
+
const outputPath = path.resolve(outputPathValue);
|
|
768
|
+
await atomicWriteJson(outputPath, attestation);
|
|
769
|
+
return success('receipt review sign', { outputPath, attestation }, `Native review attestation written to ${outputPath}\n`);
|
|
770
|
+
}
|
|
771
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
772
|
+
const { paths } = await configuredPaths(projectRoot);
|
|
773
|
+
if (subcommand === 'implement') {
|
|
774
|
+
const implementationPhase = requiredPositional(rawArgs, 'implementation phase');
|
|
775
|
+
if (implementationPhase === 'prepare') {
|
|
776
|
+
const identityPath = takeOption(rawArgs, '--identity');
|
|
777
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
778
|
+
if (!identityPath || !outputPathValue) {
|
|
779
|
+
throw new NativeUsageError('receipt implement prepare requires --identity and --output');
|
|
780
|
+
}
|
|
781
|
+
assertNoArguments(rawArgs);
|
|
782
|
+
const preparation = await prepareNativeImplementationAttestation({
|
|
783
|
+
paths,
|
|
784
|
+
name,
|
|
785
|
+
implementationIdentity: parseNativeReviewIdentity(await readEvidenceJson(identityPath, 'Implementation identity')),
|
|
786
|
+
});
|
|
787
|
+
const outputPath = path.resolve(outputPathValue);
|
|
788
|
+
await atomicWriteJson(outputPath, preparation);
|
|
789
|
+
return success('receipt implement prepare', { outputPath, preparation }, `Native implementation preparation written to ${outputPath}\n`);
|
|
790
|
+
}
|
|
791
|
+
if (implementationPhase === 'finalize') {
|
|
792
|
+
const preparationPath = takeOption(rawArgs, '--preparation');
|
|
793
|
+
const attestationPath = takeOption(rawArgs, '--attestation');
|
|
794
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
795
|
+
if (!preparationPath || !attestationPath) {
|
|
796
|
+
throw new NativeUsageError('receipt implement finalize requires --preparation and --attestation');
|
|
797
|
+
}
|
|
798
|
+
assertNoArguments(rawArgs);
|
|
799
|
+
const issued = await finalizeNativeImplementationAttestation({
|
|
800
|
+
paths,
|
|
801
|
+
name,
|
|
802
|
+
preparation: parseNativeImplementationPreparation(await readEvidenceJson(preparationPath, 'Native implementation preparation')),
|
|
803
|
+
attestation: parseNativeReviewSignature(await readEvidenceJson(attestationPath, 'Native implementation attestation')),
|
|
804
|
+
confirmed,
|
|
805
|
+
});
|
|
806
|
+
return success('receipt implement finalize', issued, `Native implementation attestation: ${issued.ref}\n`);
|
|
807
|
+
}
|
|
808
|
+
throw new NativeUsageError(`Unknown receipt implementation phase: ${implementationPhase}`);
|
|
809
|
+
}
|
|
810
|
+
if (subcommand === 'manual') {
|
|
811
|
+
const acceptanceIds = takeMany(rawArgs, '--acceptance');
|
|
812
|
+
const responsible = takeOption(rawArgs, '--responsible');
|
|
813
|
+
const steps = takeMany(rawArgs, '--step');
|
|
814
|
+
const observations = takeMany(rawArgs, '--observation');
|
|
815
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
816
|
+
if (!responsible)
|
|
817
|
+
throw new NativeUsageError('--responsible is required');
|
|
818
|
+
assertNoArguments(rawArgs);
|
|
819
|
+
const issued = await issueNativeManualEvidenceReceipt({
|
|
820
|
+
paths,
|
|
821
|
+
name,
|
|
822
|
+
acceptanceIds,
|
|
823
|
+
responsible,
|
|
824
|
+
steps,
|
|
825
|
+
observations,
|
|
826
|
+
confirmed,
|
|
827
|
+
});
|
|
828
|
+
return success('receipt manual', issued, `Native manual receipt: ${issued.ref}\n`);
|
|
829
|
+
}
|
|
830
|
+
if (subcommand === 'automated') {
|
|
831
|
+
const separator = rawArgs.indexOf('--');
|
|
832
|
+
if (separator < 0 || separator === rawArgs.length - 1) {
|
|
833
|
+
throw new NativeUsageError('receipt automated requires -- <executable> [args...]');
|
|
834
|
+
}
|
|
835
|
+
const commandArgs = rawArgs.splice(separator + 1);
|
|
836
|
+
rawArgs.splice(separator, 1);
|
|
837
|
+
const acceptanceIds = takeMany(rawArgs, '--acceptance');
|
|
838
|
+
const timeoutText = takeOption(rawArgs, '--timeout-ms');
|
|
839
|
+
assertNoArguments(rawArgs);
|
|
840
|
+
const timeoutMs = timeoutText === undefined
|
|
841
|
+
? undefined
|
|
842
|
+
: /^[1-9]\d*$/u.test(timeoutText) &&
|
|
843
|
+
Number.isSafeInteger(Number(timeoutText)) &&
|
|
844
|
+
Number(timeoutText) <= MAX_NATIVE_AUTOMATED_COMMAND_TIMEOUT_MS
|
|
845
|
+
? Number(timeoutText)
|
|
846
|
+
: null;
|
|
847
|
+
if (timeoutMs === null) {
|
|
848
|
+
throw new NativeUsageError(`--timeout-ms must be an integer from 1 through ${MAX_NATIVE_AUTOMATED_COMMAND_TIMEOUT_MS}`);
|
|
849
|
+
}
|
|
850
|
+
const issued = await issueNativeAutomatedCheckReceipt({
|
|
851
|
+
paths,
|
|
852
|
+
name,
|
|
853
|
+
acceptanceIds,
|
|
854
|
+
command: commandArgs[0],
|
|
855
|
+
args: commandArgs.slice(1),
|
|
856
|
+
...(timeoutMs === undefined ? {} : { timeoutMs }),
|
|
857
|
+
});
|
|
858
|
+
return {
|
|
859
|
+
command: 'receipt automated',
|
|
860
|
+
exitCode: issued.receipt.status === 'passed' ? 0 : 1,
|
|
861
|
+
data: issued,
|
|
862
|
+
text: `Native automated receipt ${issued.receipt.status}: ${issued.ref}\n`,
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
if (subcommand === 'review') {
|
|
866
|
+
const reviewPhase = requiredPositional(rawArgs, 'review phase');
|
|
867
|
+
if (reviewPhase === 'prepare') {
|
|
868
|
+
const implementationReceiptRef = takeOption(rawArgs, '--implementation-receipt');
|
|
869
|
+
const reportRef = takeOption(rawArgs, '--report');
|
|
870
|
+
const requiredReceiptRefs = takeMany(rawArgs, '--required-receipt');
|
|
871
|
+
const identityPath = takeOption(rawArgs, '--identity');
|
|
872
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
873
|
+
const checkedEvidence = {
|
|
874
|
+
unifiedIo: takeOption(rawArgs, '--unified-io-receipt') ?? null,
|
|
875
|
+
adversarialPaths: takeOption(rawArgs, '--adversarial-paths-receipt') ?? null,
|
|
876
|
+
generatedAssets: takeOption(rawArgs, '--generated-assets-receipt') ?? null,
|
|
877
|
+
lifecycleEval: takeOption(rawArgs, '--lifecycle-eval-receipt') ?? null,
|
|
878
|
+
};
|
|
879
|
+
if (!implementationReceiptRef ||
|
|
880
|
+
!reportRef ||
|
|
881
|
+
requiredReceiptRefs.length === 0 ||
|
|
882
|
+
!identityPath ||
|
|
883
|
+
!outputPathValue) {
|
|
884
|
+
throw new NativeUsageError('receipt review prepare requires --implementation-receipt, --report, at least one --required-receipt, --identity, and --output');
|
|
885
|
+
}
|
|
886
|
+
assertNoArguments(rawArgs);
|
|
887
|
+
const preparation = await prepareNativeIndependentReview({
|
|
888
|
+
paths,
|
|
889
|
+
name,
|
|
890
|
+
implementationReceiptRef,
|
|
891
|
+
reportRef,
|
|
892
|
+
requiredReceiptRefs,
|
|
893
|
+
reviewerIdentity: parseNativeReviewIdentity(await readEvidenceJson(identityPath, 'Reviewer identity')),
|
|
894
|
+
checkedEvidence,
|
|
895
|
+
});
|
|
896
|
+
const outputPath = path.resolve(outputPathValue);
|
|
897
|
+
await atomicWriteJson(outputPath, preparation);
|
|
898
|
+
return success('receipt review prepare', { outputPath, preparation }, `Native review preparation written to ${outputPath}\n`);
|
|
899
|
+
}
|
|
900
|
+
if (reviewPhase === 'approve') {
|
|
901
|
+
const preparationPath = takeOption(rawArgs, '--preparation');
|
|
902
|
+
const outputPathValue = takeOption(rawArgs, '--output');
|
|
903
|
+
const manualAttestationRefs = takeMany(rawArgs, '--attest-manual');
|
|
904
|
+
const findingsPath = takeOption(rawArgs, '--findings');
|
|
905
|
+
const acceptanceApplicability = takeFlag(rawArgs, '--checked-acceptance-applicability');
|
|
906
|
+
if (!preparationPath || !outputPathValue) {
|
|
907
|
+
throw new NativeUsageError('receipt review approve requires --preparation and --output');
|
|
908
|
+
}
|
|
909
|
+
assertNoArguments(rawArgs);
|
|
910
|
+
const rawFindings = findingsPath
|
|
911
|
+
? await readEvidenceJson(findingsPath, 'Independent review findings')
|
|
912
|
+
: [];
|
|
913
|
+
if (!Array.isArray(rawFindings)) {
|
|
914
|
+
throw new Error('Independent review findings must be a JSON array');
|
|
915
|
+
}
|
|
916
|
+
const preparation = (await readEvidenceJson(preparationPath, 'Native review preparation'));
|
|
917
|
+
const approval = await approveNativeIndependentReviewPreparation({
|
|
918
|
+
paths,
|
|
919
|
+
name,
|
|
920
|
+
preparation,
|
|
921
|
+
acceptanceApplicability,
|
|
922
|
+
manualAttestationRefs,
|
|
923
|
+
findings: rawFindings,
|
|
924
|
+
});
|
|
925
|
+
const outputPath = path.resolve(outputPathValue);
|
|
926
|
+
await atomicWriteJson(outputPath, approval);
|
|
927
|
+
return success('receipt review approve', { outputPath, approval }, `Native review approval written to ${outputPath}\n`);
|
|
928
|
+
}
|
|
929
|
+
if (reviewPhase === 'finalize') {
|
|
930
|
+
const preparationPath = takeOption(rawArgs, '--preparation');
|
|
931
|
+
const approvalPath = takeOption(rawArgs, '--approval');
|
|
932
|
+
const attestationPath = takeOption(rawArgs, '--attestation');
|
|
933
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
934
|
+
if (!preparationPath || !approvalPath || !attestationPath) {
|
|
935
|
+
throw new NativeUsageError('receipt review finalize requires --preparation, --approval, and --attestation');
|
|
936
|
+
}
|
|
937
|
+
assertNoArguments(rawArgs);
|
|
938
|
+
const issued = await finalizeNativeIndependentReviewReceipt({
|
|
939
|
+
paths,
|
|
940
|
+
name,
|
|
941
|
+
preparation: (await readEvidenceJson(preparationPath, 'Native review preparation')),
|
|
942
|
+
approval: parseNativeIndependentReviewApproval(await readEvidenceJson(approvalPath, 'Native review approval')),
|
|
943
|
+
attestation: parseNativeReviewSignature(await readEvidenceJson(attestationPath, 'Native review attestation')),
|
|
944
|
+
confirmed,
|
|
945
|
+
});
|
|
946
|
+
return {
|
|
947
|
+
command: 'receipt review finalize',
|
|
948
|
+
exitCode: issued.receipt.status === 'passed' ? 0 : 1,
|
|
949
|
+
data: issued,
|
|
950
|
+
text: `Native review receipt ${issued.receipt.status}: ${issued.ref}\n`,
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
throw new NativeUsageError(`Unknown receipt review phase: ${reviewPhase}`);
|
|
954
|
+
}
|
|
955
|
+
if (subcommand === 'waive') {
|
|
956
|
+
const acceptanceId = takeOption(rawArgs, '--acceptance');
|
|
957
|
+
const blockedReceiptRef = takeOption(rawArgs, '--blocked-receipt');
|
|
958
|
+
const reason = takeOption(rawArgs, '--reason');
|
|
959
|
+
const risk = takeOption(rawArgs, '--risk');
|
|
960
|
+
const alternativeReceiptRefs = takeMany(rawArgs, '--alternative-receipt');
|
|
961
|
+
const identityPath = takeOption(rawArgs, '--identity');
|
|
962
|
+
const privateKeyEnv = takeOption(rawArgs, '--private-key-env');
|
|
963
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
964
|
+
if (!acceptanceId ||
|
|
965
|
+
!blockedReceiptRef ||
|
|
966
|
+
!reason ||
|
|
967
|
+
!risk ||
|
|
968
|
+
!identityPath ||
|
|
969
|
+
!privateKeyEnv) {
|
|
970
|
+
throw new NativeUsageError('receipt waive requires --acceptance, --blocked-receipt, --reason, --risk, --identity, and --private-key-env');
|
|
971
|
+
}
|
|
972
|
+
assertNoArguments(rawArgs);
|
|
973
|
+
const issued = await issueNativeWaiverReceipt({
|
|
974
|
+
paths,
|
|
975
|
+
name,
|
|
976
|
+
acceptanceId,
|
|
977
|
+
blockedReceiptRef,
|
|
978
|
+
reason,
|
|
979
|
+
risk,
|
|
980
|
+
alternativeReceiptRefs,
|
|
981
|
+
signerIdentity: parseNativeReviewIdentity(await readEvidenceJson(identityPath, 'Waiver signer identity')),
|
|
982
|
+
privateKey: privateKeyFromEnvironment(privateKeyEnv),
|
|
983
|
+
confirmed,
|
|
984
|
+
});
|
|
985
|
+
return success('receipt waive', issued, `Native waiver receipt: ${issued.ref}\n`);
|
|
986
|
+
}
|
|
987
|
+
throw new NativeUsageError(`Unknown receipt command: ${subcommand}`);
|
|
988
|
+
}
|
|
989
|
+
if (command === 'next') {
|
|
990
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
991
|
+
const summary = takeOption(rawArgs, '--summary');
|
|
992
|
+
if (!summary)
|
|
993
|
+
throw new NativeUsageError('--summary is required');
|
|
994
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
995
|
+
const artifacts = takeMany(rawArgs, '--artifact');
|
|
996
|
+
const noCodeReason = takeOption(rawArgs, '--no-code-reason');
|
|
997
|
+
const allowPartialScopeHash = takeOption(rawArgs, '--allow-partial-scope');
|
|
998
|
+
const partialReason = takeOption(rawArgs, '--partial-reason');
|
|
999
|
+
const verificationResult = takeOption(rawArgs, '--result');
|
|
1000
|
+
const verificationReport = takeOption(rawArgs, '--report');
|
|
1001
|
+
const verificationReceipt = takeOption(rawArgs, '--receipt');
|
|
1002
|
+
const hasVerificationReceiptRefs = rawArgs.includes('--evidence-receipt');
|
|
1003
|
+
const hasVerificationWaiverRefs = rawArgs.includes('--waiver');
|
|
1004
|
+
const verificationReceiptRefs = takeMany(rawArgs, '--evidence-receipt');
|
|
1005
|
+
const verificationWaiverRefs = takeMany(rawArgs, '--waiver');
|
|
1006
|
+
const independentReviewReceiptRef = takeOption(rawArgs, '--independent-review-receipt');
|
|
1007
|
+
const repairFailureCategories = takeMany(rawArgs, '--failure-category');
|
|
1008
|
+
const repairFailedCheckIds = takeMany(rawArgs, '--failed-check');
|
|
1009
|
+
const repairOverrideSignature = takeOption(rawArgs, '--override-repair');
|
|
1010
|
+
const repairOverrideSummary = takeOption(rawArgs, '--override-summary');
|
|
1011
|
+
if (verificationResult !== undefined &&
|
|
1012
|
+
verificationResult !== 'pass' &&
|
|
1013
|
+
verificationResult !== 'fail') {
|
|
1014
|
+
throw new NativeUsageError('--result must be pass or fail');
|
|
1015
|
+
}
|
|
1016
|
+
if ((allowPartialScopeHash === undefined) !== (partialReason === undefined)) {
|
|
1017
|
+
throw new NativeUsageError('--allow-partial-scope and --partial-reason must be provided together');
|
|
1018
|
+
}
|
|
1019
|
+
if (allowPartialScopeHash && !/^[a-f0-9]{64}$/u.test(allowPartialScopeHash)) {
|
|
1020
|
+
throw new NativeUsageError('--allow-partial-scope must be a SHA-256 hash');
|
|
1021
|
+
}
|
|
1022
|
+
if (allowPartialScopeHash && !confirmed) {
|
|
1023
|
+
throw new NativeUsageError('--allow-partial-scope requires --confirmed');
|
|
1024
|
+
}
|
|
1025
|
+
if ((repairFailureCategories.length > 0 || repairFailedCheckIds.length > 0) &&
|
|
1026
|
+
verificationResult !== 'fail') {
|
|
1027
|
+
throw new NativeUsageError('--failure-category and --failed-check require --result fail');
|
|
1028
|
+
}
|
|
1029
|
+
if (verificationReceipt && verificationResult === undefined) {
|
|
1030
|
+
throw new NativeUsageError('--receipt requires --result');
|
|
1031
|
+
}
|
|
1032
|
+
if ((verificationReceiptRefs.length > 0 ||
|
|
1033
|
+
verificationWaiverRefs.length > 0 ||
|
|
1034
|
+
independentReviewReceiptRef) &&
|
|
1035
|
+
verificationResult === undefined) {
|
|
1036
|
+
throw new NativeUsageError('--evidence-receipt, --waiver, and --independent-review-receipt require --result');
|
|
1037
|
+
}
|
|
1038
|
+
if (independentReviewReceiptRef && verificationResult !== 'pass') {
|
|
1039
|
+
throw new NativeUsageError('--independent-review-receipt requires --result pass');
|
|
1040
|
+
}
|
|
1041
|
+
if ((repairOverrideSignature === undefined) !== (repairOverrideSummary === undefined)) {
|
|
1042
|
+
throw new NativeUsageError('--override-repair and --override-summary must be provided together');
|
|
1043
|
+
}
|
|
1044
|
+
if (repairOverrideSignature && !/^[a-f0-9]{64}$/u.test(repairOverrideSignature)) {
|
|
1045
|
+
throw new NativeUsageError('--override-repair must be a SHA-256 hash');
|
|
1046
|
+
}
|
|
1047
|
+
if (repairOverrideSignature && verificationResult !== undefined) {
|
|
1048
|
+
throw new NativeUsageError('--override-repair cannot be combined with --result');
|
|
1049
|
+
}
|
|
1050
|
+
assertNoArguments(rawArgs);
|
|
1051
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
1052
|
+
const evidence = {
|
|
1053
|
+
summary,
|
|
1054
|
+
...(confirmed ? { confirmed: true } : {}),
|
|
1055
|
+
...(artifacts.length > 0 ? { artifacts } : {}),
|
|
1056
|
+
...(noCodeReason ? { noCodeReason } : {}),
|
|
1057
|
+
...(allowPartialScopeHash ? { allowPartialScopeHash } : {}),
|
|
1058
|
+
...(partialReason ? { partialReason } : {}),
|
|
1059
|
+
...(verificationResult ? { verificationResult } : {}),
|
|
1060
|
+
...(verificationReport ? { verificationReport } : {}),
|
|
1061
|
+
...(verificationReceipt ? { verificationReceipt } : {}),
|
|
1062
|
+
...(verificationResult && hasVerificationReceiptRefs
|
|
1063
|
+
? {
|
|
1064
|
+
verificationReceiptRefs,
|
|
1065
|
+
}
|
|
1066
|
+
: {}),
|
|
1067
|
+
...(verificationResult && hasVerificationWaiverRefs ? { verificationWaiverRefs } : {}),
|
|
1068
|
+
...(independentReviewReceiptRef ? { independentReviewReceiptRef } : {}),
|
|
1069
|
+
...(repairFailureCategories.length > 0 ? { repairFailureCategories } : {}),
|
|
1070
|
+
...(repairFailedCheckIds.length > 0 ? { repairFailedCheckIds } : {}),
|
|
1071
|
+
...(repairOverrideSignature ? { repairOverrideSignature } : {}),
|
|
1072
|
+
...(repairOverrideSummary ? { repairOverrideSummary } : {}),
|
|
1073
|
+
};
|
|
1074
|
+
const result = await advanceNativeChange({
|
|
1075
|
+
paths,
|
|
1076
|
+
name,
|
|
1077
|
+
evidence,
|
|
1078
|
+
clarificationMode: config.native.clarification_mode,
|
|
1079
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
1080
|
+
});
|
|
1081
|
+
if (result.next === 'manual') {
|
|
1082
|
+
const repairBlocked = result.repair?.disposition === 'manual-stop' ||
|
|
1083
|
+
result.repair?.disposition === 'hard-stop' ||
|
|
1084
|
+
result.findings.some((finding) => [
|
|
1085
|
+
'repair-stagnation-stop',
|
|
1086
|
+
'repair-iteration-limit',
|
|
1087
|
+
'repair-override-exhausted',
|
|
1088
|
+
].includes(finding.code));
|
|
1089
|
+
return {
|
|
1090
|
+
command: 'next',
|
|
1091
|
+
exitCode: repairBlocked ? 75 : 65,
|
|
1092
|
+
data: result,
|
|
1093
|
+
error: {
|
|
1094
|
+
code: repairBlocked ? 'blocked' : 'invalid-data',
|
|
1095
|
+
message: result.findings[0]?.message ?? 'Native phase guard failed',
|
|
1096
|
+
},
|
|
1097
|
+
};
|
|
1098
|
+
}
|
|
1099
|
+
const status = await inspectNativeStatus(paths, name, {
|
|
1100
|
+
clarificationMode: config.native.clarification_mode,
|
|
1101
|
+
maxVerifyFailures: config.native.max_verify_failures,
|
|
1102
|
+
});
|
|
1103
|
+
return success('next', { ...result, continuation: status.continuation });
|
|
1104
|
+
}
|
|
1105
|
+
if (command === 'archive') {
|
|
1106
|
+
const name = requiredPositional(rawArgs, 'change name');
|
|
1107
|
+
const dryRun = takeFlag(rawArgs, '--dry-run');
|
|
1108
|
+
const expectedPreflightHash = takeOption(rawArgs, '--expect-preflight');
|
|
1109
|
+
const confirmed = takeFlag(rawArgs, '--confirmed');
|
|
1110
|
+
if (dryRun && expectedPreflightHash) {
|
|
1111
|
+
throw new NativeUsageError('--dry-run and --expect-preflight cannot be combined');
|
|
1112
|
+
}
|
|
1113
|
+
if (dryRun && confirmed) {
|
|
1114
|
+
throw new NativeUsageError('--confirmed is only valid with --expect-preflight');
|
|
1115
|
+
}
|
|
1116
|
+
if (!dryRun && !expectedPreflightHash) {
|
|
1117
|
+
throw new NativeUsageError('archive requires --dry-run or --expect-preflight <sha256>');
|
|
1118
|
+
}
|
|
1119
|
+
if (expectedPreflightHash && !/^[a-f0-9]{64}$/u.test(expectedPreflightHash)) {
|
|
1120
|
+
throw new NativeUsageError('--expect-preflight must be a SHA-256 hash');
|
|
1121
|
+
}
|
|
1122
|
+
assertNoArguments(rawArgs);
|
|
1123
|
+
const { config, paths } = await configuredPaths(projectRoot);
|
|
1124
|
+
if (dryRun) {
|
|
1125
|
+
const preview = await inspectNativeArchivePreflight({ paths, name });
|
|
1126
|
+
const state = await readNativeChange(paths, name);
|
|
1127
|
+
return success('archive --dry-run', {
|
|
1128
|
+
...preview,
|
|
1129
|
+
continuation: nativeContinuation({
|
|
1130
|
+
state,
|
|
1131
|
+
archiveReady: preview.ready,
|
|
1132
|
+
archiveConfirmation: preview.archiveConfirmation,
|
|
1133
|
+
archivePreflightHash: preview.preflightHash,
|
|
1134
|
+
}),
|
|
1135
|
+
}, `Native Archive preview ${preview.preflightHash}: ${preview.ready ? 'ready' : 'blocked'}\n`);
|
|
1136
|
+
}
|
|
1137
|
+
if (config.native.archive_confirmation === 'required' && !confirmed) {
|
|
1138
|
+
throw new NativeUsageError('archive requires --confirmed when native.archive_confirmation is required');
|
|
1139
|
+
}
|
|
1140
|
+
const state = await readNativeChange(paths, name);
|
|
1141
|
+
const result = await archiveNativeChange({
|
|
1142
|
+
paths,
|
|
1143
|
+
name,
|
|
1144
|
+
expectedPreflightHash: expectedPreflightHash,
|
|
1145
|
+
});
|
|
1146
|
+
return success('archive', { ...result, continuation: nativeContinuation({ state, done: true }) }, `Archived Native change ${name} to ${result.archiveDir}\n`);
|
|
1147
|
+
}
|
|
1148
|
+
if (command === 'doctor') {
|
|
1149
|
+
const repair = takeFlag(rawArgs, '--repair');
|
|
1150
|
+
const recoveryStrategy = takeOption(rawArgs, '--strategy');
|
|
1151
|
+
if (recoveryStrategy !== undefined &&
|
|
1152
|
+
recoveryStrategy !== 'continue' &&
|
|
1153
|
+
recoveryStrategy !== 'rollback') {
|
|
1154
|
+
throw new NativeUsageError('--strategy must be continue or rollback');
|
|
1155
|
+
}
|
|
1156
|
+
const name = rawArgs[0]?.startsWith('--') ? undefined : rawArgs.shift();
|
|
1157
|
+
assertNoArguments(rawArgs);
|
|
1158
|
+
const paths = await doctorPaths(projectRoot);
|
|
1159
|
+
const result = await doctorNativeProject({
|
|
1160
|
+
paths,
|
|
1161
|
+
...(name ? { name } : {}),
|
|
1162
|
+
repair,
|
|
1163
|
+
...(recoveryStrategy ? { recoveryStrategy } : {}),
|
|
1164
|
+
});
|
|
1165
|
+
return result.healthy
|
|
1166
|
+
? success('doctor', result)
|
|
1167
|
+
: {
|
|
1168
|
+
command: 'doctor',
|
|
1169
|
+
exitCode: 65,
|
|
1170
|
+
data: result,
|
|
1171
|
+
error: { code: 'invalid-data', message: 'Native project needs attention' },
|
|
1172
|
+
};
|
|
1173
|
+
}
|
|
1174
|
+
throw new NativeUsageError(`Unknown Native command: ${command}`);
|
|
1175
|
+
}
|
|
1176
|
+
function errorResult(command, error) {
|
|
1177
|
+
if (error instanceof NativeUsageError) {
|
|
1178
|
+
return {
|
|
1179
|
+
command,
|
|
1180
|
+
exitCode: 64,
|
|
1181
|
+
error: { code: 'usage', message: error.message },
|
|
1182
|
+
};
|
|
1183
|
+
}
|
|
1184
|
+
if (error instanceof NativeSpecConflictError) {
|
|
1185
|
+
return {
|
|
1186
|
+
command,
|
|
1187
|
+
exitCode: 73,
|
|
1188
|
+
data: {
|
|
1189
|
+
capability: error.capability,
|
|
1190
|
+
expectedHash: error.expectedHash,
|
|
1191
|
+
actualHash: error.actualHash,
|
|
1192
|
+
canonicalPath: error.canonicalPath,
|
|
1193
|
+
},
|
|
1194
|
+
error: { code: 'conflict', message: error.message },
|
|
1195
|
+
};
|
|
1196
|
+
}
|
|
1197
|
+
if (error instanceof NativeArchivePreflightError) {
|
|
1198
|
+
return {
|
|
1199
|
+
command,
|
|
1200
|
+
exitCode: 73,
|
|
1201
|
+
data: error.preflight,
|
|
1202
|
+
error: { code: 'conflict', message: error.message },
|
|
1203
|
+
};
|
|
1204
|
+
}
|
|
1205
|
+
if (error instanceof NativeChangeRevisionConflictError) {
|
|
1206
|
+
return {
|
|
1207
|
+
command,
|
|
1208
|
+
exitCode: 73,
|
|
1209
|
+
data: {
|
|
1210
|
+
change: error.change,
|
|
1211
|
+
expectedRevision: error.expectedRevision,
|
|
1212
|
+
actualRevision: error.actualRevision,
|
|
1213
|
+
outcome: 'revision-conflict',
|
|
1214
|
+
},
|
|
1215
|
+
error: { code: 'conflict', message: error.message },
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
if (error instanceof NativeBaselineIncompleteError) {
|
|
1219
|
+
return {
|
|
1220
|
+
command,
|
|
1221
|
+
exitCode: 65,
|
|
1222
|
+
data: {
|
|
1223
|
+
change: error.change,
|
|
1224
|
+
complete: false,
|
|
1225
|
+
omittedCount: error.omittedCount,
|
|
1226
|
+
omittedByReason: error.omittedByReason,
|
|
1227
|
+
samplePaths: error.samplePaths,
|
|
1228
|
+
sampleTruncated: error.sampleTruncated,
|
|
1229
|
+
effectiveLimits: error.effectiveLimits,
|
|
1230
|
+
policyHash: error.policyHash,
|
|
1231
|
+
configPath: '.comet/config.yaml',
|
|
1232
|
+
supportedFixes: [
|
|
1233
|
+
'increase native.snapshot.max_total_bytes or native.snapshot.max_duration_ms',
|
|
1234
|
+
'add an explicit native.snapshot.exclude pattern for data outside implementation scope',
|
|
1235
|
+
],
|
|
1236
|
+
requiredAction: 'resolve-native-baseline',
|
|
1237
|
+
},
|
|
1238
|
+
error: { code: 'baseline-incomplete', message: error.message },
|
|
1239
|
+
};
|
|
1240
|
+
}
|
|
1241
|
+
if (error instanceof Error) {
|
|
1242
|
+
const systemCode = error.code;
|
|
1243
|
+
if (systemCode &&
|
|
1244
|
+
new Set(['EACCES', 'EPERM', 'EIO', 'EMFILE', 'ENFILE', 'ENOSPC', 'EROFS']).has(systemCode)) {
|
|
1245
|
+
return {
|
|
1246
|
+
command,
|
|
1247
|
+
exitCode: 70,
|
|
1248
|
+
error: { code: 'internal', message: error.message },
|
|
1249
|
+
};
|
|
1250
|
+
}
|
|
1251
|
+
const conflict = /\b(lock|transaction|conflict|occupied|incomplete|recovery)\b/iu.test(error.message);
|
|
1252
|
+
return {
|
|
1253
|
+
command,
|
|
1254
|
+
exitCode: conflict ? 73 : 65,
|
|
1255
|
+
error: { code: conflict ? 'conflict' : 'invalid-data', message: error.message },
|
|
1256
|
+
};
|
|
1257
|
+
}
|
|
1258
|
+
return {
|
|
1259
|
+
command,
|
|
1260
|
+
exitCode: 70,
|
|
1261
|
+
error: { code: 'internal', message: String(error) },
|
|
1262
|
+
};
|
|
1263
|
+
}
|
|
1264
|
+
function render(result, json) {
|
|
1265
|
+
if (json) {
|
|
1266
|
+
return {
|
|
1267
|
+
exitCode: result.exitCode,
|
|
1268
|
+
stdout: JSON.stringify({
|
|
1269
|
+
command: result.command,
|
|
1270
|
+
exitCode: result.exitCode,
|
|
1271
|
+
...(result.data === undefined ? {} : { data: result.data }),
|
|
1272
|
+
...(result.error === undefined ? {} : { error: result.error }),
|
|
1273
|
+
}) + '\n',
|
|
1274
|
+
};
|
|
1275
|
+
}
|
|
1276
|
+
if (result.error) {
|
|
1277
|
+
return { exitCode: result.exitCode, stderr: result.error.message };
|
|
1278
|
+
}
|
|
1279
|
+
return { exitCode: result.exitCode, stdout: result.text };
|
|
1280
|
+
}
|
|
1281
|
+
export async function runNativeCli(argv) {
|
|
1282
|
+
const args = [...argv];
|
|
1283
|
+
const separator = args.indexOf('--');
|
|
1284
|
+
const globalArgs = separator < 0 ? args : args.slice(0, separator);
|
|
1285
|
+
const commandTail = separator < 0 ? [] : args.slice(separator);
|
|
1286
|
+
const json = globalArgs.includes('--json');
|
|
1287
|
+
let explicitProjectRoot;
|
|
1288
|
+
let command = globalArgs[0] ?? null;
|
|
1289
|
+
try {
|
|
1290
|
+
takeFlag(globalArgs, '--json');
|
|
1291
|
+
explicitProjectRoot = takeOption(globalArgs, '--project-root');
|
|
1292
|
+
const dispatchArgs = [...globalArgs, ...commandTail];
|
|
1293
|
+
command = dispatchArgs[0] ?? null;
|
|
1294
|
+
return render(await dispatch(dispatchArgs, explicitProjectRoot), json);
|
|
1295
|
+
}
|
|
1296
|
+
catch (error) {
|
|
1297
|
+
return render(errorResult(command, error), json);
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
//# sourceMappingURL=native-cli.js.map
|