@williambeto/ai-workflow 2.4.9 → 2.6.3

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.
Files changed (104) hide show
  1. package/bin/ai-workflow.d.ts +3 -0
  2. package/bin/ai-workflow.js +2669 -1
  3. package/bin/ai-workflow.js.map +1 -0
  4. package/chunk-2AOV2ATY.js +749 -0
  5. package/chunk-5WRI5ZAA.js +31 -0
  6. package/chunk-6EMG6FAO.js +734 -0
  7. package/chunk-UHLZX2EG.js +1827 -0
  8. package/core/index.d.ts +440 -0
  9. package/core/index.js +32 -0
  10. package/core/index.js.map +1 -0
  11. package/dist-assets/AGENTS.md +23 -6
  12. package/dist-assets/agents/atlas.md +8 -8
  13. package/dist-assets/agents/nexus.md +4 -4
  14. package/dist-assets/agents/orion.md +1 -1
  15. package/dist-assets/agents/phoenix.md +1 -1
  16. package/dist-assets/agents/sage.md +1 -1
  17. package/dist-assets/commands/implement.md +1 -1
  18. package/dist-assets/docs/QUICKSTART.md +8 -8
  19. package/dist-assets/docs/cli-reference.md +7 -7
  20. package/dist-assets/docs/compatibility/provider-usage.md +1 -9
  21. package/dist-assets/docs/compatibility/runtime-matrix.md +5 -6
  22. package/dist-assets/docs/consumer-onboarding.md +2 -2
  23. package/dist-assets/docs/design-patterns-policy.md +1 -1
  24. package/dist-assets/docs/npm-consumer-quickstart.md +70 -109
  25. package/dist-assets/docs/policies/01-BRANCH_GATE.md +1 -1
  26. package/dist-assets/docs/policies/06-FINAL_EVIDENCE_CONTRACT.md +2 -2
  27. package/dist-assets/docs/policies/08-PRODUCT_TRUTHFULNESS_AND_PROJECT_DOCS.md +1 -1
  28. package/dist-assets/docs/policies/10-BEHAVIORAL_CONTRACT_HARDENING.md +1 -1
  29. package/dist-assets/docs/policies/ORCHESTRATION_PROTOCOL.md +8 -9
  30. package/dist-assets/docs/policies/PROCEDURE_DELIVERY_ARTIFACTS.md +4 -10
  31. package/dist-assets/docs/policies/SKILLS_COMMON_GOVERNANCE.md +1 -1
  32. package/dist-assets/docs/profiles/README.md +2 -2
  33. package/dist-assets/docs/specs/runtime-operational-contract.md +12 -12
  34. package/dist-assets/docs/troubleshooting-guide.md +2 -2
  35. package/dist-assets/docs/visual-validation-guide.md +3 -3
  36. package/dist-assets/schemas/evidence.schema.json +109 -0
  37. package/dist-assets/templates/ANTIGRAVITY.md.template +7 -5
  38. package/dist-assets/templates/CLAUDE.md.template +7 -5
  39. package/dist-assets/templates/CODEX.md.template +7 -5
  40. package/evidence-validator-76ZQQYDU.js +6661 -0
  41. package/package.json +7 -64
  42. package/{src/core/workspace/read-only-workspace.js → read-only-workspace-PZBE7KAX.js} +14 -31
  43. package/{src/commands/validate.js → validate-Q2NLLQ5G.js} +30 -22
  44. package/AGENTS.md +0 -34
  45. package/CHANGELOG.md +0 -259
  46. package/LICENSE +0 -21
  47. package/PUBLISH_MANIFEST.json +0 -34
  48. package/README.md +0 -129
  49. package/dist-assets/templates/.geminiignore.template +0 -8
  50. package/dist-assets/templates/GEMINI.md.template +0 -20
  51. package/docs/compatibility/provider-usage.md +0 -46
  52. package/docs/compatibility/runtime-matrix.md +0 -31
  53. package/docs/getting-started/DESKTOP_PROMPT.md +0 -52
  54. package/docs/getting-started/authoring-custom-skills.md +0 -80
  55. package/docs/getting-started/quickstart.md +0 -117
  56. package/docs/getting-started/troubleshooting.md +0 -123
  57. package/docs/getting-started/upgrading-to-v2.md +0 -62
  58. package/src/adapters/index.js +0 -4
  59. package/src/adapters/platforms/antigravity.js +0 -382
  60. package/src/adapters/platforms/claude.js +0 -126
  61. package/src/adapters/platforms/codex.js +0 -113
  62. package/src/adapters/platforms/gemini.js +0 -245
  63. package/src/cli.js +0 -155
  64. package/src/commands/clean.js +0 -106
  65. package/src/commands/collect-evidence.js +0 -25
  66. package/src/commands/doctor.js +0 -202
  67. package/src/commands/execute.js +0 -382
  68. package/src/commands/init.js +0 -359
  69. package/src/commands/run.js +0 -112
  70. package/src/core/backup.js +0 -65
  71. package/src/core/completion-contract.js +0 -35
  72. package/src/core/delegation-controller.js +0 -193
  73. package/src/core/evidence/evidence-ledger.js +0 -98
  74. package/src/core/execution-planner.js +0 -62
  75. package/src/core/filesystem.js +0 -141
  76. package/src/core/finalization/finalizer.js +0 -165
  77. package/src/core/finalization/workspace-snapshot.js +0 -110
  78. package/src/core/gates/branch-gate.js +0 -134
  79. package/src/core/gates/merge-gate.js +0 -74
  80. package/src/core/handoff/handoff-engine.js +0 -104
  81. package/src/core/healing/cli-remediation-executor.js +0 -153
  82. package/src/core/healing/healer-engine.js +0 -212
  83. package/src/core/healing/runtime-remediation-executor.js +0 -136
  84. package/src/core/identity.js +0 -43
  85. package/src/core/install-plan.js +0 -34
  86. package/src/core/opencode-merge.js +0 -150
  87. package/src/core/package-assets.js +0 -141
  88. package/src/core/request-classifier.js +0 -73
  89. package/src/core/request-router.js +0 -289
  90. package/src/core/runtime/opencode-adapter.js +0 -202
  91. package/src/core/sdd/validator.js +0 -67
  92. package/src/core/statuses.js +0 -29
  93. package/src/core/symlink-layout.js +0 -93
  94. package/src/core/templates.js +0 -229
  95. package/src/core/validation/artifact-fidelity-gate.js +0 -445
  96. package/src/core/validation/canonical-finalization.js +0 -43
  97. package/src/core/validation/delivery-decision-engine.js +0 -344
  98. package/src/core/validation/evidence-collector.js +0 -245
  99. package/src/core/validation/quality-guard.js +0 -251
  100. package/src/core/validation/stack-detector.js +0 -65
  101. package/src/core/validation/validation-planner.js +0 -134
  102. package/src/core/validation/visual-verifier.js +0 -175
  103. package/src/core/workflow-profiles.js +0 -107
  104. package/src/core/workflow-state-machine.js +0 -46
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williambeto/ai-workflow",
3
- "version": "2.4.9",
3
+ "version": "2.6.3",
4
4
  "description": "AI Workflow Kit — OpenCode-first software delivery workflow with agents, commands, skills, validation, and evidence",
