ws-spec-kit 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +79 -0
- package/dist/adapters/cli/output.d.ts +15 -0
- package/dist/adapters/cli/output.js +21 -0
- package/dist/adapters/cli/output.js.map +1 -0
- package/dist/adapters/cli/workflow.d.ts +25 -0
- package/dist/adapters/cli/workflow.js +131 -0
- package/dist/adapters/cli/workflow.js.map +1 -0
- package/dist/adapters/connectors/git-native.d.ts +23 -0
- package/dist/adapters/connectors/git-native.js +521 -0
- package/dist/adapters/connectors/git-native.js.map +1 -0
- package/dist/adapters/connectors/github-cli.d.ts +23 -0
- package/dist/adapters/connectors/github-cli.js +213 -0
- package/dist/adapters/connectors/github-cli.js.map +1 -0
- package/dist/adapters/connectors/gitlab-cli.d.ts +23 -0
- package/dist/adapters/connectors/gitlab-cli.js +199 -0
- package/dist/adapters/connectors/gitlab-cli.js.map +1 -0
- package/dist/adapters/connectors/lark-cli.d.ts +24 -0
- package/dist/adapters/connectors/lark-cli.js +296 -0
- package/dist/adapters/connectors/lark-cli.js.map +1 -0
- package/dist/adapters/process/redaction.d.ts +2 -0
- package/dist/adapters/process/redaction.js +51 -0
- package/dist/adapters/process/redaction.js.map +1 -0
- package/dist/adapters/process/spawn-json.d.ts +37 -0
- package/dist/adapters/process/spawn-json.js +312 -0
- package/dist/adapters/process/spawn-json.js.map +1 -0
- package/dist/adapters/skills/claude.d.ts +1 -0
- package/dist/adapters/skills/claude.js +3 -0
- package/dist/adapters/skills/claude.js.map +1 -0
- package/dist/adapters/skills/codex.d.ts +1 -0
- package/dist/adapters/skills/codex.js +3 -0
- package/dist/adapters/skills/codex.js.map +1 -0
- package/dist/adapters/skills/cursor.d.ts +1 -0
- package/dist/adapters/skills/cursor.js +3 -0
- package/dist/adapters/skills/cursor.js.map +1 -0
- package/dist/adapters/skills/generic.d.ts +1 -0
- package/dist/adapters/skills/generic.js +2 -0
- package/dist/adapters/skills/generic.js.map +1 -0
- package/dist/adapters/skills/install.d.ts +28 -0
- package/dist/adapters/skills/install.js +571 -0
- package/dist/adapters/skills/install.js.map +1 -0
- package/dist/application/acquire.d.ts +60 -0
- package/dist/application/acquire.js +964 -0
- package/dist/application/acquire.js.map +1 -0
- package/dist/application/application.d.ts +21 -0
- package/dist/application/application.js +31 -0
- package/dist/application/application.js.map +1 -0
- package/dist/application/artifact-reader.d.ts +1 -0
- package/dist/application/artifact-reader.js +150 -0
- package/dist/application/artifact-reader.js.map +1 -0
- package/dist/application/artifact-writer.d.ts +1 -0
- package/dist/application/artifact-writer.js +268 -0
- package/dist/application/artifact-writer.js.map +1 -0
- package/dist/application/artifact.d.ts +28 -0
- package/dist/application/artifact.js +523 -0
- package/dist/application/artifact.js.map +1 -0
- package/dist/application/decide.d.ts +12 -0
- package/dist/application/decide.js +168 -0
- package/dist/application/decide.js.map +1 -0
- package/dist/application/doctor-connectors.d.ts +34 -0
- package/dist/application/doctor-connectors.js +99 -0
- package/dist/application/doctor-connectors.js.map +1 -0
- package/dist/application/external-action.d.ts +164 -0
- package/dist/application/external-action.js +670 -0
- package/dist/application/external-action.js.map +1 -0
- package/dist/application/initial-stages.d.ts +3 -0
- package/dist/application/initial-stages.js +7 -0
- package/dist/application/initial-stages.js.map +1 -0
- package/dist/application/inspect.d.ts +2 -0
- package/dist/application/inspect.js +31 -0
- package/dist/application/inspect.js.map +1 -0
- package/dist/application/profile.d.ts +32 -0
- package/dist/application/profile.js +70 -0
- package/dist/application/profile.js.map +1 -0
- package/dist/application/snapshot.d.ts +75 -0
- package/dist/application/snapshot.js +338 -0
- package/dist/application/snapshot.js.map +1 -0
- package/dist/application/start.d.ts +43 -0
- package/dist/application/start.js +360 -0
- package/dist/application/start.js.map +1 -0
- package/dist/application/state.d.ts +17 -0
- package/dist/application/state.js +94 -0
- package/dist/application/state.js.map +1 -0
- package/dist/application/submit.d.ts +18 -0
- package/dist/application/submit.js +1090 -0
- package/dist/application/submit.js.map +1 -0
- package/dist/cli/commands/core.d.ts +2 -0
- package/dist/cli/commands/core.js +205 -0
- package/dist/cli/commands/core.js.map +1 -0
- package/dist/cli/commands/public-contract.d.ts +12 -0
- package/dist/cli/commands/public-contract.js +47 -0
- package/dist/cli/commands/public-contract.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +23 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/domain/artifacts.d.ts +52 -0
- package/dist/domain/artifacts.js +241 -0
- package/dist/domain/artifacts.js.map +1 -0
- package/dist/domain/digests.d.ts +11 -0
- package/dist/domain/digests.js +106 -0
- package/dist/domain/digests.js.map +1 -0
- package/dist/domain/external-receipt.d.ts +48 -0
- package/dist/domain/external-receipt.js +138 -0
- package/dist/domain/external-receipt.js.map +1 -0
- package/dist/domain/ids.d.ts +7 -0
- package/dist/domain/ids.js +5 -0
- package/dist/domain/ids.js.map +1 -0
- package/dist/domain/repository-path.d.ts +3 -0
- package/dist/domain/repository-path.js +87 -0
- package/dist/domain/repository-path.js.map +1 -0
- package/dist/domain/states.d.ts +38 -0
- package/dist/domain/states.js +69 -0
- package/dist/domain/states.js.map +1 -0
- package/dist/domain/work-package-identity.d.ts +2 -0
- package/dist/domain/work-package-identity.js +10 -0
- package/dist/domain/work-package-identity.js.map +1 -0
- package/dist/domain/workflow.d.ts +58 -0
- package/dist/domain/workflow.js +2 -0
- package/dist/domain/workflow.js.map +1 -0
- package/dist/engine/actor-roles.d.ts +15 -0
- package/dist/engine/actor-roles.js +53 -0
- package/dist/engine/actor-roles.js.map +1 -0
- package/dist/engine/approvals.d.ts +44 -0
- package/dist/engine/approvals.js +239 -0
- package/dist/engine/approvals.js.map +1 -0
- package/dist/engine/archive.d.ts +24 -0
- package/dist/engine/archive.js +442 -0
- package/dist/engine/archive.js.map +1 -0
- package/dist/engine/compiler.d.ts +25 -0
- package/dist/engine/compiler.js +828 -0
- package/dist/engine/compiler.js.map +1 -0
- package/dist/engine/control/condition.d.ts +10 -0
- package/dist/engine/control/condition.js +49 -0
- package/dist/engine/control/condition.js.map +1 -0
- package/dist/engine/control/loop.d.ts +23 -0
- package/dist/engine/control/loop.js +96 -0
- package/dist/engine/control/loop.js.map +1 -0
- package/dist/engine/control/retry.d.ts +15 -0
- package/dist/engine/control/retry.js +54 -0
- package/dist/engine/control/retry.js.map +1 -0
- package/dist/engine/docs-integrity.d.ts +13 -0
- package/dist/engine/docs-integrity.js +34 -0
- package/dist/engine/docs-integrity.js.map +1 -0
- package/dist/engine/expressions/ast.d.ts +18 -0
- package/dist/engine/expressions/ast.js +9 -0
- package/dist/engine/expressions/ast.js.map +1 -0
- package/dist/engine/expressions/evaluate.d.ts +7 -0
- package/dist/engine/expressions/evaluate.js +47 -0
- package/dist/engine/expressions/evaluate.js.map +1 -0
- package/dist/engine/expressions/parser.d.ts +2 -0
- package/dist/engine/expressions/parser.js +173 -0
- package/dist/engine/expressions/parser.js.map +1 -0
- package/dist/engine/external-effects/authorization.d.ts +146 -0
- package/dist/engine/external-effects/authorization.js +222 -0
- package/dist/engine/external-effects/authorization.js.map +1 -0
- package/dist/engine/external-effects/idempotency.d.ts +14 -0
- package/dist/engine/external-effects/idempotency.js +26 -0
- package/dist/engine/external-effects/idempotency.js.map +1 -0
- package/dist/engine/external-effects/reconciliation.d.ts +11 -0
- package/dist/engine/external-effects/reconciliation.js +18 -0
- package/dist/engine/external-effects/reconciliation.js.map +1 -0
- package/dist/engine/results.d.ts +14 -0
- package/dist/engine/results.js +88 -0
- package/dist/engine/results.js.map +1 -0
- package/dist/engine/scheduler.d.ts +60 -0
- package/dist/engine/scheduler.js +225 -0
- package/dist/engine/scheduler.js.map +1 -0
- package/dist/engine/tdd/green-gate.d.ts +6 -0
- package/dist/engine/tdd/green-gate.js +72 -0
- package/dist/engine/tdd/green-gate.js.map +1 -0
- package/dist/engine/tdd/red-gate.d.ts +30 -0
- package/dist/engine/tdd/red-gate.js +531 -0
- package/dist/engine/tdd/red-gate.js.map +1 -0
- package/dist/engine/tdd/types.d.ts +89 -0
- package/dist/engine/tdd/types.js +38 -0
- package/dist/engine/tdd/types.js.map +1 -0
- package/dist/engine/verification.d.ts +56 -0
- package/dist/engine/verification.js +196 -0
- package/dist/engine/verification.js.map +1 -0
- package/dist/policy/profile.d.ts +24 -0
- package/dist/policy/profile.js +23 -0
- package/dist/policy/profile.js.map +1 -0
- package/dist/policy/risk.d.ts +33 -0
- package/dist/policy/risk.js +138 -0
- package/dist/policy/risk.js.map +1 -0
- package/dist/protocol/application.d.ts +196 -0
- package/dist/protocol/application.js +2 -0
- package/dist/protocol/application.js.map +1 -0
- package/dist/protocol/public-contract.d.ts +81 -0
- package/dist/protocol/public-contract.js +231 -0
- package/dist/protocol/public-contract.js.map +1 -0
- package/dist/protocol/work-package.d.ts +55 -0
- package/dist/protocol/work-package.js +2 -0
- package/dist/protocol/work-package.js.map +1 -0
- package/dist/registry/connectors/external-executor.d.ts +4 -0
- package/dist/registry/connectors/external-executor.js +249 -0
- package/dist/registry/connectors/external-executor.js.map +1 -0
- package/dist/registry/connectors/feishu-document.d.ts +21 -0
- package/dist/registry/connectors/feishu-document.js +197 -0
- package/dist/registry/connectors/feishu-document.js.map +1 -0
- package/dist/registry/connectors/git-commit.d.ts +32 -0
- package/dist/registry/connectors/git-commit.js +122 -0
- package/dist/registry/connectors/git-commit.js.map +1 -0
- package/dist/registry/connectors/issue.d.ts +68 -0
- package/dist/registry/connectors/issue.js +301 -0
- package/dist/registry/connectors/issue.js.map +1 -0
- package/dist/registry/connectors/knowledge-publish.d.ts +30 -0
- package/dist/registry/connectors/knowledge-publish.js +157 -0
- package/dist/registry/connectors/knowledge-publish.js.map +1 -0
- package/dist/registry/connectors/local-requirement.d.ts +19 -0
- package/dist/registry/connectors/local-requirement.js +177 -0
- package/dist/registry/connectors/local-requirement.js.map +1 -0
- package/dist/registry/connectors/manifest.d.ts +6 -0
- package/dist/registry/connectors/manifest.js +164 -0
- package/dist/registry/connectors/manifest.js.map +1 -0
- package/dist/registry/connectors/registry.d.ts +11 -0
- package/dist/registry/connectors/registry.js +34 -0
- package/dist/registry/connectors/registry.js.map +1 -0
- package/dist/registry/connectors/requirement-source.d.ts +46 -0
- package/dist/registry/connectors/requirement-source.js +513 -0
- package/dist/registry/connectors/requirement-source.js.map +1 -0
- package/dist/registry/connectors/runtime.d.ts +38 -0
- package/dist/registry/connectors/runtime.js +127 -0
- package/dist/registry/connectors/runtime.js.map +1 -0
- package/dist/registry/connectors/secret-detector.d.ts +19 -0
- package/dist/registry/connectors/secret-detector.js +85 -0
- package/dist/registry/connectors/secret-detector.js.map +1 -0
- package/dist/registry/connectors/semver.d.ts +8 -0
- package/dist/registry/connectors/semver.js +57 -0
- package/dist/registry/connectors/semver.js.map +1 -0
- package/dist/registry/connectors/types.d.ts +45 -0
- package/dist/registry/connectors/types.js +2 -0
- package/dist/registry/connectors/types.js.map +1 -0
- package/dist/registry/executors/registry.d.ts +15 -0
- package/dist/registry/executors/registry.js +68 -0
- package/dist/registry/executors/registry.js.map +1 -0
- package/dist/registry/executors/types.d.ts +19 -0
- package/dist/registry/executors/types.js +2 -0
- package/dist/registry/executors/types.js.map +1 -0
- package/dist/registry/skills/lock.d.ts +3 -0
- package/dist/registry/skills/lock.js +278 -0
- package/dist/registry/skills/lock.js.map +1 -0
- package/dist/registry/skills/resolver.d.ts +16 -0
- package/dist/registry/skills/resolver.js +353 -0
- package/dist/registry/skills/resolver.js.map +1 -0
- package/dist/registry/skills/types.d.ts +75 -0
- package/dist/registry/skills/types.js +9 -0
- package/dist/registry/skills/types.js.map +1 -0
- package/dist/resources/catalog.d.ts +20 -0
- package/dist/resources/catalog.js +111 -0
- package/dist/resources/catalog.js.map +1 -0
- package/dist/schemas/definitions.d.ts +5 -0
- package/dist/schemas/definitions.js +958 -0
- package/dist/schemas/definitions.js.map +1 -0
- package/dist/schemas/generate.d.ts +1 -0
- package/dist/schemas/generate.js +26 -0
- package/dist/schemas/generate.js.map +1 -0
- package/dist/schemas/index.d.ts +11 -0
- package/dist/schemas/index.js +54 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/storage/control-plane.d.ts +136 -0
- package/dist/storage/control-plane.js +688 -0
- package/dist/storage/control-plane.js.map +1 -0
- package/dist/storage/events.d.ts +36 -0
- package/dist/storage/events.js +185 -0
- package/dist/storage/events.js.map +1 -0
- package/dist/storage/external-action-payload.d.ts +33 -0
- package/dist/storage/external-action-payload.js +190 -0
- package/dist/storage/external-action-payload.js.map +1 -0
- package/dist/storage/files.d.ts +13 -0
- package/dist/storage/files.js +45 -0
- package/dist/storage/files.js.map +1 -0
- package/dist/storage/git.d.ts +4 -0
- package/dist/storage/git.js +21 -0
- package/dist/storage/git.js.map +1 -0
- package/dist/storage/project-config.d.ts +11 -0
- package/dist/storage/project-config.js +60 -0
- package/dist/storage/project-config.js.map +1 -0
- package/dist/storage/repository.d.ts +14 -0
- package/dist/storage/repository.js +151 -0
- package/dist/storage/repository.js.map +1 -0
- package/dist/storage/work-items.d.ts +77 -0
- package/dist/storage/work-items.js +373 -0
- package/dist/storage/work-items.js.map +1 -0
- package/dist/storage/workflow-trust.d.ts +38 -0
- package/dist/storage/workflow-trust.js +310 -0
- package/dist/storage/workflow-trust.js.map +1 -0
- package/dist/workflow-package/loader.d.ts +12 -0
- package/dist/workflow-package/loader.js +249 -0
- package/dist/workflow-package/loader.js.map +1 -0
- package/dist/workflow-package/lock.d.ts +6 -0
- package/dist/workflow-package/lock.js +12 -0
- package/dist/workflow-package/lock.js.map +1 -0
- package/dist/workflow-package/path-boundary.d.ts +5 -0
- package/dist/workflow-package/path-boundary.js +38 -0
- package/dist/workflow-package/path-boundary.js.map +1 -0
- package/dist/workflow-package/trust.d.ts +27 -0
- package/dist/workflow-package/trust.js +61 -0
- package/dist/workflow-package/trust.js.map +1 -0
- package/dist/workflow-package/types.d.ts +176 -0
- package/dist/workflow-package/types.js +9 -0
- package/dist/workflow-package/types.js.map +1 -0
- package/dist/workflow-package/workflow-v1.d.ts +3 -0
- package/dist/workflow-package/workflow-v1.js +274 -0
- package/dist/workflow-package/workflow-v1.js.map +1 -0
- package/package.json +40 -0
- package/resources/catalog.yaml +37 -0
- package/resources/connectors/github-cli.yaml +24 -0
- package/resources/connectors/gitlab-cli.yaml +24 -0
- package/resources/connectors/lark-cli.yaml +28 -0
- package/resources/skills/bug-fixing/SKILL.md +16 -0
- package/resources/skills/code-review/SKILL.md +16 -0
- package/resources/skills/documentation-editing/SKILL.md +16 -0
- package/resources/skills/documentation-exploration/SKILL.md +16 -0
- package/resources/skills/documentation-review/SKILL.md +16 -0
- package/resources/skills/requirement-exploration/SKILL.md +16 -0
- package/resources/skills/solution-design/SKILL.md +16 -0
- package/resources/skills/task-planning/SKILL.md +16 -0
- package/resources/skills/tdd-implementation/SKILL.md +16 -0
- package/resources/workflows/documentation-delivery/manifest.yaml +8 -0
- package/resources/workflows/documentation-delivery/profiles/governed.yaml +23 -0
- package/resources/workflows/documentation-delivery/profiles/quick.yaml +23 -0
- package/resources/workflows/documentation-delivery/profiles/standard.yaml +21 -0
- package/resources/workflows/documentation-delivery/workflow.yaml +109 -0
- package/resources/workflows/feature-delivery/manifest.yaml +8 -0
- package/resources/workflows/feature-delivery/profiles/governed.yaml +27 -0
- package/resources/workflows/feature-delivery/profiles/quick.yaml +25 -0
- package/resources/workflows/feature-delivery/profiles/standard.yaml +26 -0
- package/resources/workflows/feature-delivery/workflow.yaml +150 -0
- package/schemas/builtin-agent-action-v1.schema.json +509 -0
- package/schemas/builtin-application-acquire-input-v1.schema.json +25 -0
- package/schemas/builtin-application-artifact-create-input-v1.schema.json +49 -0
- package/schemas/builtin-application-decision-input-v1.schema.json +284 -0
- package/schemas/builtin-application-inspect-input-v1.schema.json +20 -0
- package/schemas/builtin-application-project-config-snapshot-v1.schema.json +289 -0
- package/schemas/builtin-application-project-config-v1.schema.json +293 -0
- package/schemas/builtin-application-start-input-v1.schema.json +92 -0
- package/schemas/builtin-application-submit-input-v1.schema.json +145 -0
- package/schemas/builtin-artifact-v1.schema.json +48 -0
- package/schemas/builtin-evidence-v1.schema.json +65 -0
- package/schemas/builtin-external-action-grant-v1.schema.json +298 -0
- package/schemas/builtin-external-action-request-v1.schema.json +288 -0
- package/schemas/builtin-external-binding-v1.schema.json +59 -0
- package/schemas/builtin-external-receipt-v1.schema.json +109 -0
- package/schemas/builtin-external-write-receipt-v1.schema.json +253 -0
- package/schemas/builtin-source-artifact-v1.schema.json +293 -0
- package/schemas/builtin-submit-result-v1.schema.json +111 -0
- package/schemas/builtin-tdd-cycle-evidence-v1.schema.json +119 -0
- package/schemas/builtin-tdd-node-test-report-v1.schema.json +103 -0
- package/schemas/builtin-tdd-trusted-evidence-v1.schema.json +184 -0
- package/schemas/builtin-work-item-v1.schema.json +201 -0
- package/schemas/builtin-work-package-v1.schema.json +254 -0
- package/schemas/builtin-workflow-selection-v1.schema.json +40 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { parseExpression } from "../engine/expressions/parser.js";
|
|
2
|
+
import { parseSkillLock } from "../registry/skills/lock.js";
|
|
3
|
+
export class ApplicationSnapshotError extends Error {
|
|
4
|
+
code = "WSSPEC_APPLICATION_SNAPSHOT_INVALID";
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(`${ApplicationSnapshotError.name}: ${message}`);
|
|
7
|
+
this.name = "ApplicationSnapshotError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function invalid(label) {
|
|
11
|
+
throw new ApplicationSnapshotError(`${label} 无效。`);
|
|
12
|
+
}
|
|
13
|
+
function record(value, label, allowed) {
|
|
14
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
15
|
+
invalid(label);
|
|
16
|
+
const result = value;
|
|
17
|
+
if (Object.keys(result).some((key) => !allowed.includes(key)))
|
|
18
|
+
invalid(`${label} 包含未知字段`);
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function text(value, label) {
|
|
22
|
+
if (typeof value !== "string" || value === "")
|
|
23
|
+
invalid(label);
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
function flag(value, label) {
|
|
27
|
+
if (typeof value !== "boolean")
|
|
28
|
+
invalid(label);
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function integer(value, label, minimum, maximum = Number.MAX_SAFE_INTEGER) {
|
|
32
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < minimum || value > maximum)
|
|
33
|
+
invalid(label);
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
function digest(value, label) {
|
|
37
|
+
const result = text(value, label);
|
|
38
|
+
if (!/^sha256:[a-f0-9]{64}$/u.test(result))
|
|
39
|
+
invalid(label);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function strings(value, label) {
|
|
43
|
+
if (!Array.isArray(value))
|
|
44
|
+
invalid(label);
|
|
45
|
+
const result = value.map((item, index) => text(item, `${label}[${index}]`));
|
|
46
|
+
if (new Set(result).size !== result.length)
|
|
47
|
+
invalid(`${label} 包含重复项`);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
function optionalText(source, key, label) {
|
|
51
|
+
return source[key] === undefined ? undefined : { [key]: text(source[key], `${label}.${key}`) };
|
|
52
|
+
}
|
|
53
|
+
function optionalExpression(source, key, label) {
|
|
54
|
+
if (source[key] === undefined)
|
|
55
|
+
return undefined;
|
|
56
|
+
const value = text(source[key], `${label}.${key}`);
|
|
57
|
+
try {
|
|
58
|
+
parseExpression(value);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
invalid(`${label}.${key}`);
|
|
62
|
+
}
|
|
63
|
+
return { [key]: value };
|
|
64
|
+
}
|
|
65
|
+
function parseArtifactReference(value, label) {
|
|
66
|
+
const source = record(value, label, ["artifactType", "outputId", "schemaVersion", "artifactId", "path", "revision", "contentHash", "mediaType", "contentLevel"]);
|
|
67
|
+
return {
|
|
68
|
+
artifactType: text(source.artifactType, `${label}.artifactType`),
|
|
69
|
+
...(source.outputId === undefined ? {} : { outputId: text(source.outputId, `${label}.outputId`) }),
|
|
70
|
+
schemaVersion: integer(source.schemaVersion, `${label}.schemaVersion`, 1),
|
|
71
|
+
...(source.artifactId === undefined ? {} : { artifactId: text(source.artifactId, `${label}.artifactId`) }),
|
|
72
|
+
...(source.path === undefined ? {} : { path: text(source.path, `${label}.path`) }),
|
|
73
|
+
...(source.revision === undefined ? {} : { revision: integer(source.revision, `${label}.revision`, 1) }),
|
|
74
|
+
...(source.contentHash === undefined ? {} : { contentHash: digest(source.contentHash, `${label}.contentHash`) }),
|
|
75
|
+
...(source.mediaType === undefined ? {} : { mediaType: text(source.mediaType, `${label}.mediaType`) }),
|
|
76
|
+
...(source.contentLevel === undefined ? {} : { contentLevel: text(source.contentLevel, `${label}.contentLevel`) }),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function parseSkillDescriptor(value, label) {
|
|
80
|
+
const source = record(value, label, ["ref", "version", "digest", "description"]);
|
|
81
|
+
return {
|
|
82
|
+
ref: text(source.ref, `${label}.ref`),
|
|
83
|
+
version: text(source.version, `${label}.version`),
|
|
84
|
+
digest: digest(source.digest, `${label}.digest`),
|
|
85
|
+
description: text(source.description, `${label}.description`),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function parseArtifactRequirement(value, label) {
|
|
89
|
+
const source = record(value, label, ["outputId", "required"]);
|
|
90
|
+
return { outputId: text(source.outputId, `${label}.outputId`), required: flag(source.required, `${label}.required`) };
|
|
91
|
+
}
|
|
92
|
+
function parseArtifactDeclaration(value, label) {
|
|
93
|
+
const source = record(value, label, ["outputId", "artifact", "required", "contentLevel"]);
|
|
94
|
+
return {
|
|
95
|
+
outputId: text(source.outputId, `${label}.outputId`),
|
|
96
|
+
artifact: text(source.artifact, `${label}.artifact`),
|
|
97
|
+
required: flag(source.required, `${label}.required`),
|
|
98
|
+
...(source.contentLevel === undefined ? {} : { contentLevel: text(source.contentLevel, `${label}.contentLevel`) }),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function parseSnapshotStep(value, label) {
|
|
102
|
+
const source = record(value, label, [
|
|
103
|
+
"id", "uses", "actorRole", "securityClass", "needs", "enabled", "skills", "inputs", "outputs", "gates", "approval",
|
|
104
|
+
"authorizationRequired", "artifactLevel", "objective", "expectedOutcome", "when", "action", "until", "retry",
|
|
105
|
+
"maxIterations", "independentReviewActor", "steps",
|
|
106
|
+
]);
|
|
107
|
+
const securityClasses = ["agent", "local-read", "local-write", "external-read", "external-write", "control"];
|
|
108
|
+
if (!securityClasses.includes(source.securityClass))
|
|
109
|
+
invalid(`${label}.securityClass`);
|
|
110
|
+
if (source.actorRole !== undefined && source.actorRole !== "implementation" && source.actorRole !== "review" && source.actorRole !== "fix") {
|
|
111
|
+
invalid(`${label}.actorRole`);
|
|
112
|
+
}
|
|
113
|
+
if (!Array.isArray(source.skills) || !Array.isArray(source.inputs) || !Array.isArray(source.outputs) || !Array.isArray(source.steps))
|
|
114
|
+
invalid(label);
|
|
115
|
+
let retry;
|
|
116
|
+
if (source.retry !== undefined) {
|
|
117
|
+
const rawRetry = record(source.retry, `${label}.retry`, ["maxAttempts"]);
|
|
118
|
+
retry = { maxAttempts: integer(rawRetry.maxAttempts, `${label}.retry.maxAttempts`, 1) };
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
id: text(source.id, `${label}.id`),
|
|
122
|
+
uses: text(source.uses, `${label}.uses`),
|
|
123
|
+
...(source.actorRole === undefined ? {} : { actorRole: source.actorRole }),
|
|
124
|
+
securityClass: source.securityClass,
|
|
125
|
+
needs: strings(source.needs, `${label}.needs`),
|
|
126
|
+
enabled: flag(source.enabled, `${label}.enabled`),
|
|
127
|
+
skills: source.skills.map((skill, index) => parseSkillDescriptor(skill, `${label}.skills[${index}]`)),
|
|
128
|
+
inputs: source.inputs.map((input, index) => parseArtifactRequirement(input, `${label}.inputs[${index}]`)),
|
|
129
|
+
outputs: source.outputs.map((output, index) => parseArtifactDeclaration(output, `${label}.outputs[${index}]`)),
|
|
130
|
+
gates: strings(source.gates, `${label}.gates`),
|
|
131
|
+
approval: flag(source.approval, `${label}.approval`),
|
|
132
|
+
authorizationRequired: flag(source.authorizationRequired, `${label}.authorizationRequired`),
|
|
133
|
+
...optionalText(source, "artifactLevel", label),
|
|
134
|
+
...optionalText(source, "objective", label),
|
|
135
|
+
...optionalText(source, "expectedOutcome", label),
|
|
136
|
+
...optionalExpression(source, "when", label),
|
|
137
|
+
...optionalText(source, "action", label),
|
|
138
|
+
...optionalExpression(source, "until", label),
|
|
139
|
+
...(retry === undefined ? {} : { retry }),
|
|
140
|
+
...(source.maxIterations === undefined ? {} : { maxIterations: integer(source.maxIterations, `${label}.maxIterations`, 1) }),
|
|
141
|
+
...(source.independentReviewActor === undefined ? {} : { independentReviewActor: flag(source.independentReviewActor, `${label}.independentReviewActor`) }),
|
|
142
|
+
steps: source.steps.map((step, index) => parseSnapshotStep(step, `${label}.steps[${index}]`)),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function parsePublishing(value, label) {
|
|
146
|
+
const source = record(value, label, ["issueRequired", "knowledgeRequired", "readBackRequired"]);
|
|
147
|
+
return {
|
|
148
|
+
issueRequired: flag(source.issueRequired, `${label}.issueRequired`),
|
|
149
|
+
knowledgeRequired: flag(source.knowledgeRequired, `${label}.knowledgeRequired`),
|
|
150
|
+
...(source.readBackRequired === undefined ? {} : { readBackRequired: flag(source.readBackRequired, `${label}.readBackRequired`) }),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function parseAudit(value, label) {
|
|
154
|
+
const source = record(value, label, ["level", "retention", "recordDecisions", "recordApprovals", "recordActors", "recordPublishing"]);
|
|
155
|
+
if (source.level !== "standard" && source.level !== "complete")
|
|
156
|
+
invalid(`${label}.level`);
|
|
157
|
+
if (source.retention !== undefined && source.retention !== "standard" && source.retention !== "extended")
|
|
158
|
+
invalid(`${label}.retention`);
|
|
159
|
+
return {
|
|
160
|
+
level: source.level,
|
|
161
|
+
...(source.retention === undefined ? {} : { retention: source.retention }),
|
|
162
|
+
...(source.recordDecisions === undefined ? {} : { recordDecisions: flag(source.recordDecisions, `${label}.recordDecisions`) }),
|
|
163
|
+
...(source.recordApprovals === undefined ? {} : { recordApprovals: flag(source.recordApprovals, `${label}.recordApprovals`) }),
|
|
164
|
+
...(source.recordActors === undefined ? {} : { recordActors: flag(source.recordActors, `${label}.recordActors`) }),
|
|
165
|
+
...(source.recordPublishing === undefined ? {} : { recordPublishing: flag(source.recordPublishing, `${label}.recordPublishing`) }),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function parseChangePolicy(value, label) {
|
|
169
|
+
const source = record(value, label, ["kind", "allowedPaths", "digest"]);
|
|
170
|
+
if (source.kind !== "feature" && source.kind !== "documentation-only")
|
|
171
|
+
invalid(`${label}.kind`);
|
|
172
|
+
return {
|
|
173
|
+
kind: source.kind,
|
|
174
|
+
allowedPaths: strings(source.allowedPaths, `${label}.allowedPaths`),
|
|
175
|
+
digest: digest(source.digest, `${label}.digest`),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function parseSnapshotProfile(value, id) {
|
|
179
|
+
const label = `Application Snapshot profiles.${id}`;
|
|
180
|
+
const source = record(value, label, ["id", "order", "steps", "publishing", "audit", "changePolicy"]);
|
|
181
|
+
if (source.id !== id || !Array.isArray(source.steps))
|
|
182
|
+
invalid(`${label}.id`);
|
|
183
|
+
const order = strings(source.order, `${label}.order`);
|
|
184
|
+
const steps = source.steps.map((step, index) => parseSnapshotStep(step, `${label}.steps[${index}]`));
|
|
185
|
+
const topLevelIds = steps.map(({ id: stepId }) => stepId);
|
|
186
|
+
if (new Set(topLevelIds).size !== topLevelIds.length || order.length !== topLevelIds.length || order.some((stepId) => !topLevelIds.includes(stepId)))
|
|
187
|
+
invalid(`${label}.order`);
|
|
188
|
+
const recursiveIds = steps.flatMap(function flatten(step) { return [step.id, ...step.steps.flatMap(flatten)]; });
|
|
189
|
+
if (new Set(recursiveIds).size !== recursiveIds.length)
|
|
190
|
+
invalid(`${label}.steps`);
|
|
191
|
+
return {
|
|
192
|
+
id,
|
|
193
|
+
order,
|
|
194
|
+
steps,
|
|
195
|
+
publishing: parsePublishing(source.publishing, `${label}.publishing`),
|
|
196
|
+
audit: parseAudit(source.audit, `${label}.audit`),
|
|
197
|
+
changePolicy: parseChangePolicy(source.changePolicy, `${label}.changePolicy`),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
function parseWorkflowPackageLock(value) {
|
|
201
|
+
const label = "Application Snapshot workflowPackageLock";
|
|
202
|
+
const source = record(value, label, ["version", "contentDigest", "files", "packageSkills"]);
|
|
203
|
+
if (source.version !== 1 || !Array.isArray(source.files) || !Array.isArray(source.packageSkills))
|
|
204
|
+
invalid(label);
|
|
205
|
+
return {
|
|
206
|
+
version: 1,
|
|
207
|
+
contentDigest: digest(source.contentDigest, `${label}.contentDigest`),
|
|
208
|
+
files: source.files.map((file, index) => {
|
|
209
|
+
const item = record(file, `${label}.files[${index}]`, ["path", "digest"]);
|
|
210
|
+
return { path: text(item.path, `${label}.files[${index}].path`), digest: digest(item.digest, `${label}.files[${index}].digest`) };
|
|
211
|
+
}),
|
|
212
|
+
packageSkills: source.packageSkills.map((skill, index) => {
|
|
213
|
+
const item = record(skill, `${label}.packageSkills[${index}]`, ["ref", "digest"]);
|
|
214
|
+
return { ref: text(item.ref, `${label}.packageSkills[${index}].ref`), digest: digest(item.digest, `${label}.packageSkills[${index}].digest`) };
|
|
215
|
+
}),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function parseGatePolicy(value) {
|
|
219
|
+
const source = record(value, "Application Snapshot gatePolicy", ["requiredGateIds", "configuredGateIds"]);
|
|
220
|
+
const requiredGateIds = strings(source.requiredGateIds, "Application Snapshot gatePolicy.requiredGateIds");
|
|
221
|
+
const configuredGateIds = strings(source.configuredGateIds, "Application Snapshot gatePolicy.configuredGateIds");
|
|
222
|
+
if (requiredGateIds.some((id) => !configuredGateIds.includes(id)))
|
|
223
|
+
invalid("Application Snapshot gatePolicy.requiredGateIds");
|
|
224
|
+
return { requiredGateIds, configuredGateIds };
|
|
225
|
+
}
|
|
226
|
+
function parseProfileId(value, label) {
|
|
227
|
+
if (value !== "quick" && value !== "standard" && value !== "governed")
|
|
228
|
+
invalid(label);
|
|
229
|
+
return value;
|
|
230
|
+
}
|
|
231
|
+
export function parseApplicationSnapshot(value) {
|
|
232
|
+
try {
|
|
233
|
+
const source = record(value, "Application Snapshot", [
|
|
234
|
+
"version", "workflowRef", "packageDigest", "selectedProfile", "profiles", "workflowPackageLock", "skillLock",
|
|
235
|
+
"skillResolution", "gatePolicy", "changePolicy", "source", "gates", "leaseTtlSeconds", "maxStageRetries", "createdAt",
|
|
236
|
+
]);
|
|
237
|
+
if (source.version !== 1)
|
|
238
|
+
invalid("Application Snapshot version");
|
|
239
|
+
const selectedProfile = parseProfileId(source.selectedProfile, "Application Snapshot selectedProfile");
|
|
240
|
+
const rawProfiles = record(source.profiles, "Application Snapshot profiles", ["quick", "standard", "governed"]);
|
|
241
|
+
const profiles = {
|
|
242
|
+
quick: parseSnapshotProfile(rawProfiles.quick, "quick"),
|
|
243
|
+
standard: parseSnapshotProfile(rawProfiles.standard, "standard"),
|
|
244
|
+
governed: parseSnapshotProfile(rawProfiles.governed, "governed"),
|
|
245
|
+
};
|
|
246
|
+
const workflowPackageLock = parseWorkflowPackageLock(source.workflowPackageLock);
|
|
247
|
+
const packageDigest = digest(source.packageDigest, "Application Snapshot packageDigest");
|
|
248
|
+
if (packageDigest !== workflowPackageLock.contentDigest)
|
|
249
|
+
invalid("Application Snapshot packageDigest");
|
|
250
|
+
const skillResolution = record(source.skillResolution, "Application Snapshot skillResolution", ["provider", "additionalGlobalRootIds"]);
|
|
251
|
+
const providers = ["codex", "claude", "cursor", "generic"];
|
|
252
|
+
if (!providers.includes(skillResolution.provider))
|
|
253
|
+
invalid("Application Snapshot skillResolution.provider");
|
|
254
|
+
if (!Array.isArray(source.gates))
|
|
255
|
+
invalid("Application Snapshot gates");
|
|
256
|
+
const gates = source.gates.map((gate, index) => {
|
|
257
|
+
const item = record(gate, `Application Snapshot gates[${index}]`, ["id", "evidence"]);
|
|
258
|
+
if (item.evidence !== "trusted" && item.evidence !== "attested")
|
|
259
|
+
invalid(`Application Snapshot gates[${index}].evidence`);
|
|
260
|
+
return {
|
|
261
|
+
id: text(item.id, `Application Snapshot gates[${index}].id`),
|
|
262
|
+
evidence: item.evidence,
|
|
263
|
+
};
|
|
264
|
+
});
|
|
265
|
+
const createdAt = text(source.createdAt, "Application Snapshot createdAt");
|
|
266
|
+
if (!Number.isFinite(Date.parse(createdAt)) || new Date(createdAt).toISOString() !== createdAt)
|
|
267
|
+
invalid("Application Snapshot createdAt");
|
|
268
|
+
const changePolicy = parseChangePolicy(source.changePolicy, "Application Snapshot changePolicy");
|
|
269
|
+
if (JSON.stringify(changePolicy) !== JSON.stringify(profiles[selectedProfile].changePolicy))
|
|
270
|
+
invalid("Application Snapshot changePolicy");
|
|
271
|
+
return {
|
|
272
|
+
version: 1,
|
|
273
|
+
workflowRef: text(source.workflowRef, "Application Snapshot workflowRef"),
|
|
274
|
+
packageDigest,
|
|
275
|
+
selectedProfile,
|
|
276
|
+
profiles,
|
|
277
|
+
workflowPackageLock,
|
|
278
|
+
skillLock: parseSkillLock(source.skillLock),
|
|
279
|
+
skillResolution: {
|
|
280
|
+
provider: skillResolution.provider,
|
|
281
|
+
additionalGlobalRootIds: strings(skillResolution.additionalGlobalRootIds, "Application Snapshot skillResolution.additionalGlobalRootIds").map((id) => {
|
|
282
|
+
if (!/^[a-z][a-z0-9-]{0,62}$/u.test(id))
|
|
283
|
+
invalid("Application Snapshot skillResolution.additionalGlobalRootIds");
|
|
284
|
+
return id;
|
|
285
|
+
}),
|
|
286
|
+
},
|
|
287
|
+
gatePolicy: parseGatePolicy(source.gatePolicy),
|
|
288
|
+
changePolicy,
|
|
289
|
+
source: parseArtifactReference(source.source, "Application Snapshot source"),
|
|
290
|
+
gates,
|
|
291
|
+
leaseTtlSeconds: integer(source.leaseTtlSeconds, "Application Snapshot leaseTtlSeconds", 60, 86_400),
|
|
292
|
+
maxStageRetries: integer(source.maxStageRetries, "Application Snapshot maxStageRetries", 0, 10),
|
|
293
|
+
createdAt,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
if (error instanceof ApplicationSnapshotError)
|
|
298
|
+
throw error;
|
|
299
|
+
throw new ApplicationSnapshotError(error instanceof Error ? error.message : "Application Snapshot 无法解析。");
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
export function snapshotStep(step, skills) {
|
|
303
|
+
return {
|
|
304
|
+
id: step.id,
|
|
305
|
+
uses: step.uses,
|
|
306
|
+
...(step.actorRole === undefined ? {} : { actorRole: step.actorRole }),
|
|
307
|
+
securityClass: step.securityClass,
|
|
308
|
+
needs: [...step.needs],
|
|
309
|
+
enabled: step.enabled,
|
|
310
|
+
skills: step.skills.map((skill) => skills.get(skill.requestedRef) ?? skills.get(skill.ref)),
|
|
311
|
+
inputs: step.inputs.map((input) => ({ ...input })),
|
|
312
|
+
outputs: step.outputs.map((output) => ({ ...output })),
|
|
313
|
+
gates: [...step.gates],
|
|
314
|
+
approval: step.approval,
|
|
315
|
+
authorizationRequired: step.authorizationRequired,
|
|
316
|
+
...(step.artifactLevel === undefined ? {} : { artifactLevel: step.artifactLevel }),
|
|
317
|
+
...(step.objective === undefined ? {} : { objective: step.objective }),
|
|
318
|
+
...(step.expectedOutcome === undefined ? {} : { expectedOutcome: step.expectedOutcome }),
|
|
319
|
+
...(step.when === undefined ? {} : { when: step.when }),
|
|
320
|
+
...(step.action === undefined ? {} : { action: step.action }),
|
|
321
|
+
...(step.until === undefined ? {} : { until: step.until }),
|
|
322
|
+
...(step.retry === undefined ? {} : { retry: { ...step.retry } }),
|
|
323
|
+
...(step.maxIterations === undefined ? {} : { maxIterations: step.maxIterations }),
|
|
324
|
+
...(step.independentReviewActor === undefined ? {} : { independentReviewActor: step.independentReviewActor }),
|
|
325
|
+
steps: step.steps.map((child) => snapshotStep(child, skills)),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
export function snapshotProfile(workflow, skills) {
|
|
329
|
+
return {
|
|
330
|
+
id: workflow.profile.id,
|
|
331
|
+
order: [...workflow.order],
|
|
332
|
+
steps: workflow.steps.map((step) => snapshotStep(step, skills)),
|
|
333
|
+
publishing: { ...workflow.profile.publishing },
|
|
334
|
+
audit: { ...workflow.profile.audit },
|
|
335
|
+
changePolicy: { ...workflow.changePolicy, allowedPaths: [...workflow.changePolicy.allowedPaths] },
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/application/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ProjectGatePolicy } from "../engine/compiler.js";
|
|
2
|
+
import type { StartInput, StartResult } from "../protocol/application.js";
|
|
3
|
+
import { type BuiltinConnectorRuntime, type BuiltinKnowledgeTargetInput } from "../registry/connectors/runtime.js";
|
|
4
|
+
import type { AdditionalGlobalRoot, ResolvedSkill, SkillProvider } from "../registry/skills/types.js";
|
|
5
|
+
import type { WorkflowPackage } from "../workflow-package/types.js";
|
|
6
|
+
export interface StartDependencies {
|
|
7
|
+
provider: SkillProvider;
|
|
8
|
+
home: string;
|
|
9
|
+
now(): Date;
|
|
10
|
+
workflowTrust?: {
|
|
11
|
+
interactive: boolean;
|
|
12
|
+
actor: string;
|
|
13
|
+
};
|
|
14
|
+
connectorRuntime?: BuiltinConnectorRuntime;
|
|
15
|
+
}
|
|
16
|
+
export declare class ApplicationStartError extends Error {
|
|
17
|
+
readonly code: `WSSPEC_${string}`;
|
|
18
|
+
readonly details?: unknown | undefined;
|
|
19
|
+
constructor(code: `WSSPEC_${string}`, message: string, details?: unknown | undefined);
|
|
20
|
+
}
|
|
21
|
+
export interface ProjectConfiguration {
|
|
22
|
+
leaseTtlSeconds: number;
|
|
23
|
+
maxStageRetries: number;
|
|
24
|
+
gatePolicy: ProjectGatePolicy;
|
|
25
|
+
documentationAllowedPaths?: string[];
|
|
26
|
+
additionalGlobalRoots?: AdditionalGlobalRoot[];
|
|
27
|
+
worktreeRoot: string;
|
|
28
|
+
branchPrefix: string;
|
|
29
|
+
knowledgeTarget?: BuiltinKnowledgeTargetInput;
|
|
30
|
+
}
|
|
31
|
+
export declare function projectConfiguration(raw: unknown, pkg: WorkflowPackage): ProjectConfiguration;
|
|
32
|
+
export declare function resolveProjectWorkflowContext(input: {
|
|
33
|
+
root: string;
|
|
34
|
+
pkg: WorkflowPackage;
|
|
35
|
+
provider: SkillProvider;
|
|
36
|
+
home: string;
|
|
37
|
+
config?: unknown;
|
|
38
|
+
allowMissingConfig?: boolean;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
configuration: ProjectConfiguration;
|
|
41
|
+
skills: ResolvedSkill[];
|
|
42
|
+
}>;
|
|
43
|
+
export declare function startApplication(input: StartInput, dependencies: StartDependencies): Promise<StartResult>;
|