wingfoil 0.2.1
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 -0
- package/README.md +334 -0
- package/dist/cli/error.d.ts +11 -0
- package/dist/cli/error.d.ts.map +1 -0
- package/dist/cli/error.js +27 -0
- package/dist/cli/error.js.map +1 -0
- package/dist/cli/exit.d.ts +19 -0
- package/dist/cli/exit.d.ts.map +1 -0
- package/dist/cli/exit.js +14 -0
- package/dist/cli/exit.js.map +1 -0
- package/dist/cli/index.d.ts +28 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +36 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-command.d.ts +34 -0
- package/dist/cli/init-command.d.ts.map +1 -0
- package/dist/cli/init-command.js +100 -0
- package/dist/cli/init-command.js.map +1 -0
- package/dist/cli/mcp-command.d.ts +24 -0
- package/dist/cli/mcp-command.d.ts.map +1 -0
- package/dist/cli/mcp-command.js +42 -0
- package/dist/cli/mcp-command.js.map +1 -0
- package/dist/cli/output.d.ts +13 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +28 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/program.d.ts +12 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +279 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/registrar.d.ts +69 -0
- package/dist/cli/registrar.d.ts.map +1 -0
- package/dist/cli/registrar.js +82 -0
- package/dist/cli/registrar.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +45 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/approval-authority.d.ts +83 -0
- package/dist/core/approval-authority.d.ts.map +1 -0
- package/dist/core/approval-authority.js +112 -0
- package/dist/core/approval-authority.js.map +1 -0
- package/dist/core/builtin-asset.d.ts +71 -0
- package/dist/core/builtin-asset.d.ts.map +1 -0
- package/dist/core/builtin-asset.js +137 -0
- package/dist/core/builtin-asset.js.map +1 -0
- package/dist/core/builtin-integrity.d.ts +32 -0
- package/dist/core/builtin-integrity.d.ts.map +1 -0
- package/dist/core/builtin-integrity.js +148 -0
- package/dist/core/builtin-integrity.js.map +1 -0
- package/dist/core/confinement.d.ts +57 -0
- package/dist/core/confinement.d.ts.map +1 -0
- package/dist/core/confinement.js +108 -0
- package/dist/core/confinement.js.map +1 -0
- package/dist/core/context.d.ts +187 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +192 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/directive-assign.d.ts +131 -0
- package/dist/core/directive-assign.d.ts.map +1 -0
- package/dist/core/directive-assign.js +352 -0
- package/dist/core/directive-assign.js.map +1 -0
- package/dist/core/directives-list.d.ts +80 -0
- package/dist/core/directives-list.d.ts.map +1 -0
- package/dist/core/directives-list.js +148 -0
- package/dist/core/directives-list.js.map +1 -0
- package/dist/core/exit-code.d.ts +85 -0
- package/dist/core/exit-code.d.ts.map +1 -0
- package/dist/core/exit-code.js +163 -0
- package/dist/core/exit-code.js.map +1 -0
- package/dist/core/git-identity.d.ts +32 -0
- package/dist/core/git-identity.d.ts.map +1 -0
- package/dist/core/git-identity.js +72 -0
- package/dist/core/git-identity.js.map +1 -0
- package/dist/core/index.d.ts +388 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +1331 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/init.d.ts +78 -0
- package/dist/core/init.d.ts.map +1 -0
- package/dist/core/init.js +167 -0
- package/dist/core/init.js.map +1 -0
- package/dist/core/loaders.d.ts +174 -0
- package/dist/core/loaders.d.ts.map +1 -0
- package/dist/core/loaders.js +364 -0
- package/dist/core/loaders.js.map +1 -0
- package/dist/core/memory-add-type.d.ts +43 -0
- package/dist/core/memory-add-type.d.ts.map +1 -0
- package/dist/core/memory-add-type.js +151 -0
- package/dist/core/memory-add-type.js.map +1 -0
- package/dist/core/memory-transition.d.ts +111 -0
- package/dist/core/memory-transition.d.ts.map +1 -0
- package/dist/core/memory-transition.js +269 -0
- package/dist/core/memory-transition.js.map +1 -0
- package/dist/core/registry.d.ts +189 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +66 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/relevance.d.ts +86 -0
- package/dist/core/relevance.d.ts.map +1 -0
- package/dist/core/relevance.js +258 -0
- package/dist/core/relevance.js.map +1 -0
- package/dist/core/require-reason.d.ts +27 -0
- package/dist/core/require-reason.d.ts.map +1 -0
- package/dist/core/require-reason.js +95 -0
- package/dist/core/require-reason.js.map +1 -0
- package/dist/core/types.d.ts +45 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +22 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/usage-error.d.ts +20 -0
- package/dist/core/usage-error.d.ts.map +1 -0
- package/dist/core/usage-error.js +29 -0
- package/dist/core/usage-error.js.map +1 -0
- package/dist/core/write-guard.d.ts +99 -0
- package/dist/core/write-guard.d.ts.map +1 -0
- package/dist/core/write-guard.js +247 -0
- package/dist/core/write-guard.js.map +1 -0
- package/dist/directives/create.d.ts +47 -0
- package/dist/directives/create.d.ts.map +1 -0
- package/dist/directives/create.js +82 -0
- package/dist/directives/create.js.map +1 -0
- package/dist/directives/index.d.ts +20 -0
- package/dist/directives/index.d.ts.map +1 -0
- package/dist/directives/index.js +32 -0
- package/dist/directives/index.js.map +1 -0
- package/dist/directives/roles-edit.d.ts +53 -0
- package/dist/directives/roles-edit.d.ts.map +1 -0
- package/dist/directives/roles-edit.js +286 -0
- package/dist/directives/roles-edit.js.map +1 -0
- package/dist/directives/schema.d.ts +65 -0
- package/dist/directives/schema.d.ts.map +1 -0
- package/dist/directives/schema.js +68 -0
- package/dist/directives/schema.js.map +1 -0
- package/dist/dna/edit.d.ts +61 -0
- package/dist/dna/edit.d.ts.map +1 -0
- package/dist/dna/edit.js +429 -0
- package/dist/dna/edit.js.map +1 -0
- package/dist/dna/index.d.ts +24 -0
- package/dist/dna/index.d.ts.map +1 -0
- package/dist/dna/index.js +59 -0
- package/dist/dna/index.js.map +1 -0
- package/dist/dna/mutate.d.ts +74 -0
- package/dist/dna/mutate.d.ts.map +1 -0
- package/dist/dna/mutate.js +318 -0
- package/dist/dna/mutate.js.map +1 -0
- package/dist/dna/path.d.ts +175 -0
- package/dist/dna/path.d.ts.map +1 -0
- package/dist/dna/path.js +289 -0
- package/dist/dna/path.js.map +1 -0
- package/dist/dna/roles.d.ts +57 -0
- package/dist/dna/roles.d.ts.map +1 -0
- package/dist/dna/roles.js +50 -0
- package/dist/dna/roles.js.map +1 -0
- package/dist/dna/schema.d.ts +172 -0
- package/dist/dna/schema.d.ts.map +1 -0
- package/dist/dna/schema.js +182 -0
- package/dist/dna/schema.js.map +1 -0
- package/dist/dna/set.d.ts +145 -0
- package/dist/dna/set.d.ts.map +1 -0
- package/dist/dna/set.js +428 -0
- package/dist/dna/set.js.map +1 -0
- package/dist/mcp/dna-resource.d.ts +16 -0
- package/dist/mcp/dna-resource.d.ts.map +1 -0
- package/dist/mcp/dna-resource.js +56 -0
- package/dist/mcp/dna-resource.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +60 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/memory-resource.d.ts +17 -0
- package/dist/mcp/memory-resource.d.ts.map +1 -0
- package/dist/mcp/memory-resource.js +133 -0
- package/dist/mcp/memory-resource.js.map +1 -0
- package/dist/mcp/prompt.d.ts +48 -0
- package/dist/mcp/prompt.d.ts.map +1 -0
- package/dist/mcp/prompt.js +176 -0
- package/dist/mcp/prompt.js.map +1 -0
- package/dist/mcp/read-only.d.ts +42 -0
- package/dist/mcp/read-only.d.ts.map +1 -0
- package/dist/mcp/read-only.js +93 -0
- package/dist/mcp/read-only.js.map +1 -0
- package/dist/mcp/registrar.d.ts +54 -0
- package/dist/mcp/registrar.d.ts.map +1 -0
- package/dist/mcp/registrar.js +72 -0
- package/dist/mcp/registrar.js.map +1 -0
- package/dist/mcp/server.d.ts +58 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +64 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/workflow-resource.d.ts +17 -0
- package/dist/mcp/workflow-resource.d.ts.map +1 -0
- package/dist/mcp/workflow-resource.js +63 -0
- package/dist/mcp/workflow-resource.js.map +1 -0
- package/dist/memory/add.d.ts +50 -0
- package/dist/memory/add.d.ts.map +1 -0
- package/dist/memory/add.js +131 -0
- package/dist/memory/add.js.map +1 -0
- package/dist/memory/audit.d.ts +177 -0
- package/dist/memory/audit.d.ts.map +1 -0
- package/dist/memory/audit.js +287 -0
- package/dist/memory/audit.js.map +1 -0
- package/dist/memory/commit-message.d.ts +146 -0
- package/dist/memory/commit-message.d.ts.map +1 -0
- package/dist/memory/commit-message.js +203 -0
- package/dist/memory/commit-message.js.map +1 -0
- package/dist/memory/entry.d.ts +56 -0
- package/dist/memory/entry.d.ts.map +1 -0
- package/dist/memory/entry.js +28 -0
- package/dist/memory/entry.js.map +1 -0
- package/dist/memory/frontmatter-edit.d.ts +68 -0
- package/dist/memory/frontmatter-edit.d.ts.map +1 -0
- package/dist/memory/frontmatter-edit.js +333 -0
- package/dist/memory/frontmatter-edit.js.map +1 -0
- package/dist/memory/git-log.d.ts +32 -0
- package/dist/memory/git-log.d.ts.map +1 -0
- package/dist/memory/git-log.js +100 -0
- package/dist/memory/git-log.js.map +1 -0
- package/dist/memory/history.d.ts +142 -0
- package/dist/memory/history.d.ts.map +1 -0
- package/dist/memory/history.js +250 -0
- package/dist/memory/history.js.map +1 -0
- package/dist/memory/index.d.ts +58 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +107 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/query.d.ts +150 -0
- package/dist/memory/query.d.ts.map +1 -0
- package/dist/memory/query.js +307 -0
- package/dist/memory/query.js.map +1 -0
- package/dist/memory/reject.d.ts +11 -0
- package/dist/memory/reject.d.ts.map +1 -0
- package/dist/memory/reject.js +32 -0
- package/dist/memory/reject.js.map +1 -0
- package/dist/memory/schema.d.ts +104 -0
- package/dist/memory/schema.d.ts.map +1 -0
- package/dist/memory/schema.js +161 -0
- package/dist/memory/schema.js.map +1 -0
- package/dist/memory/state-machine.d.ts +166 -0
- package/dist/memory/state-machine.d.ts.map +1 -0
- package/dist/memory/state-machine.js +431 -0
- package/dist/memory/state-machine.js.map +1 -0
- package/dist/memory/submit.d.ts +11 -0
- package/dist/memory/submit.d.ts.map +1 -0
- package/dist/memory/submit.js +44 -0
- package/dist/memory/submit.js.map +1 -0
- package/dist/storage/builtin-directives.d.ts +54 -0
- package/dist/storage/builtin-directives.d.ts.map +1 -0
- package/dist/storage/builtin-directives.js +152 -0
- package/dist/storage/builtin-directives.js.map +1 -0
- package/dist/storage/commit.d.ts +92 -0
- package/dist/storage/commit.d.ts.map +1 -0
- package/dist/storage/commit.js +201 -0
- package/dist/storage/commit.js.map +1 -0
- package/dist/storage/confinement.d.ts +93 -0
- package/dist/storage/confinement.d.ts.map +1 -0
- package/dist/storage/confinement.js +164 -0
- package/dist/storage/confinement.js.map +1 -0
- package/dist/storage/document.d.ts +27 -0
- package/dist/storage/document.d.ts.map +1 -0
- package/dist/storage/document.js +52 -0
- package/dist/storage/document.js.map +1 -0
- package/dist/storage/errors.d.ts +36 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +46 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/frontmatter.d.ts +27 -0
- package/dist/storage/frontmatter.d.ts.map +1 -0
- package/dist/storage/frontmatter.js +37 -0
- package/dist/storage/frontmatter.js.map +1 -0
- package/dist/storage/git-root.d.ts +17 -0
- package/dist/storage/git-root.d.ts.map +1 -0
- package/dist/storage/git-root.js +49 -0
- package/dist/storage/git-root.js.map +1 -0
- package/dist/storage/index.d.ts +29 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +66 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/init-state.d.ts +9 -0
- package/dist/storage/init-state.d.ts.map +1 -0
- package/dist/storage/init-state.js +24 -0
- package/dist/storage/init-state.js.map +1 -0
- package/dist/storage/layout.d.ts +51 -0
- package/dist/storage/layout.d.ts.map +1 -0
- package/dist/storage/layout.js +88 -0
- package/dist/storage/layout.js.map +1 -0
- package/dist/storage/memory-path.d.ts +72 -0
- package/dist/storage/memory-path.d.ts.map +1 -0
- package/dist/storage/memory-path.js +127 -0
- package/dist/storage/memory-path.js.map +1 -0
- package/dist/storage/snapshot.d.ts +16 -0
- package/dist/storage/snapshot.d.ts.map +1 -0
- package/dist/storage/snapshot.js +72 -0
- package/dist/storage/snapshot.js.map +1 -0
- package/dist/storage/templates.d.ts +88 -0
- package/dist/storage/templates.d.ts.map +1 -0
- package/dist/storage/templates.js +422 -0
- package/dist/storage/templates.js.map +1 -0
- package/dist/validation/error-mapper.d.ts +16 -0
- package/dist/validation/error-mapper.d.ts.map +1 -0
- package/dist/validation/error-mapper.js +18 -0
- package/dist/validation/error-mapper.js.map +1 -0
- package/dist/validation/errors.d.ts +69 -0
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js +69 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/id.d.ts +16 -0
- package/dist/validation/id.d.ts.map +1 -0
- package/dist/validation/id.js +177 -0
- package/dist/validation/id.js.map +1 -0
- package/dist/validation/index.d.ts +18 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +37 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/secret-scan.d.ts +129 -0
- package/dist/validation/secret-scan.d.ts.map +1 -0
- package/dist/validation/secret-scan.js +367 -0
- package/dist/validation/secret-scan.js.map +1 -0
- package/dist/validation/two-pass.d.ts +24 -0
- package/dist/validation/two-pass.d.ts.map +1 -0
- package/dist/validation/two-pass.js +24 -0
- package/dist/validation/two-pass.js.map +1 -0
- package/dist/validation/warning.d.ts +31 -0
- package/dist/validation/warning.d.ts.map +1 -0
- package/dist/validation/warning.js +81 -0
- package/dist/validation/warning.js.map +1 -0
- package/dist/validation/yaml.d.ts +9 -0
- package/dist/validation/yaml.d.ts.map +1 -0
- package/dist/validation/yaml.js +30 -0
- package/dist/validation/yaml.js.map +1 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +16 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/schema.d.ts +89 -0
- package/dist/workflow/schema.d.ts.map +1 -0
- package/dist/workflow/schema.js +73 -0
- package/dist/workflow/schema.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Phase = exports.Workflow = exports.WorkflowsYaml = exports.MODULE_NAME = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `workflow` module — Project Workflow pillar; phases/steps/atomic actions, `include()` composition
|
|
6
|
+
* (P4.1). `workflows.yaml`'s Layer-1 manifest + Layer-2 Workflow DSL schemas
|
|
7
|
+
* (spec-003-workflows-yaml-schema) live here — the pillar owns its own independent schema
|
|
8
|
+
* (REQ-SYS-02); `src/core`'s loader wires it through the shared validation pipeline. Further
|
|
9
|
+
* Workflow behavior (engine execution, `wingfoil workflow *`) lands in later tasks.
|
|
10
|
+
*/
|
|
11
|
+
exports.MODULE_NAME = 'workflow';
|
|
12
|
+
var schema_1 = require("./schema");
|
|
13
|
+
Object.defineProperty(exports, "WorkflowsYaml", { enumerable: true, get: function () { return schema_1.WorkflowsYaml; } });
|
|
14
|
+
Object.defineProperty(exports, "Workflow", { enumerable: true, get: function () { return schema_1.Workflow; } });
|
|
15
|
+
Object.defineProperty(exports, "Phase", { enumerable: true, get: function () { return schema_1.Phase; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACU,QAAA,WAAW,GAAG,UAAmB,CAAC;AAE/C,mCAA0D;AAAjD,uGAAA,aAAa,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,+FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workflows.yaml` manifest (Layer 1) + Workflow DSL (Layer 2) schemas
|
|
3
|
+
* (spec-003-workflows-yaml-schema, P4.1). This is one of the three independent per-pillar schemas
|
|
4
|
+
* task-004-decoupled-pillars keeps decoupled (REQ-SYS-02): neither layer depends on `memory.yaml`'s
|
|
5
|
+
* or `dna.yaml`'s schema. Cross-file concerns spec-003 itself calls out — resolving each `include`
|
|
6
|
+
* path against the filesystem, and requiring at least one loaded workflow to be `kind: main` — need
|
|
7
|
+
* the caller to have actually loaded the referenced files, so per spec-009-validation-strategy §1
|
|
8
|
+
* ("Cross-file ... these require the caller to have already loaded ... so they run as a list of
|
|
9
|
+
* caller-supplied SemanticCheck functions") those two checks live in the loader
|
|
10
|
+
* (`src/core/loaders.ts`), not in this schema module.
|
|
11
|
+
*
|
|
12
|
+
* Every object node is `.passthrough()` per spec-009 §2.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
/**
|
|
16
|
+
* Layer 1 — the main manifest (`.wingfoil/workflows.yaml`). `include` (singular) is the canonical
|
|
17
|
+
* key per spec-003's required rename from the legacy plural `includes:`; a document that still uses
|
|
18
|
+
* `includes:` fails Pass 1 here (missing required `include`) and `includes` itself is preserved only
|
|
19
|
+
* as an unknown, passed-through key.
|
|
20
|
+
*/
|
|
21
|
+
export declare const WorkflowsYaml: z.ZodObject<{
|
|
22
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
include: z.ZodArray<z.ZodString>;
|
|
24
|
+
}, z.core.$loose>;
|
|
25
|
+
export type WorkflowsYaml = z.infer<typeof WorkflowsYaml>;
|
|
26
|
+
/**
|
|
27
|
+
* One `phases[]` entry of a Layer-2 workflow definition (spec-003) — a named step with its optional
|
|
28
|
+
* `role`, `actions`, `include`, `iterate_over`/`where`, `produces`, `checks`, `approval`, and
|
|
29
|
+
* `fallback`. `.passthrough()` per spec-009 §2.
|
|
30
|
+
*/
|
|
31
|
+
export declare const Phase: z.ZodObject<{
|
|
32
|
+
name: z.ZodString;
|
|
33
|
+
description: z.ZodOptional<z.ZodString>;
|
|
34
|
+
role: z.ZodOptional<z.ZodString>;
|
|
35
|
+
optional: z.ZodDefault<z.ZodBoolean>;
|
|
36
|
+
actions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
37
|
+
include: z.ZodOptional<z.ZodString>;
|
|
38
|
+
iterate_over: z.ZodOptional<z.ZodString>;
|
|
39
|
+
where: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>;
|
|
40
|
+
produces: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
|
+
checks: z.ZodOptional<z.ZodObject<{
|
|
42
|
+
pre: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
43
|
+
post: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
44
|
+
}, z.core.$loose>>;
|
|
45
|
+
approval: z.ZodOptional<z.ZodObject<{
|
|
46
|
+
by_role: z.ZodString;
|
|
47
|
+
}, z.core.$loose>>;
|
|
48
|
+
fallback: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
step: z.ZodString;
|
|
50
|
+
set_state: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$loose>>;
|
|
52
|
+
}, z.core.$loose>;
|
|
53
|
+
/** Parsed shape of the {@link Phase} schema. */
|
|
54
|
+
export type Phase = z.infer<typeof Phase>;
|
|
55
|
+
/** Layer 2 — one workflow-definition file (`.wingfoil/workflows/**\/*.yaml`). */
|
|
56
|
+
export declare const Workflow: z.ZodObject<{
|
|
57
|
+
name: z.ZodString;
|
|
58
|
+
kind: z.ZodEnum<{
|
|
59
|
+
sub: "sub";
|
|
60
|
+
main: "main";
|
|
61
|
+
}>;
|
|
62
|
+
description: z.ZodOptional<z.ZodString>;
|
|
63
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
element: z.ZodOptional<z.ZodString>;
|
|
65
|
+
phases: z.ZodArray<z.ZodObject<{
|
|
66
|
+
name: z.ZodString;
|
|
67
|
+
description: z.ZodOptional<z.ZodString>;
|
|
68
|
+
role: z.ZodOptional<z.ZodString>;
|
|
69
|
+
optional: z.ZodDefault<z.ZodBoolean>;
|
|
70
|
+
actions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
71
|
+
include: z.ZodOptional<z.ZodString>;
|
|
72
|
+
iterate_over: z.ZodOptional<z.ZodString>;
|
|
73
|
+
where: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>;
|
|
74
|
+
produces: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
checks: z.ZodOptional<z.ZodObject<{
|
|
76
|
+
pre: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
77
|
+
post: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
78
|
+
}, z.core.$loose>>;
|
|
79
|
+
approval: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
by_role: z.ZodString;
|
|
81
|
+
}, z.core.$loose>>;
|
|
82
|
+
fallback: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
step: z.ZodString;
|
|
84
|
+
set_state: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$loose>>;
|
|
86
|
+
}, z.core.$loose>>;
|
|
87
|
+
}, z.core.$loose>;
|
|
88
|
+
export type Workflow = z.infer<typeof Workflow>;
|
|
89
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/workflow/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;iBAKV,CAAC;AACjB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAY1D;;;;GAIG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;iBAkBF,CAAC;AACjB,gDAAgD;AAChD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C,iFAAiF;AACjF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASL,CAAC;AACjB,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Workflow = exports.Phase = exports.WorkflowsYaml = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `workflows.yaml` manifest (Layer 1) + Workflow DSL (Layer 2) schemas
|
|
6
|
+
* (spec-003-workflows-yaml-schema, P4.1). This is one of the three independent per-pillar schemas
|
|
7
|
+
* task-004-decoupled-pillars keeps decoupled (REQ-SYS-02): neither layer depends on `memory.yaml`'s
|
|
8
|
+
* or `dna.yaml`'s schema. Cross-file concerns spec-003 itself calls out — resolving each `include`
|
|
9
|
+
* path against the filesystem, and requiring at least one loaded workflow to be `kind: main` — need
|
|
10
|
+
* the caller to have actually loaded the referenced files, so per spec-009-validation-strategy §1
|
|
11
|
+
* ("Cross-file ... these require the caller to have already loaded ... so they run as a list of
|
|
12
|
+
* caller-supplied SemanticCheck functions") those two checks live in the loader
|
|
13
|
+
* (`src/core/loaders.ts`), not in this schema module.
|
|
14
|
+
*
|
|
15
|
+
* Every object node is `.passthrough()` per spec-009 §2.
|
|
16
|
+
*/
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
/**
|
|
19
|
+
* Layer 1 — the main manifest (`.wingfoil/workflows.yaml`). `include` (singular) is the canonical
|
|
20
|
+
* key per spec-003's required rename from the legacy plural `includes:`; a document that still uses
|
|
21
|
+
* `includes:` fails Pass 1 here (missing required `include`) and `includes` itself is preserved only
|
|
22
|
+
* as an unknown, passed-through key.
|
|
23
|
+
*/
|
|
24
|
+
exports.WorkflowsYaml = zod_1.z
|
|
25
|
+
.object({
|
|
26
|
+
version: zod_1.z.number().positive().optional(),
|
|
27
|
+
include: zod_1.z.array(zod_1.z.string()).min(1),
|
|
28
|
+
})
|
|
29
|
+
.passthrough();
|
|
30
|
+
/** Free-form assertion string, e.g. `tests.coverage(min: 80)`, `frontmatter.required: [title]`. */
|
|
31
|
+
const Check = zod_1.z.string();
|
|
32
|
+
const WhereValue = zod_1.z.union([
|
|
33
|
+
zod_1.z.string(),
|
|
34
|
+
zod_1.z.number(),
|
|
35
|
+
zod_1.z.boolean(),
|
|
36
|
+
zod_1.z.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()])),
|
|
37
|
+
]);
|
|
38
|
+
/**
|
|
39
|
+
* One `phases[]` entry of a Layer-2 workflow definition (spec-003) — a named step with its optional
|
|
40
|
+
* `role`, `actions`, `include`, `iterate_over`/`where`, `produces`, `checks`, `approval`, and
|
|
41
|
+
* `fallback`. `.passthrough()` per spec-009 §2.
|
|
42
|
+
*/
|
|
43
|
+
exports.Phase = zod_1.z
|
|
44
|
+
.object({
|
|
45
|
+
name: zod_1.z.string(),
|
|
46
|
+
description: zod_1.z.string().optional(),
|
|
47
|
+
role: zod_1.z.string().optional(),
|
|
48
|
+
optional: zod_1.z.boolean().default(false),
|
|
49
|
+
actions: zod_1.z.array(zod_1.z.string()).optional(),
|
|
50
|
+
include: zod_1.z.string().optional(),
|
|
51
|
+
iterate_over: zod_1.z.string().optional(),
|
|
52
|
+
where: zod_1.z.record(zod_1.z.string(), WhereValue).optional(),
|
|
53
|
+
produces: zod_1.z.array(zod_1.z.string()).optional(),
|
|
54
|
+
checks: zod_1.z
|
|
55
|
+
.object({ pre: zod_1.z.array(Check).optional(), post: zod_1.z.array(Check).optional() })
|
|
56
|
+
.passthrough()
|
|
57
|
+
.optional(),
|
|
58
|
+
approval: zod_1.z.object({ by_role: zod_1.z.string() }).passthrough().optional(),
|
|
59
|
+
fallback: zod_1.z.object({ step: zod_1.z.string(), set_state: zod_1.z.string().optional() }).passthrough().optional(),
|
|
60
|
+
})
|
|
61
|
+
.passthrough();
|
|
62
|
+
/** Layer 2 — one workflow-definition file (`.wingfoil/workflows/**\/*.yaml`). */
|
|
63
|
+
exports.Workflow = zod_1.z
|
|
64
|
+
.object({
|
|
65
|
+
name: zod_1.z.string(),
|
|
66
|
+
kind: zod_1.z.enum(['main', 'sub']),
|
|
67
|
+
description: zod_1.z.string().optional(),
|
|
68
|
+
version: zod_1.z.number().positive().optional(),
|
|
69
|
+
element: zod_1.z.string().optional(),
|
|
70
|
+
phases: zod_1.z.array(exports.Phase).min(1),
|
|
71
|
+
})
|
|
72
|
+
.passthrough();
|
|
73
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/workflow/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wingfoil",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Open-source harness for AI-assisted software development that makes the process deterministic — Project Memory, Project DNA, Project Directives, Project Workflow, and a CLI + MCP interaction layer.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Roberto Pompermaier <robypomper@gmail.com>",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/robypomper/wingfoil.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/robypomper/wingfoil#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/robypomper/wingfoil/issues"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=22.12.0"
|
|
17
|
+
},
|
|
18
|
+
"main": "dist/core/index.js",
|
|
19
|
+
"types": "dist/core/index.d.ts",
|
|
20
|
+
"bin": {
|
|
21
|
+
"wingfoil": "dist/cli.js"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"README.md"
|
|
26
|
+
],
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"registry": "https://registry.npmjs.org/",
|
|
29
|
+
"access": "public",
|
|
30
|
+
"provenance": true
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.build.json",
|
|
34
|
+
"prepack": "npm run build",
|
|
35
|
+
"prepublishOnly": "npm run build && npm test && npm run lint",
|
|
36
|
+
"publish:staging": "node scripts/publish-staging.cjs",
|
|
37
|
+
"check:lockfile": "node scripts/check-lockfile-pins.cjs",
|
|
38
|
+
"lint": "eslint .",
|
|
39
|
+
"docs:api": "typedoc --options typedoc.json",
|
|
40
|
+
"test": "jest",
|
|
41
|
+
"test:coverage": "jest --coverage"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"wingfoil",
|
|
45
|
+
"ai-assisted-development",
|
|
46
|
+
"determinism"
|
|
47
|
+
],
|
|
48
|
+
"//devDependencies:@emnapi": "task-104 / bug-063. @emnapi/core and @emnapi/runtime are NOT imported by anything in this repository. They are declared here, at the exact version the overrides block below pins, because an overrides pin binds a version but does not make npm record a node: under npm 11.x a plain `npm install` prunes both hoisted entries out of package-lock.json and reports `up to date`, which silently reverts task-080 and makes `npm ci` fail again under the npm 10.9.x that the pipeline's pinned Node 22.12.0 bundles (bug-056). A DIRECT dependency is never pruned, so declaring them is what makes the lock entries survive an ordinary install. Keep the two versions here equal to the overrides pins - `npm run check:lockfile` (scripts/check-lockfile-pins.cjs) fails if they drift, if either entry leaves the lock, or if these declarations are removed. Being devDependencies, they are never installed by a consumer of the published package.",
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@emnapi/core": "1.11.3",
|
|
51
|
+
"@emnapi/runtime": "1.11.3",
|
|
52
|
+
"@eslint/js": "^10.0.1",
|
|
53
|
+
"@types/jest": "^30.0.0",
|
|
54
|
+
"@types/js-yaml": "^4.0.9",
|
|
55
|
+
"@types/node": "^22.20.4",
|
|
56
|
+
"eslint": "^10.6.0",
|
|
57
|
+
"jest": "^30.4.2",
|
|
58
|
+
"ts-jest": "^29.4.11",
|
|
59
|
+
"typedoc": "^0.28.20",
|
|
60
|
+
"typescript": "^6.0.3",
|
|
61
|
+
"typescript-eslint": "^8.62.1"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@anthropic-ai/sdk": "^0.110.0",
|
|
65
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
66
|
+
"chalk": "^4.1.2",
|
|
67
|
+
"commander": "^15.0.0",
|
|
68
|
+
"js-yaml": "^4.3.0",
|
|
69
|
+
"zod": "^4.4.3"
|
|
70
|
+
},
|
|
71
|
+
"//overrides": "task-080 / bug-056 / dl-069 option (b). @napi-rs/wasm-runtime (dev, optional, reached through eslint -> @unrs/resolver) declares @emnapi/core and @emnapi/runtime as REQUIRED peers, and npm recorded no hoisted entry for either - so npm resolved them from the registry on every install and `npm ci` then rejected the lock for missing what it had just resolved. That is invisible under npm 11.x and fatal under the npm 10.9.0 that the pipeline's pinned Node 22.12.0 bundles, which is why it surfaced only in the release gate. These exact pins make both peers resolve from package-lock.json instead of the registry. Scoped to @napi-rs/wasm-runtime on purpose: the nested @emnapi/core@1.10.0 under @unrs/resolver-binding-wasm32-wasi is a different edge and stays where it is. Revisit on any eslint / @unrs/resolver bump; test/cli/lockfile-peer-overrides.test.ts fails if the lock stops carrying these. task-104 amends this: the overrides block alone did NOT keep the entries in the lock - see the //devDependencies:@emnapi note above.",
|
|
72
|
+
"overrides": {
|
|
73
|
+
"@napi-rs/wasm-runtime": {
|
|
74
|
+
"@emnapi/core": "1.11.3",
|
|
75
|
+
"@emnapi/runtime": "1.11.3"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|