5
5
  "license": "MIT",
6
6
  "author": "José Willams",
@@ -34,69 +34,12 @@
34
34
  },
35
35
  "files": [
36
36
  "bin",
37
- "src",
37
+ "core",
38
38
  "dist-assets",
39
- "PUBLISH_MANIFEST.json",
39
+ "*.js",
40
+ "package.json",
40
41
  "README.md",
41
42
  "LICENSE",
42
- "CHANGELOG.md",
43
- "AGENTS.md",
44
- "docs/getting-started",
45
- "docs/compatibility"
46
- ],
47
- "scripts": {
48
- "build": "node internal/validate/build-publish.mjs",
49
- "validate": "node internal/validate/validate-all.mjs",
50
- "validate:json": "node internal/validate/validate-json.mjs",
51
- "validate:structure": "node internal/validate/validate-structure.mjs",
52
- "validate:refs": "node internal/validate/validate-refs.mjs",
53
- "validate:artifact-safety": "node internal/validate/validate-artifact-safety.mjs",
54
- "validate:links": "node internal/validate/validate-links.mjs",
55
- "validate:docs-consistency": "node internal/validate/validate-doc-consistency.mjs",
56
- "validate:workflow": "node internal/validate/validate-workflow.mjs",
57
- "validate:schemas": "node internal/validate/validate-schemas.mjs",
58
- "validate:skills": "node internal/validate/validate-skills.mjs",
59
- "validate:subagents": "node internal/validate/validate-subagents.mjs",
60
- "validate:commands": "node internal/validate/validate-commands.mjs",
61
- "validate:agents": "node internal/validate/validate-agents.mjs",
62
- "validate:policy-refs": "node internal/validate/validate-policy-refs.mjs",
63
- "validate:privacy-gate": "node internal/validate/validate-privacy-gate.mjs",
64
- "validate:ui-evidence": "node internal/validate/validate-ui-evidence-gate.mjs",
65
- "validate:delegation": "node internal/validate/validate-delegation.mjs",
66
- "validate:routing": "node internal/validate/validate-routing-consistency.mjs",
67
- "validate:cli-smoke": "node internal/validate/validate-cli-smoke.mjs",
68
- "validate:cli-docs": "node internal/validate/validate-cli-docs.mjs",
69
- "lint:md": "markdownlint \"**/*.md\"",
70
- "validate:registry": "node internal/validate/validate-registry-integrity.mjs",
71
- "clean:verify": "node -e \"const fs = require('fs'); fs.rmSync('dist', { recursive: true, force: true }); fs.readdirSync('.').filter(f => f.endsWith('.tgz')).forEach(f => fs.rmSync(f, { force: true }));\"",
72
- "test": "npm run test:unit",
73
- "test:unit": "vitest run tests/unit/",
74
- "test:watch": "vitest",
75
- "test:coverage": "vitest run --coverage",
76
- "test:e2e": "node tests/validate-e2e.mjs && vitest run tests/e2e/consumer-workflow.test.js",
77
- "test:e2e:runtime": "AI_WORKFLOW_RELEASE=1 vitest run tests/e2e/consumer-workflow.test.js -t \"Real OpenCode Smoke Test\"",
78
- "release:verify": "npm run clean:verify && npm test && npm run test:e2e && npm run validate && npm run pack:verify && npm run test:e2e:runtime",
79
- "pack:verify": "node tests/e2e/verify-packed-consumer.mjs",
80
- "pack:safe": "node internal/validate/pack-safe.mjs",
81
- "validate:behavioral-contracts": "node internal/validate/validate-behavioral-contracts.mjs",
82
- "validate:token-economy": "node internal/validate/validate-token-economy.mjs",
83
- "validate:upgrade": "node internal/validate/validate-upgrade-path.mjs",
84
- "validate:visual": "node internal/validate/validate-visual.mjs",
85
- "validate:release-readiness": "node internal/validate/validate-release-readiness.mjs"
86
- },
87
- "devDependencies": {
88
- "@playwright/test": "^1.60.0",
89
- "@semantic-release/changelog": "^6.0.3",
90
- "@semantic-release/git": "^10.0.1",
91
- "@semantic-release/github": "^12.0.8",
92
- "@semantic-release/npm": "^13.1.5",
93
- "@vitest/coverage-v8": "^4.1.7",
94
- "ajv": "^8.20.0",
95
- "ajv-formats": "^3.0.1",
96
- "axe-core": "^4.10.0",
97
- "markdownlint-cli": "^0.49.0",
98
- "playwright": "^1.60.0",
99
- "semantic-release": "^25.0.3",
100
- "vitest": "^4.1.7"
101
- }
102
- }
43
+ "CHANGELOG.md"
44
+ ]
45
+ }
@@ -1,8 +1,10 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- import os from "node:os";
4
- import crypto from "node:crypto";
1
+ import "./chunk-5WRI5ZAA.js";
5
2
 
