@williambeto/ai-workflow 2.4.9 → 2.6.4

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 (103) hide show
  1. package/CHANGELOG.md +1138 -168
  2. package/README.md +203 -77
  3. package/bin/ai-workflow.d.ts +3 -0
  4. package/bin/ai-workflow.js +2669 -1
  5. package/bin/ai-workflow.js.map +1 -0
  6. package/chunk-2AOV2ATY.js +749 -0
  7. package/chunk-5WRI5ZAA.js +31 -0
  8. package/chunk-6EMG6FAO.js +734 -0
  9. package/chunk-UHLZX2EG.js +1827 -0
  10. package/core/index.d.ts +440 -0
  11. package/core/index.js +32 -0
  12. package/core/index.js.map +1 -0
  13. package/dist-assets/AGENTS.md +23 -6
  14. package/dist-assets/agents/atlas.md +8 -8
  15. package/dist-assets/agents/nexus.md +4 -4
  16. package/dist-assets/agents/orion.md +1 -1
  17. package/dist-assets/agents/phoenix.md +1 -1
  18. package/dist-assets/agents/sage.md +1 -1
  19. package/dist-assets/commands/implement.md +1 -1
  20. package/dist-assets/docs/QUICKSTART.md +8 -8
  21. package/dist-assets/docs/cli-reference.md +7 -7
  22. package/dist-assets/docs/compatibility/provider-usage.md +1 -9
  23. package/dist-assets/docs/compatibility/runtime-matrix.md +5 -6
  24. package/dist-assets/docs/consumer-onboarding.md +2 -2
  25. package/dist-assets/docs/design-patterns-policy.md +1 -1
  26. package/dist-assets/docs/npm-consumer-quickstart.md +70 -109
  27. package/dist-assets/docs/policies/01-BRANCH_GATE.md +1 -1
  28. package/dist-assets/docs/policies/06-FINAL_EVIDENCE_CONTRACT.md +2 -2
  29. package/dist-assets/docs/policies/08-PRODUCT_TRUTHFULNESS_AND_PROJECT_DOCS.md +1 -1
  30. package/dist-assets/docs/policies/10-BEHAVIORAL_CONTRACT_HARDENING.md +1 -1
  31. package/dist-assets/docs/policies/ORCHESTRATION_PROTOCOL.md +8 -9
  32. package/dist-assets/docs/policies/PROCEDURE_DELIVERY_ARTIFACTS.md +4 -10
  33. package/dist-assets/docs/policies/SKILLS_COMMON_GOVERNANCE.md +1 -1
  34. package/dist-assets/docs/profiles/README.md +2 -2
  35. package/dist-assets/docs/specs/runtime-operational-contract.md +12 -12
  36. package/dist-assets/docs/troubleshooting-guide.md +2 -2
  37. package/dist-assets/docs/visual-validation-guide.md +3 -3
  38. package/dist-assets/schemas/evidence.schema.json +109 -0
  39. package/dist-assets/templates/ANTIGRAVITY.md.template +7 -5
  40. package/dist-assets/templates/CLAUDE.md.template +7 -5
  41. package/dist-assets/templates/CODEX.md.template +7 -5
  42. package/evidence-validator-76ZQQYDU.js +6661 -0
  43. package/package.json +7 -64
  44. package/{src/core/workspace/read-only-workspace.js → read-only-workspace-PZBE7KAX.js} +14 -31
  45. package/{src/commands/validate.js → validate-Q2NLLQ5G.js} +30 -22
  46. package/AGENTS.md +0 -34
  47. package/PUBLISH_MANIFEST.json +0 -34
  48. package/dist-assets/templates/.geminiignore.template +0 -8
  49. package/dist-assets/templates/GEMINI.md.template +0 -20
  50. package/docs/compatibility/provider-usage.md +0 -46
  51. package/docs/compatibility/runtime-matrix.md +0 -31
  52. package/docs/getting-started/DESKTOP_PROMPT.md +0 -52
  53. package/docs/getting-started/authoring-custom-skills.md +0 -80
  54. package/docs/getting-started/quickstart.md +0 -117
  55. package/docs/getting-started/troubleshooting.md +0 -123
  56. package/docs/getting-started/upgrading-to-v2.md +0 -62
  57. package/src/adapters/index.js +0 -4
  58. package/src/adapters/platforms/antigravity.js +0 -382
  59. package/src/adapters/platforms/claude.js +0 -126
  60. package/src/adapters/platforms/codex.js +0 -113
  61. package/src/adapters/platforms/gemini.js +0 -245
  62. package/src/cli.js +0 -155
  63. package/src/commands/clean.js +0 -106
  64. package/src/commands/collect-evidence.js +0 -25
  65. package/src/commands/doctor.js +0 -202
  66. package/src/commands/execute.js +0 -382
  67. package/src/commands/init.js +0 -359
  68. package/src/commands/run.js +0 -112
  69. package/src/core/backup.js +0 -65
  70. package/src/core/completion-contract.js +0 -35
  71. package/src/core/delegation-controller.js +0 -193
  72. package/src/core/evidence/evidence-ledger.js +0 -98
  73. package/src/core/execution-planner.js +0 -62
  74. package/src/core/filesystem.js +0 -141
  75. package/src/core/finalization/finalizer.js +0 -165
  76. package/src/core/finalization/workspace-snapshot.js +0 -110
  77. package/src/core/gates/branch-gate.js +0 -134
  78. package/src/core/gates/merge-gate.js +0 -74
  79. package/src/core/handoff/handoff-engine.js +0 -104
  80. package/src/core/healing/cli-remediation-executor.js +0 -153
  81. package/src/core/healing/healer-engine.js +0 -212
  82. package/src/core/healing/runtime-remediation-executor.js +0 -136
  83. package/src/core/identity.js +0 -43
  84. package/src/core/install-plan.js +0 -34
  85. package/src/core/opencode-merge.js +0 -150
  86. package/src/core/package-assets.js +0 -141
  87. package/src/core/request-classifier.js +0 -73
  88. package/src/core/request-router.js +0 -289
  89. package/src/core/runtime/opencode-adapter.js +0 -202
  90. package/src/core/sdd/validator.js +0 -67
  91. package/src/core/statuses.js +0 -29
  92. package/src/core/symlink-layout.js +0 -93
  93. package/src/core/templates.js +0 -229
  94. package/src/core/validation/artifact-fidelity-gate.js +0 -445
  95. package/src/core/validation/canonical-finalization.js +0 -43
  96. package/src/core/validation/delivery-decision-engine.js +0 -344
  97. package/src/core/validation/evidence-collector.js +0 -245
  98. package/src/core/validation/quality-guard.js +0 -251
  99. package/src/core/validation/stack-detector.js +0 -65
  100. package/src/core/validation/validation-planner.js +0 -134
  101. package/src/core/validation/visual-verifier.js +0 -175
  102. package/src/core/workflow-profiles.js +0 -107
  103. package/src/core/workflow-state-machine.js +0 -46
