project-tiny-context-harness 0.8.11 → 0.8.13
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 +514 -472
- package/assets/README.md +803 -749
- package/assets/README.zh-CN.md +468 -431
- package/assets/agents/.gitkeep +1 -1
- package/assets/agents/AGENTS_CORE.md +22 -24
- package/assets/agents/long-task-implementation.toml +15 -0
- package/assets/context_templates/architecture.md +18 -18
- package/assets/context_templates/area.md +30 -30
- package/assets/context_templates/context.toml +24 -24
- package/assets/context_templates/deployment.md +35 -35
- package/assets/context_templates/global.md +56 -56
- package/assets/context_templates/product-surface-contract.md +70 -70
- package/assets/context_templates/screen-contract.md +189 -189
- package/assets/context_templates/verification.md +25 -25
- package/assets/github/.gitkeep +1 -1
- package/assets/github/harness.yml +39 -39
- package/assets/make/.gitkeep +1 -1
- package/assets/make/ty-context.mk +48 -48
- package/assets/skills/context_development_engineer/SKILL.md +72 -185
- package/assets/skills/context_full_project_export/SKILL.md +28 -28
- package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
- package/assets/skills/context_product_plan/SKILL.md +35 -101
- package/assets/skills/context_surface_contract/SKILL.md +194 -191
- package/assets/skills/context_uiux_design/SKILL.md +49 -172
- package/assets/skills/design-resource-authoring/SKILL.md +54 -88
- package/assets/skills/design-resource-authoring/references/downstream-handoff.md +51 -163
- package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +96 -0
- package/assets/skills/design-resource-authoring/references/open-design-provider.md +140 -120
- package/assets/skills/design-resource-authoring/references/recovery-and-writeback.md +199 -0
- package/assets/skills/design-resource-authoring/references/resource-selection.md +158 -181
- package/assets/skills/design-system-authoring/SKILL.md +57 -57
- package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
- package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
- package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
- package/assets/skills/long-task-workflow/SKILL.md +71 -106
- package/assets/skills/long-task-workflow/agents/openai.yaml +1 -1
- package/assets/skills/long-task-workflow/references/authority-lifecycle.md +71 -69
- package/assets/skills/long-task-workflow/references/contract-authoring.md +110 -101
- package/assets/skills/long-task-workflow/references/evidence-design.md +99 -78
- package/assets/skills/long-task-workflow/references/source-authoring.md +90 -90
- package/assets/tools/validate_context.py +442 -442
- package/dist/commands/design-resource-recovery.d.ts +1 -0
- package/dist/commands/design-resource-recovery.js +152 -0
- package/dist/commands/design-resource.js +29 -3
- package/dist/commands/enable.js +2 -0
- package/dist/commands/index.js +2 -2
- package/dist/commands/long-task-revision.js +8 -7
- package/dist/commands/sync.js +2 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -0
- package/dist/lib/compact-authoring-support.d.ts +22 -0
- package/dist/lib/compact-authoring-support.js +143 -0
- package/dist/lib/compact-shared-structure-authoring.d.ts +5 -0
- package/dist/lib/compact-shared-structure-authoring.js +9 -0
- package/dist/lib/compact-shared-structure-types.d.ts +61 -0
- package/dist/lib/compact-shared-structure-types.js +1 -0
- package/dist/lib/compact-shared-structure-validation.d.ts +2 -0
- package/dist/lib/compact-shared-structure-validation.js +159 -0
- package/dist/lib/compact-shared-structures.d.ts +3 -0
- package/dist/lib/compact-shared-structures.js +204 -0
- package/dist/lib/design-resource-fact-enums.d.ts +4 -0
- package/dist/lib/design-resource-fact-enums.js +12 -0
- package/dist/lib/design-resource-fact-manifest-shape-evidence.js +2 -2
- package/dist/lib/design-resource-fact-policy.d.ts +2 -2
- package/dist/lib/design-resource-fact-types.d.ts +2 -2
- package/dist/lib/design-resource-handoff-bundle-draft.js +4 -2
- package/dist/lib/design-resource-handoff-input-types.d.ts +3 -0
- package/dist/lib/design-resource-handoff-parser.d.ts +2 -2
- package/dist/lib/design-resource-handoff-parser.js +2 -2
- package/dist/lib/design-resource-handoff-shape.d.ts +2 -0
- package/dist/lib/design-resource-handoff-shape.js +10 -0
- package/dist/lib/design-resource-handoff-snapshot.js +4 -0
- package/dist/lib/design-resource-handoff-validation.d.ts +4 -1
- package/dist/lib/design-resource-handoff-validation.js +11 -0
- package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +4 -2
- package/dist/lib/design-resource-reconciliation-codec.d.ts +2 -0
- package/dist/lib/design-resource-reconciliation-codec.js +174 -0
- package/dist/lib/design-resource-reconciliation-types.d.ts +62 -0
- package/dist/lib/design-resource-reconciliation-types.js +1 -0
- package/dist/lib/design-resource-reconciliation.d.ts +3 -0
- package/dist/lib/design-resource-reconciliation.js +224 -0
- package/dist/lib/design-resource-recovery-authority-policy.d.ts +8 -0
- package/dist/lib/design-resource-recovery-authority-policy.js +123 -0
- package/dist/lib/design-resource-recovery-catalog-resources.d.ts +6 -0
- package/dist/lib/design-resource-recovery-catalog-resources.js +121 -0
- package/dist/lib/design-resource-recovery-catalog-shape.d.ts +3 -0
- package/dist/lib/design-resource-recovery-catalog-shape.js +104 -0
- package/dist/lib/design-resource-recovery-catalog.d.ts +9 -0
- package/dist/lib/design-resource-recovery-catalog.js +103 -0
- package/dist/lib/design-resource-recovery-cleanup.d.ts +2 -0
- package/dist/lib/design-resource-recovery-cleanup.js +11 -0
- package/dist/lib/design-resource-recovery-codec-primitives.d.ts +19 -0
- package/dist/lib/design-resource-recovery-codec-primitives.js +92 -0
- package/dist/lib/design-resource-recovery-codec.d.ts +4 -0
- package/dist/lib/design-resource-recovery-codec.js +93 -0
- package/dist/lib/design-resource-recovery-current.d.ts +9 -0
- package/dist/lib/design-resource-recovery-current.js +41 -0
- package/dist/lib/design-resource-recovery-delta-policy.d.ts +5 -0
- package/dist/lib/design-resource-recovery-delta-policy.js +108 -0
- package/dist/lib/design-resource-recovery-files.d.ts +37 -0
- package/dist/lib/design-resource-recovery-files.js +204 -0
- package/dist/lib/design-resource-recovery-final-disposition-shape.d.ts +2 -0
- package/dist/lib/design-resource-recovery-final-disposition-shape.js +47 -0
- package/dist/lib/design-resource-recovery-patch-types.d.ts +54 -0
- package/dist/lib/design-resource-recovery-patch-types.js +1 -0
- package/dist/lib/design-resource-recovery-replay.d.ts +7 -0
- package/dist/lib/design-resource-recovery-replay.js +112 -0
- package/dist/lib/design-resource-recovery-repository-bindings.d.ts +9 -0
- package/dist/lib/design-resource-recovery-repository-bindings.js +49 -0
- package/dist/lib/design-resource-recovery-schema.d.ts +5 -0
- package/dist/lib/design-resource-recovery-schema.js +5 -0
- package/dist/lib/design-resource-recovery-shape.d.ts +10 -0
- package/dist/lib/design-resource-recovery-shape.js +184 -0
- package/dist/lib/design-resource-recovery-source-authority.d.ts +5 -0
- package/dist/lib/design-resource-recovery-source-authority.js +219 -0
- package/dist/lib/design-resource-recovery-text.d.ts +17 -0
- package/dist/lib/design-resource-recovery-text.js +186 -0
- package/dist/lib/design-resource-recovery-types.d.ts +197 -0
- package/dist/lib/design-resource-recovery-types.js +1 -0
- package/dist/lib/design-resource-recovery-writeback-policy.d.ts +5 -0
- package/dist/lib/design-resource-recovery-writeback-policy.js +326 -0
- package/dist/lib/design-resource-recovery-writeback-shape.d.ts +6 -0
- package/dist/lib/design-resource-recovery-writeback-shape.js +155 -0
- package/dist/lib/design-resource-recovery.d.ts +44 -0
- package/dist/lib/design-resource-recovery.js +216 -0
- package/dist/lib/design-resource-symbolic-applicability-authority.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-applicability-authority.js +19 -0
- package/dist/lib/design-resource-symbolic-applicability-policy.d.ts +12 -0
- package/dist/lib/design-resource-symbolic-applicability-policy.js +79 -0
- package/dist/lib/design-resource-symbolic-applicability-profiles.d.ts +8 -0
- package/dist/lib/design-resource-symbolic-applicability-profiles.js +55 -0
- package/dist/lib/design-resource-symbolic-applicability-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-applicability-shape.js +76 -0
- package/dist/lib/design-resource-symbolic-applicability-validation.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-applicability-validation.js +128 -0
- package/dist/lib/design-resource-symbolic-compilation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-compilation.js +13 -0
- package/dist/lib/design-resource-symbolic-denotation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-denotation.js +167 -0
- package/dist/lib/design-resource-symbolic-disposition-validation.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-disposition-validation.js +28 -0
- package/dist/lib/design-resource-symbolic-fact-policy.d.ts +12 -0
- package/dist/lib/design-resource-symbolic-fact-policy.js +12 -0
- package/dist/lib/design-resource-symbolic-fact-shape.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-fact-shape.js +138 -0
- package/dist/lib/design-resource-symbolic-fact-types.d.ts +213 -0
- package/dist/lib/design-resource-symbolic-fact-types.js +1 -0
- package/dist/lib/design-resource-symbolic-fact-validation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-fact-validation.js +86 -0
- package/dist/lib/design-resource-symbolic-indexes.d.ts +23 -0
- package/dist/lib/design-resource-symbolic-indexes.js +54 -0
- package/dist/lib/design-resource-symbolic-manifest-shape.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-manifest-shape.js +155 -0
- package/dist/lib/design-resource-symbolic-manifest-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-manifest-validation.js +132 -0
- package/dist/lib/design-resource-symbolic-noninterference-artifact.d.ts +33 -0
- package/dist/lib/design-resource-symbolic-noninterference-artifact.js +110 -0
- package/dist/lib/design-resource-symbolic-noninterference-equivalence.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-noninterference-equivalence.js +77 -0
- package/dist/lib/design-resource-symbolic-noninterference-recompute.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-noninterference-recompute.js +146 -0
- package/dist/lib/design-resource-symbolic-noninterference-scope.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-noninterference-scope.js +49 -0
- package/dist/lib/design-resource-symbolic-noninterference-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-noninterference-shape.js +152 -0
- package/dist/lib/design-resource-symbolic-noninterference-types.d.ts +103 -0
- package/dist/lib/design-resource-symbolic-noninterference-types.js +1 -0
- package/dist/lib/design-resource-symbolic-noninterference-validation.d.ts +5 -0
- package/dist/lib/design-resource-symbolic-noninterference-validation.js +62 -0
- package/dist/lib/design-resource-symbolic-oracle-fingerprint.d.ts +1 -0
- package/dist/lib/design-resource-symbolic-oracle-fingerprint.js +47 -0
- package/dist/lib/design-resource-symbolic-predicate-shape.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-predicate-shape.js +123 -0
- package/dist/lib/design-resource-symbolic-production-closure.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-production-closure.js +144 -0
- package/dist/lib/design-resource-symbolic-proof-authority-validation.d.ts +10 -0
- package/dist/lib/design-resource-symbolic-proof-authority-validation.js +68 -0
- package/dist/lib/design-resource-symbolic-proof-validation.d.ts +10 -0
- package/dist/lib/design-resource-symbolic-proof-validation.js +89 -0
- package/dist/lib/design-resource-symbolic-region-validation.d.ts +19 -0
- package/dist/lib/design-resource-symbolic-region-validation.js +146 -0
- package/dist/lib/design-resource-symbolic-resource-validation.d.ts +5 -0
- package/dist/lib/design-resource-symbolic-resource-validation.js +90 -0
- package/dist/lib/design-resource-symbolic-rule-shape.d.ts +27 -0
- package/dist/lib/design-resource-symbolic-rule-shape.js +158 -0
- package/dist/lib/design-resource-symbolic-safety-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-safety-validation.js +29 -0
- package/dist/lib/design-resource-symbolic-source-ir-evaluation.d.ts +19 -0
- package/dist/lib/design-resource-symbolic-source-ir-evaluation.js +74 -0
- package/dist/lib/design-resource-symbolic-source-ir-evidence.d.ts +44 -0
- package/dist/lib/design-resource-symbolic-source-ir-evidence.js +88 -0
- package/dist/lib/design-resource-symbolic-source-ir-oracle.d.ts +13 -0
- package/dist/lib/design-resource-symbolic-source-ir-oracle.js +96 -0
- package/dist/lib/design-resource-symbolic-source-ir-proof.d.ts +14 -0
- package/dist/lib/design-resource-symbolic-source-ir-proof.js +98 -0
- package/dist/lib/design-resource-symbolic-source-ir-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-source-ir-shape.js +38 -0
- package/dist/lib/design-resource-symbolic-source-ir-types.d.ts +17 -0
- package/dist/lib/design-resource-symbolic-source-ir-types.js +2 -0
- package/dist/lib/design-resource-symbolic-static-dependency-validation.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-static-dependency-validation.js +83 -0
- package/dist/lib/design-resource-symbolic-structural-closure-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-structural-closure-validation.js +79 -0
- package/dist/lib/design-resource-symbolic-validation-support.d.ts +29 -0
- package/dist/lib/design-resource-symbolic-validation-support.js +111 -0
- package/dist/lib/design-resource-v1-capacity-header.d.ts +8 -0
- package/dist/lib/design-resource-v1-capacity-header.js +231 -0
- package/dist/lib/design-resource-v1-capacity.d.ts +5 -0
- package/dist/lib/design-resource-v1-capacity.js +45 -0
- package/dist/lib/init.js +1 -0
- package/dist/lib/long-task-acceptance-shape.js +8 -2
- package/dist/lib/long-task-activation-validation.js +13 -3
- package/dist/lib/long-task-admitted-observation-records.d.ts +25 -0
- package/dist/lib/long-task-admitted-observation-records.js +40 -0
- package/dist/lib/long-task-admitted-observation.d.ts +93 -0
- package/dist/lib/long-task-admitted-observation.js +201 -0
- package/dist/lib/long-task-artifacts.d.ts +1 -0
- package/dist/lib/long-task-artifacts.js +1 -0
- package/dist/lib/long-task-authority-material-diff.js +1 -0
- package/dist/lib/long-task-authority-policy.d.ts +5 -0
- package/dist/lib/long-task-authority-policy.js +5 -0
- package/dist/lib/long-task-authority-revision-details.js +3 -1
- package/dist/lib/long-task-authority.js +2 -1
- package/dist/lib/long-task-check-execution-policy.js +5 -0
- package/dist/lib/long-task-check-runner.d.ts +2 -2
- package/dist/lib/long-task-check-runner.js +440 -23
- package/dist/lib/long-task-claims.d.ts +18 -0
- package/dist/lib/long-task-claims.js +35 -0
- package/dist/lib/long-task-codex-agent-profile.d.ts +42 -0
- package/dist/lib/long-task-codex-agent-profile.js +276 -0
- package/dist/lib/long-task-compact-authoring-projections.d.ts +12 -0
- package/dist/lib/long-task-compact-authoring-projections.js +67 -0
- package/dist/lib/long-task-compact-authoring.d.ts +3 -0
- package/dist/lib/long-task-compact-authoring.js +173 -0
- package/dist/lib/long-task-compact-carrier.d.ts +7 -0
- package/dist/lib/long-task-compact-carrier.js +132 -0
- package/dist/lib/long-task-compact-parser.d.ts +14 -0
- package/dist/lib/long-task-compact-parser.js +123 -0
- package/dist/lib/long-task-compact-primitives.d.ts +22 -0
- package/dist/lib/long-task-compact-primitives.js +132 -0
- package/dist/lib/long-task-compact-projections.d.ts +4 -0
- package/dist/lib/long-task-compact-projections.js +153 -0
- package/dist/lib/long-task-compact-structure-targets.d.ts +2 -0
- package/dist/lib/long-task-compact-structure-targets.js +91 -0
- package/dist/lib/long-task-conformance-policy.js +3 -1
- package/dist/lib/long-task-counterfactual-claim-policy.d.ts +3 -4
- package/dist/lib/long-task-counterfactual-claim-policy.js +11 -3
- package/dist/lib/long-task-counterfactual-sandbox.d.ts +1 -1
- package/dist/lib/long-task-counterfactual-sandbox.js +8 -5
- package/dist/lib/long-task-counterfactual-types.d.ts +2 -0
- package/dist/lib/long-task-delivery-compiler.js +2 -0
- package/dist/lib/long-task-delivery-parser.d.ts +1 -0
- package/dist/lib/long-task-delivery-parser.js +38 -6
- package/dist/lib/long-task-design-resource-handoff.d.ts +2 -1
- package/dist/lib/long-task-design-resource-handoff.js +71 -11
- package/dist/lib/long-task-design-resource-method-binding.d.ts +8 -1
- package/dist/lib/long-task-design-resource-method-binding.js +150 -0
- package/dist/lib/long-task-evidence-capability-codec.js +256 -34
- package/dist/lib/long-task-evidence-capability-policy.d.ts +3 -2
- package/dist/lib/long-task-evidence-capability-policy.js +142 -8
- package/dist/lib/long-task-evidence-capability-runtime.d.ts +5 -2
- package/dist/lib/long-task-evidence-capability-runtime.js +420 -68
- package/dist/lib/long-task-evidence-capability-types.d.ts +70 -2
- package/dist/lib/long-task-evidence-sensitivity-policy.d.ts +9 -0
- package/dist/lib/long-task-evidence-sensitivity-policy.js +31 -1
- package/dist/lib/long-task-evidence-v2.d.ts +4 -4
- package/dist/lib/long-task-evidence-v2.js +322 -44
- package/dist/lib/long-task-exact-comparison.d.ts +16 -0
- package/dist/lib/long-task-exact-comparison.js +28 -0
- package/dist/lib/long-task-execution-observation.d.ts +24 -0
- package/dist/lib/long-task-execution-observation.js +332 -0
- package/dist/lib/long-task-explain-acceptance-link.d.ts +4 -0
- package/dist/lib/long-task-explain-acceptance-link.js +4 -0
- package/dist/lib/long-task-explain-claim-links.d.ts +2 -0
- package/dist/lib/long-task-explain-claim-links.js +2 -0
- package/dist/lib/long-task-explain-source-links.d.ts +6 -0
- package/dist/lib/long-task-final-v2.js +7 -4
- package/dist/lib/long-task-hook-install.d.ts +19 -2
- package/dist/lib/long-task-hook-install.js +288 -91
- package/dist/lib/long-task-json-pointer-observation.d.ts +59 -0
- package/dist/lib/long-task-json-pointer-observation.js +184 -0
- package/dist/lib/long-task-observation-artifact.d.ts +8 -0
- package/dist/lib/long-task-observation-artifact.js +58 -0
- package/dist/lib/long-task-observation-authority.d.ts +17 -0
- package/dist/lib/long-task-observation-authority.js +348 -0
- package/dist/lib/long-task-paths.js +1 -1
- package/dist/lib/long-task-playwright-capability-records.d.ts +2 -0
- package/dist/lib/long-task-playwright-capability-records.js +74 -2
- package/dist/lib/long-task-process-observation.d.ts +6 -0
- package/dist/lib/long-task-process-observation.js +117 -0
- package/dist/lib/long-task-process-runtime-closure.d.ts +13 -0
- package/dist/lib/long-task-process-runtime-closure.js +175 -0
- package/dist/lib/long-task-progress.js +2 -0
- package/dist/lib/long-task-protected-files.d.ts +1 -1
- package/dist/lib/long-task-protected-files.js +1 -30
- package/dist/lib/long-task-risk.js +8 -3
- package/dist/lib/long-task-root-shape.js +10 -1
- package/dist/lib/long-task-runner-environment.d.ts +1 -1
- package/dist/lib/long-task-runner-environment.js +4 -4
- package/dist/lib/long-task-runner-freeze.d.ts +4 -2
- package/dist/lib/long-task-runner-freeze.js +130 -28
- package/dist/lib/long-task-runtime-types.d.ts +111 -0
- package/dist/lib/long-task-scoped-binding.d.ts +13 -0
- package/dist/lib/long-task-scoped-binding.js +11 -0
- package/dist/lib/long-task-semantic-contract-types.d.ts +2 -1
- package/dist/lib/long-task-semantic-fact-binding-types.d.ts +8 -0
- package/dist/lib/long-task-semantic-fact-closure.js +4 -1
- package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-closure.js +18 -6
- package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-facts.js +4 -1
- package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-proofs.js +12 -3
- package/dist/lib/long-task-semantic-fact-evidence.d.ts +8 -4
- package/dist/lib/long-task-semantic-fact-evidence.js +103 -43
- package/dist/lib/long-task-semantic-fact-shape.js +17 -6
- package/dist/lib/long-task-shape-primitives.d.ts +1 -1
- package/dist/lib/long-task-shape-primitives.js +1 -0
- package/dist/lib/long-task-source-claim-validation.js +4 -1
- package/dist/lib/long-task-source-item-parser.d.ts +2 -2
- package/dist/lib/long-task-source-item-parser.js +20 -11
- package/dist/lib/long-task-source-target-continuity.d.ts +2 -2
- package/dist/lib/long-task-source-target-continuity.js +35 -2
- package/dist/lib/long-task-source-target-index.d.ts +3 -0
- package/dist/lib/long-task-source-target-index.js +19 -0
- package/dist/lib/long-task-stage-policy.js +10 -4
- package/dist/lib/long-task-static-observation-freeze.d.ts +83 -0
- package/dist/lib/long-task-static-observation-freeze.js +428 -0
- package/dist/lib/long-task-status-projection.js +5 -1
- package/dist/lib/long-task-target-policy.d.ts +1 -1
- package/dist/lib/long-task-target-policy.js +3 -0
- package/dist/lib/long-task-ui-design-policy.js +64 -4
- package/dist/lib/long-task-ui-surface-shape.js +195 -0
- package/dist/lib/long-task-ui-surface-types.d.ts +53 -0
- package/dist/lib/long-task-verifier-dependency-closure.js +7 -3
- package/dist/lib/long-task-verifier-v2.js +70 -9
- package/dist/lib/long-task-worker-selection.d.ts +2 -0
- package/dist/lib/long-task-worker-selection.js +7 -0
- package/dist/lib/long-task-workspace-scope.js +3 -1
- package/dist/lib/long-task-workspace.d.ts +1 -1
- package/dist/lib/long-task-workspace.js +12 -13
- package/dist/lib/migrations.js +58 -0
- package/dist/lib/profiles.js +0 -1
- package/dist/lib/repository-path-safety.d.ts +14 -0
- package/dist/lib/repository-path-safety.js +126 -0
- package/dist/lib/semantic-fact-compact-authoring.d.ts +2 -0
- package/dist/lib/semantic-fact-compact-authoring.js +160 -0
- package/dist/lib/semantic-fact-compact-capacity.d.ts +9 -0
- package/dist/lib/semantic-fact-compact-capacity.js +40 -0
- package/dist/lib/semantic-fact-compact-carrier.d.ts +16 -0
- package/dist/lib/semantic-fact-compact-carrier.js +146 -0
- package/dist/lib/semantic-fact-compact-parser.d.ts +17 -0
- package/dist/lib/semantic-fact-compact-parser.js +168 -0
- package/dist/lib/semantic-fact-compact-revision.d.ts +11 -0
- package/dist/lib/semantic-fact-compact-revision.js +64 -0
- package/dist/lib/semantic-fact-compact-support.d.ts +23 -0
- package/dist/lib/semantic-fact-compact-support.js +159 -0
- package/dist/lib/semantic-fact-policy-census.d.ts +1 -0
- package/dist/lib/semantic-fact-policy-census.js +43 -0
- package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
- package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
- package/dist/lib/semantic-fact-source-parser.d.ts +5 -0
- package/dist/lib/semantic-fact-source-parser.js +47 -6
- package/dist/lib/structural-closure-cost.d.ts +79 -0
- package/dist/lib/structural-closure-cost.js +91 -0
- package/dist/lib/symbolic-denotation-dag-builder.d.ts +25 -0
- package/dist/lib/symbolic-denotation-dag-builder.js +176 -0
- package/dist/lib/symbolic-denotation-domain-validation.d.ts +3 -0
- package/dist/lib/symbolic-denotation-domain-validation.js +56 -0
- package/dist/lib/symbolic-denotation-engine.d.ts +32 -0
- package/dist/lib/symbolic-denotation-engine.js +140 -0
- package/dist/lib/symbolic-denotation-public.d.ts +11 -0
- package/dist/lib/symbolic-denotation-public.js +12 -0
- package/dist/lib/symbolic-denotation-runtime.d.ts +20 -0
- package/dist/lib/symbolic-denotation-runtime.js +90 -0
- package/dist/lib/symbolic-denotation-support.d.ts +11 -0
- package/dist/lib/symbolic-denotation-support.js +49 -0
- package/dist/lib/symbolic-denotation-types.d.ts +133 -0
- package/dist/lib/symbolic-denotation-types.js +18 -0
- package/dist/lib/symbolic-denotation-validation.d.ts +6 -0
- package/dist/lib/symbolic-denotation-validation.js +126 -0
- package/dist/lib/sync-engine.d.ts +1 -0
- package/dist/lib/sync-engine.js +4 -1
- package/dist/lib/upgrade.js +1 -0
- package/dist/long-task-hook.js +40 -1
- package/dist/public-types.d.ts +8 -0
- package/dist/public-types.js +1 -0
- package/dist/schemas/design-resource-symbolic-noninterference-artifact-v2.schema.json +289 -0
- package/dist/schemas/design-resource-symbolic-source-ir-v1.schema.json +130 -0
- package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +435 -5
- package/migrations/README.md +92 -15
- package/package.json +2 -2
- package/source-mappings.yaml +28 -25
- package/assets/skills/source-plan-authoring/SKILL.md +0 -14
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { compareText, invalid } from "./symbolic-denotation-support.js";
|
|
2
|
+
export function buildSymbolicRuntimeAxes(domains, numberCuts) {
|
|
3
|
+
return domains.map((domain) => {
|
|
4
|
+
if (domain.kind === "enum")
|
|
5
|
+
return {
|
|
6
|
+
domain,
|
|
7
|
+
segments: domain.values.map((value) => ({
|
|
8
|
+
kind: "enum",
|
|
9
|
+
values: [value],
|
|
10
|
+
})),
|
|
11
|
+
};
|
|
12
|
+
return { domain, segments: buildNumberSegments(domain, numberCuts) };
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function buildNumberSegments(domain, numberCuts) {
|
|
16
|
+
const cuts = new Set([
|
|
17
|
+
domain.minimum,
|
|
18
|
+
domain.maximum + 1,
|
|
19
|
+
...(numberCuts.get(domain.key) ?? []),
|
|
20
|
+
]);
|
|
21
|
+
const sorted = [...cuts]
|
|
22
|
+
.filter((value) => value >= domain.minimum && value <= domain.maximum + 1)
|
|
23
|
+
.sort((left, right) => left - right);
|
|
24
|
+
const segments = [];
|
|
25
|
+
for (let index = 0; index < sorted.length - 1; index += 1) {
|
|
26
|
+
const minimum = sorted[index];
|
|
27
|
+
const maximum = sorted[index + 1] - 1;
|
|
28
|
+
if (minimum <= maximum)
|
|
29
|
+
segments.push({ kind: "number", minimum, maximum });
|
|
30
|
+
}
|
|
31
|
+
return segments;
|
|
32
|
+
}
|
|
33
|
+
export function canonicalSymbolicEdges(axis, childRefs) {
|
|
34
|
+
return axis.domain.kind === "enum"
|
|
35
|
+
? canonicalEnumEdges(axis, childRefs)
|
|
36
|
+
: canonicalNumberEdges(axis, childRefs);
|
|
37
|
+
}
|
|
38
|
+
function canonicalEnumEdges(axis, childRefs) {
|
|
39
|
+
const groups = new Map();
|
|
40
|
+
axis.segments.forEach((segment, index) => {
|
|
41
|
+
const values = groups.get(childRefs[index]) ?? [];
|
|
42
|
+
values.push(...segment.values);
|
|
43
|
+
groups.set(childRefs[index], values);
|
|
44
|
+
});
|
|
45
|
+
return [...groups.entries()]
|
|
46
|
+
.map(([child_ref, values]) => ({
|
|
47
|
+
region: { kind: "enum_set", values },
|
|
48
|
+
child_ref,
|
|
49
|
+
}))
|
|
50
|
+
.sort((left, right) => compareText(left.region.values[0], right.region.values[0]));
|
|
51
|
+
}
|
|
52
|
+
function canonicalNumberEdges(axis, childRefs) {
|
|
53
|
+
const edges = [];
|
|
54
|
+
axis.segments.forEach((segment, index) => {
|
|
55
|
+
const numeric = segment;
|
|
56
|
+
const previous = edges.at(-1);
|
|
57
|
+
if (previous?.region.kind === "integer_range" &&
|
|
58
|
+
previous.child_ref === childRefs[index] &&
|
|
59
|
+
previous.region.maximum + 1 === numeric.minimum) {
|
|
60
|
+
previous.region.maximum = numeric.maximum;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
edges.push({
|
|
64
|
+
region: {
|
|
65
|
+
kind: "integer_range",
|
|
66
|
+
minimum: numeric.minimum,
|
|
67
|
+
maximum: numeric.maximum,
|
|
68
|
+
},
|
|
69
|
+
child_ref: childRefs[index],
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
return edges;
|
|
73
|
+
}
|
|
74
|
+
export function symbolicEdgeMatches(edge, value) {
|
|
75
|
+
if (edge.region.kind === "enum_set")
|
|
76
|
+
return typeof value === "string" && edge.region.values.includes(value);
|
|
77
|
+
return (typeof value === "number" &&
|
|
78
|
+
Number.isSafeInteger(value) &&
|
|
79
|
+
value >= edge.region.minimum &&
|
|
80
|
+
value <= edge.region.maximum);
|
|
81
|
+
}
|
|
82
|
+
export function symbolicSegmentMatches(segment, matches) {
|
|
83
|
+
if (segment.kind === "enum")
|
|
84
|
+
return matches(segment.values[0]);
|
|
85
|
+
const atMinimum = matches(segment.minimum);
|
|
86
|
+
const atMaximum = matches(segment.maximum);
|
|
87
|
+
if (atMinimum !== atMaximum)
|
|
88
|
+
invalid("numeric_partition_not_theory_complete", `${segment.minimum}:${segment.maximum}`);
|
|
89
|
+
return atMinimum;
|
|
90
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SymbolicDenotationAxisDomain, SymbolicDenotationScalar } from "./symbolic-denotation-types.js";
|
|
2
|
+
export declare function exactKeys(value: object, expected: string[], label: string): void;
|
|
3
|
+
export declare function stableKey(value: unknown, label: string): asserts value is string;
|
|
4
|
+
export declare function stableJson(value: unknown): string;
|
|
5
|
+
export declare function sha256(value: string): string;
|
|
6
|
+
export declare function compareText(left: string, right: string): number;
|
|
7
|
+
export declare function compareScalar(left: SymbolicDenotationScalar, right: SymbolicDenotationScalar): number;
|
|
8
|
+
export declare function scalarEqual(left: SymbolicDenotationScalar, right: SymbolicDenotationScalar): boolean;
|
|
9
|
+
export declare function domainCardinality(domain: SymbolicDenotationAxisDomain): bigint;
|
|
10
|
+
export declare function neverValue(value: never): string;
|
|
11
|
+
export declare function invalid(code: string, detail: string): never;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function exactKeys(value, expected, label) {
|
|
3
|
+
const actual = Object.keys(value).sort(compareText);
|
|
4
|
+
const required = [...expected].sort(compareText);
|
|
5
|
+
if (actual.length !== required.length ||
|
|
6
|
+
actual.some((key, index) => key !== required[index]))
|
|
7
|
+
invalid("shape_keys_invalid", `${label}:actual=${actual.join(",")}:expected=${required.join(",")}`);
|
|
8
|
+
}
|
|
9
|
+
export function stableKey(value, label) {
|
|
10
|
+
if (typeof value !== "string" || !/^[a-z0-9][a-z0-9._-]*$/u.test(value))
|
|
11
|
+
invalid("stable_key_invalid", `${label}:${String(value)}`);
|
|
12
|
+
}
|
|
13
|
+
export function stableJson(value) {
|
|
14
|
+
if (Array.isArray(value))
|
|
15
|
+
return `[${value.map((item) => stableJson(item)).join(",")}]`;
|
|
16
|
+
if (value && typeof value === "object")
|
|
17
|
+
return `{${Object.entries(value)
|
|
18
|
+
.sort(([left], [right]) => compareText(left, right))
|
|
19
|
+
.map(([key, entry]) => `${JSON.stringify(key)}:${stableJson(entry)}`)
|
|
20
|
+
.join(",")}}`;
|
|
21
|
+
return JSON.stringify(value);
|
|
22
|
+
}
|
|
23
|
+
export function sha256(value) {
|
|
24
|
+
return createHash("sha256").update(value).digest("hex");
|
|
25
|
+
}
|
|
26
|
+
export function compareText(left, right) {
|
|
27
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
28
|
+
}
|
|
29
|
+
export function compareScalar(left, right) {
|
|
30
|
+
if (typeof left !== typeof right)
|
|
31
|
+
return typeof left === "number" ? -1 : 1;
|
|
32
|
+
return typeof left === "number"
|
|
33
|
+
? left - right
|
|
34
|
+
: compareText(left, right);
|
|
35
|
+
}
|
|
36
|
+
export function scalarEqual(left, right) {
|
|
37
|
+
return typeof left === typeof right && left === right;
|
|
38
|
+
}
|
|
39
|
+
export function domainCardinality(domain) {
|
|
40
|
+
return domain.kind === "enum"
|
|
41
|
+
? BigInt(domain.values.length)
|
|
42
|
+
: BigInt(domain.maximum) - BigInt(domain.minimum) + 1n;
|
|
43
|
+
}
|
|
44
|
+
export function neverValue(value) {
|
|
45
|
+
return String(value);
|
|
46
|
+
}
|
|
47
|
+
export function invalid(code, detail) {
|
|
48
|
+
throw new Error(`symbolic_denotation_invalid:${code}:${detail}`);
|
|
49
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export type SymbolicDenotationScalar = string | number;
|
|
2
|
+
export type SymbolicDenotationAxisDomain = {
|
|
3
|
+
key: string;
|
|
4
|
+
kind: "enum";
|
|
5
|
+
values: string[];
|
|
6
|
+
} | {
|
|
7
|
+
key: string;
|
|
8
|
+
kind: "bounded_number";
|
|
9
|
+
minimum: number;
|
|
10
|
+
maximum: number;
|
|
11
|
+
integer: true;
|
|
12
|
+
};
|
|
13
|
+
export type SymbolicDenotationPredicate = {
|
|
14
|
+
op: "eq";
|
|
15
|
+
axis_ref: string;
|
|
16
|
+
value: SymbolicDenotationScalar;
|
|
17
|
+
} | {
|
|
18
|
+
op: "in";
|
|
19
|
+
axis_ref: string;
|
|
20
|
+
values: SymbolicDenotationScalar[];
|
|
21
|
+
} | {
|
|
22
|
+
op: "range";
|
|
23
|
+
axis_ref: string;
|
|
24
|
+
minimum: number;
|
|
25
|
+
maximum: number;
|
|
26
|
+
minimum_inclusive: boolean;
|
|
27
|
+
maximum_inclusive: boolean;
|
|
28
|
+
} | {
|
|
29
|
+
op: "all" | "any";
|
|
30
|
+
predicates: SymbolicDenotationPredicate[];
|
|
31
|
+
} | {
|
|
32
|
+
op: "not";
|
|
33
|
+
predicate: SymbolicDenotationPredicate;
|
|
34
|
+
};
|
|
35
|
+
export interface SymbolicDenotationComplexityLimits {
|
|
36
|
+
max_predicate_depth: number;
|
|
37
|
+
max_input_predicate_nodes: number;
|
|
38
|
+
max_canonical_dag_nodes: number;
|
|
39
|
+
max_partition_edges: number;
|
|
40
|
+
max_canonical_bytes: number;
|
|
41
|
+
}
|
|
42
|
+
export interface SymbolicDenotationCanonicalDagV1 {
|
|
43
|
+
schema_version: "symbolic-denotation-canonical-dag-v1";
|
|
44
|
+
root_ref: string;
|
|
45
|
+
nodes: SymbolicDenotationCanonicalNodeV1[];
|
|
46
|
+
}
|
|
47
|
+
export interface SymbolicDenotationCanonicalNodeV1 {
|
|
48
|
+
key: string;
|
|
49
|
+
axis_ref: string;
|
|
50
|
+
edges: SymbolicDenotationCanonicalEdgeV1[];
|
|
51
|
+
}
|
|
52
|
+
export type SymbolicDenotationCanonicalEdgeV1 = {
|
|
53
|
+
region: {
|
|
54
|
+
kind: "enum_set";
|
|
55
|
+
values: string[];
|
|
56
|
+
};
|
|
57
|
+
child_ref: string;
|
|
58
|
+
} | {
|
|
59
|
+
region: {
|
|
60
|
+
kind: "integer_range";
|
|
61
|
+
minimum: number;
|
|
62
|
+
maximum: number;
|
|
63
|
+
};
|
|
64
|
+
child_ref: string;
|
|
65
|
+
};
|
|
66
|
+
export interface CompiledSymbolicDenotationV1 {
|
|
67
|
+
canonical_dag: SymbolicDenotationCanonicalDagV1;
|
|
68
|
+
canonical_sha256: string;
|
|
69
|
+
canonical_bytes: number;
|
|
70
|
+
referenced_axis_refs: string[];
|
|
71
|
+
omitted_axis_refs: string[];
|
|
72
|
+
theoretical_ground_cardinality: string;
|
|
73
|
+
metrics: {
|
|
74
|
+
input_predicate_nodes: number;
|
|
75
|
+
canonical_dag_nodes: number;
|
|
76
|
+
partition_edges: number;
|
|
77
|
+
canonical_bytes: number;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export declare const SYMBOLIC_DENOTATION_DISPOSITIONS: readonly ["specified", "not_applicable", "excluded", "decision_required", "unavailable", "blocking"];
|
|
81
|
+
export type SymbolicDenotationDisposition = (typeof SYMBOLIC_DENOTATION_DISPOSITIONS)[number];
|
|
82
|
+
export declare const SYMBOLIC_DENOTATION_QUANTIFIERS: readonly ["one", "all", "any", "none", "exactly", "at_least", "at_most", "range"];
|
|
83
|
+
export type SymbolicDenotationQuantifier = (typeof SYMBOLIC_DENOTATION_QUANTIFIERS)[number];
|
|
84
|
+
export interface SymbolicExtensionalPointV1 {
|
|
85
|
+
subject_or_relation_ref: string;
|
|
86
|
+
target_ref: string;
|
|
87
|
+
condition_assignment: Record<string, SymbolicDenotationScalar>;
|
|
88
|
+
variation_assignment: Record<string, SymbolicDenotationScalar>;
|
|
89
|
+
property_ref: string;
|
|
90
|
+
population_ref: string | null;
|
|
91
|
+
quantifier: {
|
|
92
|
+
kind: SymbolicDenotationQuantifier;
|
|
93
|
+
minimum: number | null;
|
|
94
|
+
maximum: number | null;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export interface SymbolicExpectedSemanticsV1 {
|
|
98
|
+
value_type: string;
|
|
99
|
+
expected: {
|
|
100
|
+
locator: {
|
|
101
|
+
resource_ref: string;
|
|
102
|
+
kind: string;
|
|
103
|
+
value: string;
|
|
104
|
+
};
|
|
105
|
+
sha256: string;
|
|
106
|
+
};
|
|
107
|
+
provenance_ref: string;
|
|
108
|
+
sensitivity: string;
|
|
109
|
+
population_ref: string | null;
|
|
110
|
+
quantifier: SymbolicExtensionalPointV1["quantifier"];
|
|
111
|
+
lineage: unknown;
|
|
112
|
+
}
|
|
113
|
+
export interface SymbolicProofObligationDenotationV1 {
|
|
114
|
+
method: string;
|
|
115
|
+
proof_surface: string;
|
|
116
|
+
observation_boundary: string;
|
|
117
|
+
comparison: {
|
|
118
|
+
comparator: string;
|
|
119
|
+
mode: "exact" | "tolerance";
|
|
120
|
+
parameters: unknown;
|
|
121
|
+
tolerance: unknown;
|
|
122
|
+
mask: unknown;
|
|
123
|
+
};
|
|
124
|
+
oracle: unknown;
|
|
125
|
+
environment: unknown;
|
|
126
|
+
protected_value_policy: string;
|
|
127
|
+
completion_effect: string;
|
|
128
|
+
}
|
|
129
|
+
export interface SymbolicPointDenotationV1 {
|
|
130
|
+
disposition: SymbolicDenotationDisposition;
|
|
131
|
+
expected_semantics: SymbolicExpectedSemanticsV1 | null;
|
|
132
|
+
proof_obligations: SymbolicProofObligationDenotationV1[];
|
|
133
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const SYMBOLIC_DENOTATION_DISPOSITIONS = [
|
|
2
|
+
"specified",
|
|
3
|
+
"not_applicable",
|
|
4
|
+
"excluded",
|
|
5
|
+
"decision_required",
|
|
6
|
+
"unavailable",
|
|
7
|
+
"blocking",
|
|
8
|
+
];
|
|
9
|
+
export const SYMBOLIC_DENOTATION_QUANTIFIERS = [
|
|
10
|
+
"one",
|
|
11
|
+
"all",
|
|
12
|
+
"any",
|
|
13
|
+
"none",
|
|
14
|
+
"exactly",
|
|
15
|
+
"at_least",
|
|
16
|
+
"at_most",
|
|
17
|
+
"range",
|
|
18
|
+
];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SymbolicDenotationAxisDomain, SymbolicDenotationComplexityLimits, SymbolicDenotationPredicate } from "./symbolic-denotation-types.js";
|
|
2
|
+
export interface SymbolicPredicateInspection {
|
|
3
|
+
input_nodes: number;
|
|
4
|
+
number_cuts: Map<string, Set<number>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function validateSymbolicPredicate(input: SymbolicDenotationPredicate, domains: SymbolicDenotationAxisDomain[], domainIndex: ReadonlyMap<string, number>, inspection: SymbolicPredicateInspection, depth: number, limits: SymbolicDenotationComplexityLimits): SymbolicDenotationPredicate;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { compareScalar, exactKeys, invalid, } from "./symbolic-denotation-support.js";
|
|
2
|
+
export function validateSymbolicPredicate(input, domains, domainIndex, inspection, depth, limits) {
|
|
3
|
+
inspectPredicateNode(input, depth, inspection, limits);
|
|
4
|
+
switch (input.op) {
|
|
5
|
+
case "eq":
|
|
6
|
+
return validateEq(input, domains, domainIndex, inspection);
|
|
7
|
+
case "in":
|
|
8
|
+
return validateIn(input, domains, domainIndex, inspection);
|
|
9
|
+
case "range":
|
|
10
|
+
return validateRange(input, domains, domainIndex, inspection);
|
|
11
|
+
case "all":
|
|
12
|
+
case "any":
|
|
13
|
+
return validateGroup(input, domains, domainIndex, inspection, depth, limits);
|
|
14
|
+
case "not":
|
|
15
|
+
return validateNot(input, domains, domainIndex, inspection, depth, limits);
|
|
16
|
+
default:
|
|
17
|
+
return invalid("predicate_operator_unknown", String(input.op));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function inspectPredicateNode(input, depth, inspection, limits) {
|
|
21
|
+
if (!input || typeof input !== "object" || Array.isArray(input))
|
|
22
|
+
invalid("predicate_invalid", "not_object");
|
|
23
|
+
if (depth > limits.max_predicate_depth)
|
|
24
|
+
invalid("predicate_depth_limit_exceeded", `actual=${depth}:limit=${limits.max_predicate_depth}`);
|
|
25
|
+
inspection.input_nodes += 1;
|
|
26
|
+
if (inspection.input_nodes > limits.max_input_predicate_nodes)
|
|
27
|
+
invalid("predicate_node_limit_exceeded", `actual=${inspection.input_nodes}:limit=${limits.max_input_predicate_nodes}`);
|
|
28
|
+
}
|
|
29
|
+
function validateEq(input, domains, domainIndex, inspection) {
|
|
30
|
+
exactKeys(input, ["op", "axis_ref", "value"], "predicate:eq");
|
|
31
|
+
const domain = predicateDomain(input.axis_ref, domains, domainIndex);
|
|
32
|
+
validateScalar(domain, input.value);
|
|
33
|
+
addNumberCuts(domain, [input.value], inspection);
|
|
34
|
+
return { ...input };
|
|
35
|
+
}
|
|
36
|
+
function validateIn(input, domains, domainIndex, inspection) {
|
|
37
|
+
exactKeys(input, ["op", "axis_ref", "values"], "predicate:in");
|
|
38
|
+
const domain = predicateDomain(input.axis_ref, domains, domainIndex);
|
|
39
|
+
if (!Array.isArray(input.values) || !input.values.length)
|
|
40
|
+
invalid("predicate_in_values_required", input.axis_ref);
|
|
41
|
+
const values = input.values.map((value) => {
|
|
42
|
+
validateScalar(domain, value);
|
|
43
|
+
return value;
|
|
44
|
+
});
|
|
45
|
+
if (new Set(values.map((value) => `${typeof value}:${value}`)).size !==
|
|
46
|
+
values.length)
|
|
47
|
+
invalid("predicate_in_value_duplicate", input.axis_ref);
|
|
48
|
+
addNumberCuts(domain, values, inspection);
|
|
49
|
+
return { ...input, values: [...values].sort(compareScalar) };
|
|
50
|
+
}
|
|
51
|
+
function validateRange(input, domains, domainIndex, inspection) {
|
|
52
|
+
exactKeys(input, [
|
|
53
|
+
"op",
|
|
54
|
+
"axis_ref",
|
|
55
|
+
"minimum",
|
|
56
|
+
"maximum",
|
|
57
|
+
"minimum_inclusive",
|
|
58
|
+
"maximum_inclusive",
|
|
59
|
+
], "predicate:range");
|
|
60
|
+
const domain = predicateDomain(input.axis_ref, domains, domainIndex);
|
|
61
|
+
validateRangeBounds(input, domain);
|
|
62
|
+
const effectiveMinimum = input.minimum + (input.minimum_inclusive ? 0 : 1);
|
|
63
|
+
const effectiveMaximum = input.maximum - (input.maximum_inclusive ? 0 : 1);
|
|
64
|
+
if (effectiveMinimum > effectiveMaximum)
|
|
65
|
+
invalid("predicate_range_empty", input.axis_ref);
|
|
66
|
+
addCuts(inspection, domain.key, effectiveMinimum, effectiveMaximum + 1);
|
|
67
|
+
return { ...input };
|
|
68
|
+
}
|
|
69
|
+
function validateRangeBounds(input, domain) {
|
|
70
|
+
if (domain.kind !== "bounded_number" ||
|
|
71
|
+
!Number.isSafeInteger(input.minimum) ||
|
|
72
|
+
!Number.isSafeInteger(input.maximum) ||
|
|
73
|
+
typeof input.minimum_inclusive !== "boolean" ||
|
|
74
|
+
typeof input.maximum_inclusive !== "boolean" ||
|
|
75
|
+
input.minimum < domain.minimum ||
|
|
76
|
+
input.maximum > domain.maximum ||
|
|
77
|
+
input.minimum > input.maximum)
|
|
78
|
+
invalid("predicate_range_invalid", input.axis_ref);
|
|
79
|
+
}
|
|
80
|
+
function validateGroup(input, domains, domainIndex, inspection, depth, limits) {
|
|
81
|
+
exactKeys(input, ["op", "predicates"], `predicate:${input.op}`);
|
|
82
|
+
if (!Array.isArray(input.predicates) || !input.predicates.length)
|
|
83
|
+
invalid("predicate_children_required", input.op);
|
|
84
|
+
return {
|
|
85
|
+
op: input.op,
|
|
86
|
+
predicates: input.predicates.map((predicate) => validateSymbolicPredicate(predicate, domains, domainIndex, inspection, depth + 1, limits)),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function validateNot(input, domains, domainIndex, inspection, depth, limits) {
|
|
90
|
+
exactKeys(input, ["op", "predicate"], "predicate:not");
|
|
91
|
+
return {
|
|
92
|
+
op: "not",
|
|
93
|
+
predicate: validateSymbolicPredicate(input.predicate, domains, domainIndex, inspection, depth + 1, limits),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function predicateDomain(axisRef, domains, domainIndex) {
|
|
97
|
+
if (typeof axisRef !== "string")
|
|
98
|
+
invalid("predicate_axis_invalid", "");
|
|
99
|
+
const index = domainIndex.get(axisRef);
|
|
100
|
+
if (index === undefined)
|
|
101
|
+
invalid("predicate_axis_unknown", axisRef);
|
|
102
|
+
return domains[index];
|
|
103
|
+
}
|
|
104
|
+
function validateScalar(domain, value) {
|
|
105
|
+
if (domain.kind === "enum") {
|
|
106
|
+
if (typeof value !== "string" || !domain.values.includes(value))
|
|
107
|
+
invalid("predicate_value_outside_domain", `${domain.key}:${String(value)}`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (typeof value !== "number" ||
|
|
111
|
+
!Number.isSafeInteger(value) ||
|
|
112
|
+
value < domain.minimum ||
|
|
113
|
+
value > domain.maximum)
|
|
114
|
+
invalid("predicate_value_outside_domain", `${domain.key}:${String(value)}`);
|
|
115
|
+
}
|
|
116
|
+
function addNumberCuts(domain, values, inspection) {
|
|
117
|
+
if (domain.kind !== "bounded_number")
|
|
118
|
+
return;
|
|
119
|
+
for (const value of values)
|
|
120
|
+
addCuts(inspection, domain.key, value, value + 1);
|
|
121
|
+
}
|
|
122
|
+
function addCuts(inspection, axisRef, ...cuts) {
|
|
123
|
+
const values = inspection.number_cuts.get(axisRef) ?? new Set();
|
|
124
|
+
cuts.forEach((cut) => values.add(cut));
|
|
125
|
+
inspection.number_cuts.set(axisRef, values);
|
|
126
|
+
}
|
package/dist/lib/sync-engine.js
CHANGED
|
@@ -7,6 +7,7 @@ import { AGENTS_BLOCK_MARKERS, GITHUB_WORKFLOW_BLOCK_END, GITHUB_WORKFLOW_BLOCK_
|
|
|
7
7
|
import { packageAssetPath } from "./paths.js";
|
|
8
8
|
import { assertSupportedSchema } from "./schema-guard.js";
|
|
9
9
|
import { installLongTaskHooks, uninstallLongTaskHooks, } from "./long-task-hook-install.js";
|
|
10
|
+
import { syncLongTaskCodexAgentProfile } from "./long-task-codex-agent-profile.js";
|
|
10
11
|
import { enabledManagedSkillNames, isProfileEnabled } from "./profiles.js";
|
|
11
12
|
export function emptySyncReport() {
|
|
12
13
|
return {
|
|
@@ -27,7 +28,9 @@ export async function runSync(projectRoot) {
|
|
|
27
28
|
for (const managedFile of config.managed_files) {
|
|
28
29
|
await syncManagedFile(projectRoot, root, managedFile, report, config);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
const longTaskEnabled = isProfileEnabled(config, "long-task");
|
|
32
|
+
await syncLongTaskCodexAgentProfile(projectRoot, root, longTaskEnabled, report);
|
|
33
|
+
if (longTaskEnabled) {
|
|
31
34
|
await installLongTaskHooks(projectRoot, report);
|
|
32
35
|
}
|
|
33
36
|
else {
|
package/dist/lib/upgrade.js
CHANGED
|
@@ -42,6 +42,7 @@ export async function runUpgradeReport(projectRoot) {
|
|
|
42
42
|
for (const skipped of syncReport.skipped.filter((line) => line.includes("customized"))) {
|
|
43
43
|
lines.push(`sync skipped: ${skipped}`);
|
|
44
44
|
}
|
|
45
|
+
lines.push(...(syncReport.notices ?? []));
|
|
45
46
|
const doctor = await runDoctor(projectRoot);
|
|
46
47
|
lines.push(`doctor warnings=${doctor.warnings.length} errors=${doctor.errors.length}`);
|
|
47
48
|
const blocked = migrationReport.manualRequired.length > 0 ||
|
package/dist/long-task-hook.js
CHANGED
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { readActiveLongTaskBinding } from "./lib/long-task-state.js";
|
|
3
3
|
import { stopCheckDeliveryTask } from "./lib/long-task-status-v2.js";
|
|
4
|
+
import { LONG_TASK_IMPLEMENTATION_AGENT, selectedAgentType, } from "./lib/long-task-worker-selection.js";
|
|
4
5
|
import { repositoryRoot } from "./lib/long-task-workspace.js";
|
|
6
|
+
const LONG_TASK_IMPLEMENTATION_BOUNDARY = [
|
|
7
|
+
"This is a delegated rolling implementation worker, not the parent Long-Task Goal.",
|
|
8
|
+
"Follow only the bounded packet from the parent.",
|
|
9
|
+
"Do not run long-task resume, Preflight, Compile, Authority Revision, verify as formal Progress, Final Gate, Stop/close, abandon, or completion.",
|
|
10
|
+
"The parent Goal owns Source, Contract, Authority, Context writeback, integration and formal acceptance.",
|
|
11
|
+
"Your report is advisory and is not Progress, Evidence or acceptance.",
|
|
12
|
+
].join("\n");
|
|
13
|
+
const AGENT_SPAWN_TOOLS = new Set(["spawn_agent", "Agent"]);
|
|
14
|
+
const EXACT_WORKER_REQUIRED = "Active Tiny Context Long-Task permits delegation only to the exact custom agent long_task_implementation. The current host request does not explicitly select it. Do not substitute a generic worker; complete this packet in the parent Goal.";
|
|
5
15
|
const input = await readStdin();
|
|
16
|
+
const isAgentSpawnPreToolUse = input.hook_event_name === "PreToolUse" &&
|
|
17
|
+
AGENT_SPAWN_TOOLS.has(input.tool_name ?? "");
|
|
18
|
+
if (input.hook_event_name === "PreToolUse" && !isAgentSpawnPreToolUse)
|
|
19
|
+
output({});
|
|
6
20
|
try {
|
|
7
21
|
const root = await repositoryRoot(input.cwd || process.cwd());
|
|
8
22
|
const active = await readActiveLongTaskBinding(root);
|
|
9
23
|
if (!active)
|
|
10
24
|
output({});
|
|
25
|
+
if (isAgentSpawnPreToolUse) {
|
|
26
|
+
if (selectedAgentType(input.tool_input) === LONG_TASK_IMPLEMENTATION_AGENT)
|
|
27
|
+
output({});
|
|
28
|
+
denyAgentSpawn(EXACT_WORKER_REQUIRED);
|
|
29
|
+
}
|
|
30
|
+
if (input.hook_event_name === "SubagentStart")
|
|
31
|
+
output(input.agent_type === LONG_TASK_IMPLEMENTATION_AGENT
|
|
32
|
+
? {
|
|
33
|
+
hookSpecificOutput: {
|
|
34
|
+
hookEventName: "SubagentStart",
|
|
35
|
+
additionalContext: LONG_TASK_IMPLEMENTATION_BOUNDARY,
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
: {});
|
|
11
39
|
if (input.hook_event_name === "SessionStart" ||
|
|
12
40
|
input.hook_event_name === "PostCompact")
|
|
13
41
|
output({
|
|
@@ -35,7 +63,9 @@ try {
|
|
|
35
63
|
});
|
|
36
64
|
}
|
|
37
65
|
catch (error) {
|
|
38
|
-
const reason = `Long-
|
|
66
|
+
const reason = `Tiny Context Long-Task Hook failed closed: ${message(error)}`;
|
|
67
|
+
if (isAgentSpawnPreToolUse)
|
|
68
|
+
denyAgentSpawn(`${reason} Do not spawn a substitute agent; complete the packet in the parent Goal.`);
|
|
39
69
|
if (input.hook_event_name === "Stop")
|
|
40
70
|
output({ decision: "block", reason });
|
|
41
71
|
output({ continue: false, stopReason: reason });
|
|
@@ -50,6 +80,15 @@ function output(value) {
|
|
|
50
80
|
process.stdout.write(`${JSON.stringify(value)}\n`);
|
|
51
81
|
process.exit(0);
|
|
52
82
|
}
|
|
83
|
+
function denyAgentSpawn(reason) {
|
|
84
|
+
output({
|
|
85
|
+
hookSpecificOutput: {
|
|
86
|
+
hookEventName: "PreToolUse",
|
|
87
|
+
permissionDecision: "deny",
|
|
88
|
+
permissionDecisionReason: reason,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
}
|
|
53
92
|
function message(error) {
|
|
54
93
|
return error instanceof Error ? error.message : String(error);
|
|
55
94
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { HarnessConfig, HarnessProfile, ManagedFile, SourceMapping, } from "./lib/types.js";
|
|
2
|
+
export type { CheckExecutionResultV2, CompiledDeliveryContractV2, DeliveryAssertionV2, DeliveryCheckV2, DeliveryContractV2, DeliveryOutcomeV2, EffectiveRiskLevel, ExternalConfirmationV2, FinalReceiptV2, LongTaskFindingV2, LongTaskRiskFacts, ProofSurface, ProgressRecordV2, RequestedRiskLevel, RunnerType, SourceClaimV2, TargetedVerificationResultV2, } from "./lib/long-task-delivery-types.js";
|
|
3
|
+
export type { BoundaryCheckDecisionV2, BoundaryCheckInputV2, } from "./lib/long-task-boundary-check.js";
|
|
4
|
+
export type { DesignResourceHandoffBundleOptions, DesignResourceHandoffBundleResult, } from "./lib/design-resource-handoff-bundle.js";
|
|
5
|
+
export type { DesignResourceHandoffPreflightV1, DesignResourceHandoffV1, } from "./lib/design-resource-handoff-types.js";
|
|
6
|
+
export type { DesignResourceHandoffPreflightV2, DesignResourceHandoffV2, DesignResourceObservableRuleManifestV2, DesignResourceSymbolicFactRuleV2, DesignResourceSymbolicNoninterferenceCertificateV2, DesignResourceSymbolicNoninterferenceArtifactV2, DesignResourceSymbolicNoninterferenceDerivedResultV2, DesignResourceSymbolicNoninterferenceFailureWitnessV1, DesignResourceSymbolicNoninterferenceInputBindingV2, DesignResourceSymbolicNoninterferenceProofV2, DesignResourceSymbolicProofObligationV2, } from "./lib/design-resource-symbolic-fact-types.js";
|
|
7
|
+
export type { DesignResourceSymbolicSourceIrCertificateScopeV1, DesignResourceSymbolicSourceIrRegionV1, DesignResourceSymbolicSourceIrV1, } from "./lib/design-resource-symbolic-source-ir-types.js";
|
|
8
|
+
export type { CompiledSymbolicDenotationV1, SymbolicDenotationAxisDomain, SymbolicDenotationComplexityLimits, SymbolicDenotationPredicate, SymbolicExtensionalPointV1, SymbolicPointDenotationV1, } from "./lib/symbolic-denotation-types.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|