3
+ // src/core/workspace/read-only-workspace.ts
4
+ import fs from "fs/promises";
5
+ import path from "path";
6
+ import os from "os";
7
+ import crypto from "crypto";
6
8
  async function copyDirectory(src, dest) {
7
9
  const entries = await fs.readdir(src, { withFileTypes: true });
8
10
  for (const entry of entries) {
@@ -11,7 +13,6 @@ async function copyDirectory(src, dest) {
11
13
  }
12
14
  const srcPath = path.join(src, entry.name);
13
15
  const destPath = path.join(dest, entry.name);
14
-
15
16
  if (entry.isDirectory()) {
16
17
  await fs.mkdir(destPath, { recursive: true });
17
18
  await copyDirectory(srcPath, destPath);
@@ -20,13 +21,11 @@ async function copyDirectory(src, dest) {
20
21
  }
21
22
  }
22
23
  }
23
-
24
24
  async function captureHashSnapshot(dir) {
25
25
  const snapshot = {};
26
26
  await scanDir(dir, dir, snapshot);
27
27
  return snapshot;
28
28
  }
29
-
30
29
  async function scanDir(baseDir, currentDir, snapshot) {
31
30
  const entries = await fs.readdir(currentDir, { withFileTypes: true });
32
31
  for (const entry of entries) {
@@ -35,7 +34,6 @@ async function scanDir(baseDir, currentDir, snapshot) {
35
34
  }
36
35
  const fullPath = path.join(currentDir, entry.name);
37
36
  const relPath = path.relative(baseDir, fullPath);
38
-
39
37
  if (entry.isDirectory()) {
40
38
  await scanDir(baseDir, fullPath, snapshot);
41
39
  } else if (entry.isFile()) {
@@ -44,24 +42,14 @@ async function scanDir(baseDir, currentDir, snapshot) {
44
42
  const hash = crypto.createHash("sha256").update(content).digest("hex");
45
43
  snapshot[relPath] = hash;
46
44
  } catch {
47
- // ignore
48
45
  }
49
46
  }
50
47
  }
51
48
  }
52
-
53
- /**
54
- * Runs a function inside a temporary copy of the workspace.
55
- * Mutating the workspace inside this temp directory will trigger a BLOCKED result.
56
- */
57
- export async function runInReadOnlyWorkspace(originalCwd, runFn) {
49
+ async function runInReadOnlyWorkspace(originalCwd, runFn) {
58
50
  const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "opencode-ro-"));
59
-
60
51
  try {
61
- // 1. Copy repository files recursively (excluding git/node_modules/tmp)
62
52
  await copyDirectory(originalCwd, tempDir);
63
-
64
- // 2. Write the required opencode.jsonc permission config file
65
53
  const opencodeConfig = {
66
54
  permission: {
67
55
  edit: "deny",
@@ -80,16 +68,9 @@ export async function runInReadOnlyWorkspace(originalCwd, runFn) {
80
68
  path.join(tempDir, "opencode.jsonc"),
81
69
  JSON.stringify(opencodeConfig, null, 2)
82
70
  );
83
-
84
- // 3. Capture initial file hash snapshot
85
71
  const snapshotBefore = await captureHashSnapshot(tempDir);
86
-
87
- // 4. Execute the callback function inside the temp directory
88
72
  const runResult = await runFn(tempDir);
89
-
90
- // 5. Capture post-run snapshot and verify no file mutations occurred
91
73
  const snapshotAfter = await captureHashSnapshot(tempDir);
92
-
93
74
  const mutated = [];
94
75
  for (const [file, hash] of Object.entries(snapshotAfter)) {
95
76
  if (snapshotBefore[file] !== hash) {
@@ -97,11 +78,10 @@ export async function runInReadOnlyWorkspace(originalCwd, runFn) {
97
78
  }
98
79
  }
99
80
  for (const file of Object.keys(snapshotBefore)) {
100
- if (snapshotAfter[file] === undefined) {
81
+ if (snapshotAfter[file] === void 0) {
101
82
  mutated.push(file);
102
83
  }
103
84
  }
104
-
105
85
  if (mutated.length > 0) {
106
86
  return {
107
87
  success: false,
@@ -110,10 +90,13 @@ export async function runInReadOnlyWorkspace(originalCwd, runFn) {
110
90
  eventCount: runResult.eventCount || 0
111
91
  };
112
92
  }
113
-
114
93
  return runResult;
115
94
  } finally {
116
- // 6. Delete the temporary workspace copy
117
- await fs.rm(tempDir, { recursive: true, force: true }).catch(() => {});
95
+ await fs.rm(tempDir, { recursive: true, force: true }).catch(() => {
96
+ });
118
97
  }
119
98
  }
99
+ export {
100
+ runInReadOnlyWorkspace
101
+ };
102
+ //# sourceMappingURL=read-only-workspace-PZBE7KAX.js.map
@@ -1,32 +1,42 @@
1
- import { EvidenceCollector } from "../core/validation/evidence-collector.js";
2
- import { QualityGuard } from "../core/validation/quality-guard.js";
3
- import { ValidationPlanner } from "../core/validation/validation-planner.js";
4
- import { VisualVerifier } from "../core/validation/visual-verifier.js";
5
- import fs from "node:fs/promises";
6
- import path from "node:path";
1
+ import {
2
+ EvidenceCollector,
3
+ QualityGuard,
4
+ ValidationPlanner,
5
+ VisualVerifier
6
+ } from "./chunk-6EMG6FAO.js";
7
+ import "./chunk-2AOV2ATY.js";
8
+ import "./chunk-5WRI5ZAA.js";
7
9
 
8
- export async function runValidate({ cwd = process.cwd(), exitOnError = true, taskSlug = null, a11y = false, visualDist = null, port = 8080 }) {
10
+ // src/cli/commands/validate.ts
11
+ import fs from "fs/promises";
12
+ import path from "path";
13
+ async function runValidate({
14
+ cwd = process.cwd(),
15
+ exitOnError = true,
16
+ taskSlug = null,
17
+ a11y = false,
18
+ visualDist = null,
19
+ port = 8080
20
+ }) {
9
21
  console.log("--- Running Validation ---");
10
- const qualityGuard = new QualityGuard({ cwd, taskSlug, mode: "standard" });
22
+ const qualityGuard = new QualityGuard({ cwd, taskSlug, evidencePolicy: "optional", riskLevel: "medium" });
11
23
  const planner = new ValidationPlanner({ cwd, qualityGuard });
12
24
  const tasks = await planner.plan("standard");
13
-
14
- const collector = new EvidenceCollector({ cwd, timeout: 60000, taskSlug, mode: "standard" });
25
+ const collector = new EvidenceCollector({ cwd, timeout: 6e4, taskSlug, evidencePolicy: "optional" });
15
26
  const results = [];
16
-
17
27
  for (const task of tasks) {
18
28
  console.log(`Running validation task: ${task.name}...`);
19
29
  const res = collector.runTask(task);
20
30
  results.push(res);
21
31
  console.log(`- Status: ${res.status} (${res.summary})`);
22
32
  }
23
-
24
33
  let a11yResult = null;
25
34
  if (a11y) {
26
35
  if (!visualDist) {
27
36
  throw new Error("Accessibility audit (--a11y) requires a target build directory specified via --visual-dist=<path>.");
28
37
  }
29
- console.log(`\n--- Running Accessibility Audit ---`);
38
+ console.log(`
39
+ --- Running Accessibility Audit ---`);
30
40
  console.log(`Serving ${visualDist} on port ${port}...`);
31
41
  try {
32
42
  const verifier = new VisualVerifier({ cwd, visualDist, port });
@@ -41,21 +51,17 @@ export async function runValidate({ cwd = process.cwd(), exitOnError = true, tas
41
51
  throw err;
42
52
  }
43
53
  }
44
-
45
- // Load future configuration if present
46
54
  let config = {};
47
55
  try {
48
56
  const configContent = await fs.readFile(path.join(cwd, "ai-workflow.config.json"), "utf8");
49
57
  config = JSON.parse(configContent);
50
- } catch {}
51
-
58
+ } catch {
59
+ }
52
60
  const hasFailure = results.some((r) => ["FAIL", "BLOCKED", "FAIL_QUALITY_GATE"].includes(r.status));
53
-
54
61
  let hasA11yFailure = false;
55
62
  if (a11yResult) {
56
- const criticalIsBlocker = true; // Critical violations are always blockers
63
+ const criticalIsBlocker = true;
57
64
  const seriousIsBlocker = config.a11y?.seriousAsBlocker === true;
58
-
59
65
  if (criticalIsBlocker && a11yResult.critical.length > 0) {
60
66
  hasA11yFailure = true;
61
67
  console.error(`Accessibility FAILED: ${a11yResult.critical.length} critical accessibility violations detected.`);
@@ -69,13 +75,15 @@ export async function runValidate({ cwd = process.cwd(), exitOnError = true, tas
69
75
  }
70
76
  }
71
77
  }
72
-
73
78
  if (hasFailure || hasA11yFailure) {
74
79
  console.log("\nValidation FAILED.");
75
80
  if (exitOnError) process.exit(1);
76
81
  return { passed: false, results, a11yResult };
77
82
  }
78
-
79
83
  console.log("\nValidation PASSED.");
80
84
  return { passed: true, results, a11yResult };
81
85
  }
86
+ export {
87
+ runValidate
88
+ };
89
+ //# sourceMappingURL=validate-Q2NLLQ5G.js.map
package/AGENTS.md DELETED
@@ -1,34 +0,0 @@
1
- # AI Workflow Kit contributor contract
2
-
3
- ## Purpose
4
-
5
- Deliver useful software through proportionate workflow, minimum diff, observed validation, and concise evidence.
6
-
7
- ## Non-negotiable safety
8
-
9
- - Never implement on `main` or `master`.
10
- - Preserve unrelated dirty work.
11
- - Run existing relevant validation commands.
12
- - Never report success after failed or unavailable required validation.
13
- - Bound remediation and stop when no progress is made.
14
- - Always await explicit conversational authorization from the human user in the chat before executing any codebase modification, Git commit, tagging, or remote push. Automated system approval hooks (e.g., artifact reviews) do not bypass this human-in-the-loop requirement.
15
- - Remote push is only permitted on non-protected feature/maintenance branches (e.g. feat/*, fix/*, chore/*, docs/*) with explicit conversational authorization, and is strictly prohibited on protected branches like main or master.
16
-
17
- ## Routing & Delegation
18
-
19
- Atlas routes. Nexus owns discovery, requirements, and spec authoring. Orion owns planning, PR sequencing, and release strategy. Astra implements substantial scoped work. Sage independently validates when risk or full mode justifies separation. Phoenix performs bounded remediation. Delegation must improve the result; do not create agent theatre or claim handoffs that did not occur.
20
-
21
- ## Modes
22
-
23
- - quick: small change, targeted validation, short summary;
24
- - standard: scoped feature, relevant validation, optional delegation;
25
- - full: formal planning, specialist implementation, independent validation, persisted evidence.
26
-
27
- ## Evidence
28
-
29
- Quick and standard work require only branch, changed areas, commands/results, and limitations in the handoff. Full/release/audit/security work may persist machine-generated evidence.
30
-
31
- ## Core Concept
32
-
33
- AI Workflow is an npm CLI that installs agents, commands, skills, policies and templates into your repository.
34
- It guides coding agents from request to implementation, validation and evidence. AI Workflow Kit preserves workflow integrity so coding agents cannot skip from request to code to success without an explicit implementation path, proportional validation, and final evidence.
package/CHANGELOG.md DELETED
@@ -1,259 +0,0 @@
1
- ## [2.4.9] - 2026-06-28
2
-
3
- ### Added
4
- - Created developer guide `docs/getting-started/authoring-custom-skills.md` for writing and integrating custom capability skills.
5
- - Enhanced `dist-assets/docs/visual-validation-guide.md` with advanced Playwright session state authentication and Axe-core accessibility auditing.
6
-
7
- ### Fixed
8
- - Mapped all legacy skill references (e.g. `tester`, `build-and-validate`) to v2 skill names across all prompts and runbooks templates.
9
- - Removed obsolete third-party integration guides (`use-napkin-project-memory.md` and `use-linear-for-operational-planning.md`) from packaged runbooks.
10
- - Removed `read_only_safety_verification.md` from the npm publish files list to reduce package size.
11
- - Fixed MD029 markdown lint style violation in the visual validation guide.
12
-
13
- ## [2.4.8] - 2026-06-27
14
-
15
- ### Added
16
- - Created 5 new specialized domain skills (`cyber-security`, `database`, `devops`, `localization`, and `performance`) under `.ai-workflow/opencode/skills/` to provide guidance on security, database design, pipelines, i18n, and profiling.
17
- - Added unit tests for `identity.js`, `canonical-finalization.js`, and `branch-gate.js` exceptions to increase test coverage.
18
- - Optimized route classifier to automatically trigger appropriate subagent and skill loading rules based on the intent context.
19
-
20
- ### Fixed
21
- - Fixed vitest code coverage failures by adjusting thresholds and excludes.
22
-
23
- ## [2.4.7] - 2026-06-27
24
-
25
- ### Added
26
- - Integrated `@vitest/coverage-v8` to compute code coverage, establishing a strict **80% minimum threshold** for lines, functions, branches, and statements in `vitest.config.js`.
27
- - Added the `npm run test:coverage` script in `package.json` for easy local and CI coverage reporting.
28
- - Created the official community Code of Conduct template at `.github/CODE_OF_CONDUCT.md` with maintainer contact method.
29
- - Excluded the `coverage/` directory from git tracking in `.gitignore`.
30
-
31
- ### Fixed
32
- - Mitigated shell injection risks in the `cli-remediation-executor.js` by removing the insecure `shell:true` parameter and spawning native subprocess commands directly via platform detection (`npm` on POSIX and `npm.cmd` on Windows).
33
- - Fixed 3 failing unit tests in `visual-verifier.test.js` to align with the CSS variables flexibilization threshold (>200 chars) introduced in v2.4.6.
34
- - Documented `ai-workflow clean` limitations regarding the absolute deletion of custom `opencode.jsonc` configs in `cli-reference.md` and `troubleshooting.md`.
35
-
36
- ### Changed
37
- - Bumped and updated development dependencies (dev-dependencies group) to their latest stable versions for security and build stability.
38
-
39
- ## [2.4.6] - 2026-06-25
40
-
41
- ### Fixed
42
- - Flexibilized Design System CSS variables check in `ArtifactFidelityGate` to only enforce the validation when CSS rules volume is substantial (>200 characters), preventing false-positive blocks on tiny or simple style additions.
43
-
44
- ## [2.4.5] - 2026-06-24
45
-
46
- ### Changed
47
- - Refined Design System token validation to support both CSS custom property declarations and usages via `var()`, reducing false-positive quality gate blocks on minor style adjustments.
48
- - Flexibilized `git push` policy to allow remote pushes to non-protected feature/maintenance branches upon explicit human authorization in the chat, keeping `main` and `master` branches strictly protected.
49
-
50
- ## [2.4.4] - 2026-06-24
51
-
52
- ### Added
53
- - Added `clean` CLI command (`aw clean`) to cleanly de-initialize and remove AI Workflow files and symlinks from a project.
54
- - Translated all E2E test titles and comments in the codebase to English for consistent localization.
55
-
56
- ## [2.4.3] - 2026-06-24
57
-
58
- ### Added
59
- - Hardened agent prompt contract rules and safety gates for all 6 agents (Atlas, Nexus, Orion, Astra, Sage, Phoenix).
60
- - Hardened workflow procedures and validation checks for core commands (validate, release, deploy, implement, spec-create).
61
- - Enhanced all 19 default skills with stricter constraint and procedure parameters.
62
-
63
- ## [2.4.2] - 2026-06-21
64
-
65
- ### Added
66
- - Registered `Frontend-Design-System-Specialist` subagent in `opencode.jsonc` templates and configurations.
67
- - Updated `Astra` agent prompt contract to explicitly load `frontend-design-system` skill when active.
68
-
69
- ## [2.4.1] - 2026-06-21
70
-
71
- ### Fixed
72
- - Hardened visual and accessibility quality gates.
73
- - Enhanced `ArtifactFidelityGate` to check all skill folder path variations for `frontend-design-system`.
74
- - Documented Playwright, browser, and Axe-core preconditions in README and quickstart documentation.
75
- - Improved validation resiliency by warning instead of crashing when browser binaries are missing.
76
-
77
- ## [2.4.0] - 2026-06-20
78
-
79
- ### Added
80
- - Native Visual Evidence capture in `collect-evidence` via `--visual-dist` and `--port` parameters, launching a static loopback server and capturing Chromium screenshots using Playwright.
81
- - CSS/HTML Design System Gate validation in `ArtifactFidelityGate` that automatically runs when the `frontend-design-system` skill is loaded in the repository, checking for CSS custom properties, inline style density, CDN scripts, and semantic HTML layout tags.
82
- - Native accessibility auditing command `npx aw validate --a11y` via Axe-core running inside Playwright, blocking critical violations and persisting reports in `.evidence/a11y/report.json`.
83
- - Standard `frontend-design-system` skill (`.agents/skills/frontend-design-system/SKILL.md`) to guide Astra and other agents through visual hierarchy, spacing grids, theme palettes, accessible contrast, and output rules.
84
- - Automated tests covering static loopback servers, Playwright screenshots, Axe-core checks, inline style gates, CSS tokens, and HTML semantics.
85
-
86
- ## [2.3.7] - 2026-06-20
87
-
88
- ### Changed
89
- - Bumped version to 2.3.7.
90
-
91
- ## [2.3.6] - 2026-06-20
92
-
93
- ### Added
94
- - Request-aware delivery decision and artifact fidelity gates (GREEN phase) to prevent false-positive completions in frontend/backend stack tasks.
95
- - Hardened check for blocking delivery decisions in `ArtifactFidelityGate` and `Finalizer`.
96
- - False-positive regression tests and release readiness audit documentation.
97
-
98
- ### Fixed
99
- - Aligned WordPress root detection logic between `DeliveryDecisionEngine` and `ArtifactFidelityGate`.
100
- - Corrected architecture and design patterns policy relative paths in the technical plan prompt.
101
- - Normalized approved release decision string to `RELEASE_OR_DEPLOY_APPROVED`.
102
-
103
- ## [2.3.5] - 2026-06-20
104
-
105
- ### Fixed
106
- - Corrected the governance policy relative path header in all standard skill Markdown files.
107
-
108
- ## [2.3.4] - 2026-06-20
109
-
110
- ### Fixed
111
- - Corrected the mapping and resolution path of policies under `opencode/docs`.
112
-
113
- ## [2.3.3] - 2026-06-20
114
-
115
- ### Added
116
- - First phase implementation of the Delivery Decision Engine and Artifact Fidelity Gate checking for correct technology stacks.
117
- - Hardened PromptContracts and validation scripts for stack-aware quality checking.
118
-
119
- ## [2.3.2] - 2026-06-19
120
-
121
-
122
- ### Documentation
123
- - Clarified first-time usage with `npx @williambeto/ai-workflow init`.
124
- - Clarified local installed-package alias usage with `npx aw init`, `npx aw doctor`, and `npx aw run`.
125
-
126
- ### Notes
127
- - No CLI behavior changed.
128
- - No runtime behavior changed.
129
-
130
- ## [2.3.1] - 2026-06-18
131
-
132
- ### Fixed
133
- - Enforced runtime actor selection for explicit actor routing.
134
- - Prevented silent fallback to default runtime behavior when a selected specialized actor cannot be applied.
135
- - Blocked specialized actor execution when the runtime does not support `--agent`.
136
- - Added truthful ledger evidence for requested actor, selected actor, runtime requested actor and runtime applied actor.
137
- - Hardened routing consistency validation across agents, runtime adapter and delegation ledger.
138
-
139
- ### Added
140
- - Unit tests covering OpenCode runtime actor enforcement and fail-closed checks.
141
- - E2E coverage for explicit actor routing, blocked fallbacks and default non-specialized execution.
142
- - Updated routing consistency validation to catch unsupported actor execution returning success.
143
-
144
- ### Release
145
- - Prepared locally only.
146
- - Not published to npm.
147
- - No git tag created.
148
- - No remote push performed.
149
-
150
- ## [2.3.0] - 2026-06-16
151
-
152
- ### Added
153
- - Isolated read-only workspace runner to prevent execution modifications from altering the original repository.
154
- - Sage validation agent execution in full/deep task mode, logging events to the ledger and handling revalidation.
155
- - Real OpenCode smoke test integration inside the `release:verify` suite.
156
- - Scenario 17 in E2E tests verifying the complete multi-agent coordination loop (`Astra -> Sage -> Phoenix -> Sage`).
157
-
158
- ### Fixed
159
- - Sequential state transitions for read-only runs (`IMPLEMENTING -> IMPLEMENTED -> VALIDATING -> COMPLETED`).
160
- - Snapshot comparison logic to correctly target `.snapshot.files` and compare `.sha256` properties.
161
- - Bypassed physical writing of ledger histories and handoff markdown files during read-only executions.
162
- - Injected mock OpenCode environment configuration inside `verify-packed-consumer.mjs` for autonomous sandbox runs.
163
-
164
- ## [2.0.5] - 2026-06-08
165
-
166
- ### Fixed
167
-
168
- - Locked standard/full Atlas completion behind current-task Sage, Evidence Collector, and QualityGuard execution.
169
- - Rejected direct Atlas `PASS`, user-deferred `/validate`, self-validation, and missing executable finalizer paths.
170
- - Added canonical cross-field validation for branch evidence, owners, artifacts, truthfulness, collector/final status, and Phoenix/Sage consistency.
171
- - Strengthened fictitious-product claim detection for unsupported market superlatives, pricing, SLA/support, API, batch, and export capabilities.
172
- - Added regression tests for runtime completion lock and internally inconsistent canonical results.
173
-
174
- ## [2.0.3] - 2026-06-08
175
-
176
- ### Added
177
-
178
- - Lightweight workflow profiles separating execution mode from domain quality guidance.
179
- - Deterministic profile routing for frontend product, frontend utility, backend API, refactor, documentation, and security review work.
180
- - Objective owner-completion contract with one bounded resume before `BLOCKED`.
181
- - Consumer workflow profile documentation.
182
-
183
- ### Changed
184
-
185
- - Visual validation now uses objective rendered checks instead of subjective labels or benchmark comparison.
186
- - Frontend product and utility profiles load both frontend and UI/UX skills without imposing a fixed SaaS page template.
187
- - Product Truthfulness accepts clear page-level conceptual labels for non-authoritative commercial concepts while keeping official/live/security/SLA claims strict.
188
- - Atlas handoff guidance is shorter and outcome-first.
189
-
190
- # Changelog
191
-
192
- ## [2.0.4] - 2026-06-08
193
-
194
- ### Fixed
195
-
196
- - Removed circular finalization evidence by deriving canonical results from executed policy checks and persisting them in `EVIDENCE.json`.
197
- - Enforced all canonical standard/full final response fields from one machine-readable contract.
198
- - Persisted and rendered delegation owners, loaded skills, delivery artifacts, Sage revalidation, Evidence Collector, QualityGuard, Product Truthfulness, finalizer, and terminal status.
199
- - Required structured TypeScript waivers with an explicit source and concrete constraint.
200
- - Added regression coverage for omitted fields, direct finalizer bypass, remediation without Sage revalidation, and canonical status spelling.
201
-
202
-
203
- ## 2.0.2
204
-
205
- ### Fixed
206
-
207
- - Enforced mode-specific final delivery artifacts so `standard` cannot pass with `delivery-summary.md`.
208
- - Added mandatory finalization evidence for collector, QualityGuard, Product Truthfulness, delegation, and finalizer identity.
209
- - Prevented `PASS` when canonical finalization fields are missing or inconsistent.
210
- - Added direct tests for standard artifact mismatch and finalization evidence.
211
- - Kept bounded remediation responsible for correcting final-gate failures before promotion.
212
-
213
- ## 2.0.1
214
-
215
- ### Fixed
216
-
217
- - Added bounded, progress-aware remediation for recoverable quality and delegation gates.
218
- - Prevented unresolved gate failures from being downgraded to `PASS_WITH_NOTES`.
219
- - Added hard remediation limits by execution mode and blocking on repeated/no-progress findings.
220
- - Synchronized the root evidence contract with the canonical distributed contract.
221
- - Added direct coverage for implementation documentation and remediation lifecycle behavior.
222
-
223
- ## 2.0.0
224
-
225
- ### Added
226
-
227
- - OpenCode-first workflow with six primary ownership roles.
228
- - Proportional `quick`, `standard`, and `full` delivery modes.
229
- - Persisted delivery artifacts and executable evidence collection.
230
- - Branch recovery, quality gates, delegation statuses, Product Truthfulness, and safe packaging.
231
- - TypeScript default for new frontend applications unless explicitly waived.
232
- - Consumer quickstart, runtime compatibility guidance, and v2 upgrade documentation.
233
- - Optional Codex, Claude Code, and Gemini adapter assets.
234
-
235
- ### Changed
236
-
237
- - Public version identity is now aligned with the npm upgrade path from `1.x` to `2.0.0`.
238
- - Active documentation describes only the current 2.0 product and supported migration path.
239
- - Repository-maintenance paths are separated from consumer-facing paths.
240
- - The initial `2.0.0` rollout uses the npm `next` dist-tag without moving `latest`.
241
-
242
- ### Removed
243
-
244
- - Obsolete pre-2.0 runtime guidance, taxonomies, aliases, package paths, and intermediate release-candidate documentation.
245
-
246
- ## Previous public releases
247
-
248
- The previous npm line ends at `1.19.1`. Detailed historical changes remain available in Git history and GitHub Releases.
249
-
250
- ## 2.1.0
251
-
252
- ### Changed
253
-
254
- - Recovered the original product direction: proportionate workflows, useful software, and concise evidence.
255
- - Kept protected-branch enforcement, required validation execution, bounded remediation, and false-success prevention as non-negotiable guardrails.
256
- - Removed mandatory canonical response fields, owner JSON, fixed delivery filenames, and persisted evidence from quick/standard work.
257
- - Simplified Atlas to route and coordinate without forcing multi-agent ceremony.
258
- - Simplified QualityGuard to objective branch, validation, documentation, UI-evidence, and full-mode persistence checks.
259
- - Replaced keyword-driven Product Truthfulness enforcement with semantic guidance.
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 AI Workflow Kit contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,34 +0,0 @@
1
- {
2
- "name": "ai-workflow-publish-manifest",
3
- "version": "1.0.0",
4
- "layers": {
5
- "core": [
6
- "bin/**",
7
- "src/**",
8
- "package.json",
9
- "opencode.jsonc"
10
- ],
11
- "assets": [
12
- "dist-assets/skills/**",
13
- "dist-assets/agents/**",
14
- "dist-assets/commands/**",
15
- "dist-assets/prompts/**",
16
- "dist-assets/templates/**",
17
- "dist-assets/schemas/**",
18
- "dist-assets/runbooks/**",
19
- "dist-assets/harness/**",
20
- "dist-assets/docs/**",
21
- "dist-assets/examples/**",
22
- "dist-assets/AGENTS.md"
23
- ]
24
- },
25
- "exclude": [
26
- "internal/**",
27
- "**/tests/**",
28
- "**/evidence/**",
29
- "**/*.original.md",
30
- ".git/**",
31
- ".ai-workflow/**",
32
- "node_modules/**"
33
- ]
34
- }