@@ -1,107 +0,0 @@
1
- const PROFILE_DEFINITIONS = Object.freeze({
2
- "frontend-product": Object.freeze({
3
- owner: "Astra",
4
- skills: ["frontend-development", "ui-ux-design", "frontend-design-system"],
5
- objective: "Deliver a user-facing product or marketing surface with truthful copy and deliberate visual composition.",
6
- requiredChecks: ["tests", "typecheck", "build", "responsive-render", "primary-interaction", "truthfulness"],
7
- forbiddenAssumptions: ["fixed SaaS section sequence", "mandatory pricing", "mandatory testimonials", "subjective premium score"]
8
- }),
9
- "frontend-utility": Object.freeze({
10
- owner: "Astra",
11
- skills: ["frontend-development", "ui-ux-design", "frontend-design-system"],
12
- objective: "Deliver a focused user tool with a complete primary flow and clear operational states.",
13
- requiredChecks: ["tests", "typecheck", "build", "responsive-render", "primary-interaction"],
14
- forbiddenAssumptions: ["marketing sections", "pricing", "testimonials", "commercial narrative"]
15
- }),
16
- "backend-api": Object.freeze({
17
- owner: "Astra",
18
- skills: ["backend-development"],
19
- objective: "Deliver a bounded backend/API change with validated contracts, errors, authorization, and tests.",
20
- requiredChecks: ["tests", "build-or-typecheck", "input-validation", "failure-paths"],
21
- forbiddenAssumptions: ["frontend deliverables", "visual evidence"]
22
- }),
23
- refactor: Object.freeze({
24
- owner: "Astra",
25
- skills: ["refactoring"],
26
- objective: "Improve structure without changing observable behavior outside the approved scope.",
27
- requiredChecks: ["behavior-preservation", "tests", "focused-diff"],
28
- forbiddenAssumptions: ["new product behavior", "unrelated cleanup"]
29
- }),
30
- documentation: Object.freeze({
31
- owner: "Astra",
32
- skills: ["documentation"],
33
- objective: "Create or update accurate documentation grounded in the current repository behavior.",
34
- requiredChecks: ["references", "paths", "commands", "consistency"],
35
- forbiddenAssumptions: ["implementation claims without evidence"]
36
- }),
37
- "security-review": Object.freeze({
38
- owner: "Sage",
39
- skills: ["qa-workflow", "technical-leadership"],
40
- objective: "Inspect security-relevant behavior and report evidence-ranked findings without implementing unrelated changes.",
41
- requiredChecks: ["evidence", "severity", "runtime-vs-dev", "remediation-owner"],
42
- forbiddenAssumptions: ["automatic force fixes", "unverified exploitability"]
43
- }),
44
- generic: Object.freeze({
45
- owner: "Atlas",
46
- skills: [],
47
- objective: "Route work without inventing domain requirements.",
48
- requiredChecks: ["scope", "owner", "mode"],
49
- forbiddenAssumptions: ["domain-specific structure"]
50
- })
51
- });
52
-
53
- /**
54
- * NOTE: requiredChecks are advisory, not programmatically enforced.
55
- *
56
- * Each profile's `requiredChecks` array is informational — it guides agent behaviour,
57
- * informs the handoff document, and communicates domain expectations to the AI.
58
- * QualityGuard and EvidenceCollector do NOT iterate requiredChecks to block delivery.
59
- *
60
- * The rationale: profile-specific checks (e.g. "responsive-render", "primary-interaction")
61
- * are context-dependent and require human or agent judgement. Automated enforcement
62
- * would require domain-specific validators that don't currently exist.
63
- *
64
- * If you add automated enforcement for a profile check, update this comment.
65
- */
66
-
67
- const PROFILE_PATTERNS = Object.freeze([
68
- ["security-review", /\b(?:security review|security audit|vulnerability audit|threat model)\b/i],
69
- ["refactor", /\b(?:refactor|restructure|cleanup without behavior change|preserve behavior)\b/i],
70
- ["documentation", /\b(?:documentation only|write docs|update readme|document the|documentation task)\b/i],
71
- ["backend-api", /\b(?:api endpoint|backend api|rest api|graphql|controller|service endpoint|authenticated api)\b/i],
72
- ["frontend-product", /\b(?:landing page|marketing page|product page|pricing page|homepage|redesign|brand page)\b/i],
73
- ["frontend-utility", /\b(?:validator|search page|lookup|dashboard|form|calculator|tool|admin page|repository search)\b/i]
74
- ]);
75
-
76
- export function getWorkflowProfile(name = "generic") {
77
- return PROFILE_DEFINITIONS[name] || PROFILE_DEFINITIONS.generic;
78
- }
79
-
80
- export function listWorkflowProfiles() {
81
- return Object.keys(PROFILE_DEFINITIONS);
82
- }
83
-
84
- export function resolveWorkflowProfile({ request = "", explicitProfile = null } = {}) {
85
- if (explicitProfile && PROFILE_DEFINITIONS[explicitProfile]) return explicitProfile;
86
- const text = String(request).trim();
87
- for (const [profile, pattern] of PROFILE_PATTERNS) {
88
- if (pattern.test(text)) return profile;
89
- }
90
- return "generic";
91
- }
92
-
93
- export function buildCompactProfileHandoff({ profile, objective, requirements = [], constraints = [] }) {
94
- const selected = getWorkflowProfile(profile);
95
- const unique = (values) => [...new Set(values.filter(Boolean))];
96
- return {
97
- profile,
98
- owner: selected.owner,
99
- skills: [...selected.skills],
100
- objective: objective || selected.objective,
101
- requirements: unique(requirements),
102
- constraints: unique(constraints),
103
- requiredChecks: [...selected.requiredChecks]
104
- };
105
- }
106
-
107
- export { PROFILE_DEFINITIONS };
@@ -1,46 +0,0 @@
1
- /**
2
- * WorkflowStateMachine - Enforces state transitions for the AI Workflow loop.
3
- */
4
- export class WorkflowStateMachine {
5
- constructor() {
6
- this.state = "RECEIVED";
7
- this.history = [{ state: this.state, timestamp: new Date().toISOString() }];
8
-
9
- this.validTransitions = {
10
- RECEIVED: ["CLASSIFIED", "BLOCKED"],
11
- CLASSIFIED: ["PLANNED", "BLOCKED"],
12
- PLANNED: ["BRANCH_READY", "BLOCKED"],
13
- BRANCH_READY: ["DELEGATED", "BLOCKED"],
14
- DELEGATED: ["IMPLEMENTING", "BLOCKED"],
15
- IMPLEMENTING: ["IMPLEMENTED", "BLOCKED"],
16
- IMPLEMENTED: ["VALIDATING", "BLOCKED"],
17
- VALIDATING: ["COMPLETED", "COMPLETED_WITH_NOTES", "REMEDIATING", "BLOCKED"],
18
- REMEDIATING: ["REVALIDATING", "BLOCKED"],
19
- REVALIDATING: ["COMPLETED", "COMPLETED_WITH_NOTES", "REMEDIATING", "BLOCKED"],
20
- COMPLETED: [],
21
- COMPLETED_WITH_NOTES: [],
22
- BLOCKED: []
23
- };
24
- }
25
-
26
- /**
27
- * Transitions the machine to a new state.
28
- * @param {string} newState - The state to transition to.
29
- */
30
- transitionTo(newState) {
31
- const allowed = this.validTransitions[this.state];
32
- if (!allowed || !allowed.includes(newState)) {
33
- throw new Error(`Invalid state transition: ${this.state} -> ${newState}`);
34
- }
35
- this.state = newState;
36
- this.history.push({ state: this.state, timestamp: new Date().toISOString() });
37
- }
38
-
39
- getCurrentState() {
40
- return this.state;
41
- }
42
-
43
- getHistory() {
44
- return [...this.history];
45
- }
46
- }