workflow-agent-cli 2.4.2 → 2.4.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.
@@ -4,10 +4,35 @@
4
4
  import { readFileSync, writeFileSync, existsSync } from "fs";
5
5
  import { join } from "path";
6
6
  var WORKFLOW_SCRIPTS = {
7
+ // Core Commands
7
8
  "workflow:init": "workflow-agent init",
8
9
  "workflow:validate": "workflow-agent validate",
10
+ "workflow:config": "workflow-agent config",
9
11
  "workflow:suggest": "workflow-agent suggest",
10
- "workflow:doctor": "workflow-agent doctor"
12
+ "workflow:setup": "workflow-agent setup",
13
+ "workflow:doctor": "workflow-agent doctor",
14
+ // Scope Commands
15
+ "workflow:scope:create": "workflow-agent scope:create",
16
+ "workflow:scope:migrate": "workflow-agent scope:migrate",
17
+ // Verification & Auto-Setup
18
+ "workflow:verify": "workflow-agent verify",
19
+ "workflow:verify:fix": "workflow-agent verify --fix",
20
+ "workflow:auto-setup": "workflow-agent auto-setup",
21
+ // Learning System Commands
22
+ "workflow:learn:record": "workflow-agent learn:record",
23
+ "workflow:learn:list": "workflow-agent learn:list",
24
+ "workflow:learn:apply": "workflow-agent learn:apply",
25
+ "workflow:learn:sync": "workflow-agent learn:sync",
26
+ "workflow:learn:config": "workflow-agent learn:config",
27
+ "workflow:learn:deprecate": "workflow-agent learn:deprecate",
28
+ "workflow:learn:stats": "workflow-agent learn:stats",
29
+ // Solution Pattern Commands
30
+ "workflow:solution:capture": "workflow-agent solution:capture",
31
+ "workflow:solution:search": "workflow-agent solution:search",
32
+ "workflow:solution:list": "workflow-agent solution:list",
33
+ "workflow:solution:apply": "workflow-agent solution:apply",
34
+ "workflow:solution:deprecate": "workflow-agent solution:deprecate",
35
+ "workflow:solution:stats": "workflow-agent solution:stats"
11
36
  };
12
37
  function isGlobalInstall() {
13
38
  const installPath = process.env.npm_config_global;
@@ -63,9 +88,35 @@ function addScriptsToPackageJson() {
63
88
  "utf-8"
64
89
  );
65
90
  console.log("\n\u2713 Added workflow scripts to package.json:");
66
- Object.keys(WORKFLOW_SCRIPTS).forEach((scriptName) => {
67
- console.log(` - ${scriptName}`);
68
- });
91
+ console.log("\n Core Commands:");
92
+ console.log(" - workflow:init");
93
+ console.log(" - workflow:validate");
94
+ console.log(" - workflow:config");
95
+ console.log(" - workflow:suggest");
96
+ console.log(" - workflow:setup");
97
+ console.log(" - workflow:doctor");
98
+ console.log("\n Scope Commands:");
99
+ console.log(" - workflow:scope:create");
100
+ console.log(" - workflow:scope:migrate");
101
+ console.log("\n Verification:");
102
+ console.log(" - workflow:verify");
103
+ console.log(" - workflow:verify:fix");
104
+ console.log(" - workflow:auto-setup");
105
+ console.log("\n Learning System:");
106
+ console.log(" - workflow:learn:record");
107
+ console.log(" - workflow:learn:list");
108
+ console.log(" - workflow:learn:apply");
109
+ console.log(" - workflow:learn:sync");
110
+ console.log(" - workflow:learn:config");
111
+ console.log(" - workflow:learn:deprecate");
112
+ console.log(" - workflow:learn:stats");
113
+ console.log("\n Solution Patterns:");
114
+ console.log(" - workflow:solution:capture");
115
+ console.log(" - workflow:solution:search");
116
+ console.log(" - workflow:solution:list");
117
+ console.log(" - workflow:solution:apply");
118
+ console.log(" - workflow:solution:deprecate");
119
+ console.log(" - workflow:solution:stats");
69
120
  console.log(
70
121
  "\nRun them with: npm run workflow:init (or pnpm run workflow:init)\n"
71
122
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/scripts/postinstall.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Post-install script that automatically adds workflow scripts to package.json\n * when installed as a local dependency (not global)\n */\n\nimport { readFileSync, writeFileSync, existsSync } from \"fs\";\nimport { join } from \"path\";\n\nconst WORKFLOW_SCRIPTS = {\n \"workflow:init\": \"workflow-agent init\",\n \"workflow:validate\": \"workflow-agent validate\",\n \"workflow:suggest\": \"workflow-agent suggest\",\n \"workflow:doctor\": \"workflow-agent doctor\",\n};\n\nfunction isGlobalInstall(): boolean {\n // Check if we're being installed globally\n const installPath = process.env.npm_config_global;\n return installPath === \"true\";\n}\n\nfunction findProjectRoot(): string | null {\n // When installed as a dependency, npm/pnpm runs postinstall from the package directory\n // which is inside node_modules/@hawkinside_out/workflow-agent\n // We need to find the project root (the directory containing node_modules)\n\n let currentDir = process.cwd();\n\n // Check if we're inside node_modules\n if (currentDir.includes(\"node_modules\")) {\n // Split on 'node_modules' and take everything before it\n // This handles both node_modules/@scope/package and node_modules/package\n const parts = currentDir.split(\"node_modules\");\n if (parts.length > 0 && parts[0]) {\n // Remove trailing slash\n return parts[0].replace(/\\/$/, \"\");\n }\n }\n\n // If not in node_modules, we're probably in a monorepo workspace during development\n // Don't modify package.json in this case\n return null;\n}\n\nfunction addScriptsToPackageJson(): void {\n try {\n // Don't run for global installs\n if (isGlobalInstall()) {\n return;\n }\n\n const projectRoot = findProjectRoot();\n if (!projectRoot) {\n return;\n }\n\n const packageJsonPath = join(projectRoot, \"package.json\");\n\n if (!existsSync(packageJsonPath)) {\n return;\n }\n\n // Read existing package.json\n const packageJsonContent = readFileSync(packageJsonPath, \"utf-8\");\n const packageJson = JSON.parse(packageJsonContent);\n\n // Initialize scripts object if it doesn't exist\n if (!packageJson.scripts) {\n packageJson.scripts = {};\n }\n\n // Check if any workflow scripts already exist\n const hasWorkflowScripts = Object.keys(WORKFLOW_SCRIPTS).some(\n (scriptName) => packageJson.scripts[scriptName],\n );\n\n if (hasWorkflowScripts) {\n // Scripts already exist, don't overwrite\n return;\n }\n\n // Add workflow scripts\n let addedCount = 0;\n for (const [scriptName, scriptCommand] of Object.entries(\n WORKFLOW_SCRIPTS,\n )) {\n if (!packageJson.scripts[scriptName]) {\n packageJson.scripts[scriptName] = scriptCommand;\n addedCount++;\n }\n }\n\n if (addedCount > 0) {\n // Write back to package.json with proper formatting\n writeFileSync(\n packageJsonPath,\n JSON.stringify(packageJson, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n console.log(\"\\n✓ Added workflow scripts to package.json:\");\n Object.keys(WORKFLOW_SCRIPTS).forEach((scriptName) => {\n console.log(` - ${scriptName}`);\n });\n console.log(\n \"\\nRun them with: npm run workflow:init (or pnpm run workflow:init)\\n\",\n );\n }\n } catch (error) {\n // Silently fail - this is a nice-to-have feature\n // We don't want to break the installation if something goes wrong\n }\n}\n\n// Run the script\naddScriptsToPackageJson();\n"],"mappings":";;;AAOA,SAAS,cAAc,eAAe,kBAAkB;AACxD,SAAS,YAAY;AAErB,IAAM,mBAAmB;AAAA,EACvB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AACrB;AAEA,SAAS,kBAA2B;AAElC,QAAM,cAAc,QAAQ,IAAI;AAChC,SAAO,gBAAgB;AACzB;AAEA,SAAS,kBAAiC;AAKxC,MAAI,aAAa,QAAQ,IAAI;AAG7B,MAAI,WAAW,SAAS,cAAc,GAAG;AAGvC,UAAM,QAAQ,WAAW,MAAM,cAAc;AAC7C,QAAI,MAAM,SAAS,KAAK,MAAM,CAAC,GAAG;AAEhC,aAAO,MAAM,CAAC,EAAE,QAAQ,OAAO,EAAE;AAAA,IACnC;AAAA,EACF;AAIA,SAAO;AACT;AAEA,SAAS,0BAAgC;AACvC,MAAI;AAEF,QAAI,gBAAgB,GAAG;AACrB;AAAA,IACF;AAEA,UAAM,cAAc,gBAAgB;AACpC,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AAEA,UAAM,kBAAkB,KAAK,aAAa,cAAc;AAExD,QAAI,CAAC,WAAW,eAAe,GAAG;AAChC;AAAA,IACF;AAGA,UAAM,qBAAqB,aAAa,iBAAiB,OAAO;AAChE,UAAM,cAAc,KAAK,MAAM,kBAAkB;AAGjD,QAAI,CAAC,YAAY,SAAS;AACxB,kBAAY,UAAU,CAAC;AAAA,IACzB;AAGA,UAAM,qBAAqB,OAAO,KAAK,gBAAgB,EAAE;AAAA,MACvD,CAAC,eAAe,YAAY,QAAQ,UAAU;AAAA,IAChD;AAEA,QAAI,oBAAoB;AAEtB;AAAA,IACF;AAGA,QAAI,aAAa;AACjB,eAAW,CAAC,YAAY,aAAa,KAAK,OAAO;AAAA,MAC/C;AAAA,IACF,GAAG;AACD,UAAI,CAAC,YAAY,QAAQ,UAAU,GAAG;AACpC,oBAAY,QAAQ,UAAU,IAAI;AAClC;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAElB;AAAA,QACE;AAAA,QACA,KAAK,UAAU,aAAa,MAAM,CAAC,IAAI;AAAA,QACvC;AAAA,MACF;AAEA,cAAQ,IAAI,kDAA6C;AACzD,aAAO,KAAK,gBAAgB,EAAE,QAAQ,CAAC,eAAe;AACpD,gBAAQ,IAAI,OAAO,UAAU,EAAE;AAAA,MACjC,CAAC;AACD,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AAAA,EAGhB;AACF;AAGA,wBAAwB;","names":[]}
1
+ {"version":3,"sources":["../../src/scripts/postinstall.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Post-install script that automatically adds workflow scripts to package.json\n * when installed as a local dependency (not global)\n */\n\nimport { readFileSync, writeFileSync, existsSync } from \"fs\";\nimport { join } from \"path\";\n\nconst WORKFLOW_SCRIPTS = {\n // Core Commands\n \"workflow:init\": \"workflow-agent init\",\n \"workflow:validate\": \"workflow-agent validate\",\n \"workflow:config\": \"workflow-agent config\",\n \"workflow:suggest\": \"workflow-agent suggest\",\n \"workflow:setup\": \"workflow-agent setup\",\n \"workflow:doctor\": \"workflow-agent doctor\",\n\n // Scope Commands\n \"workflow:scope:create\": \"workflow-agent scope:create\",\n \"workflow:scope:migrate\": \"workflow-agent scope:migrate\",\n\n // Verification & Auto-Setup\n \"workflow:verify\": \"workflow-agent verify\",\n \"workflow:verify:fix\": \"workflow-agent verify --fix\",\n \"workflow:auto-setup\": \"workflow-agent auto-setup\",\n\n // Learning System Commands\n \"workflow:learn:record\": \"workflow-agent learn:record\",\n \"workflow:learn:list\": \"workflow-agent learn:list\",\n \"workflow:learn:apply\": \"workflow-agent learn:apply\",\n \"workflow:learn:sync\": \"workflow-agent learn:sync\",\n \"workflow:learn:config\": \"workflow-agent learn:config\",\n \"workflow:learn:deprecate\": \"workflow-agent learn:deprecate\",\n \"workflow:learn:stats\": \"workflow-agent learn:stats\",\n\n // Solution Pattern Commands\n \"workflow:solution:capture\": \"workflow-agent solution:capture\",\n \"workflow:solution:search\": \"workflow-agent solution:search\",\n \"workflow:solution:list\": \"workflow-agent solution:list\",\n \"workflow:solution:apply\": \"workflow-agent solution:apply\",\n \"workflow:solution:deprecate\": \"workflow-agent solution:deprecate\",\n \"workflow:solution:stats\": \"workflow-agent solution:stats\",\n};\n\nfunction isGlobalInstall(): boolean {\n // Check if we're being installed globally\n const installPath = process.env.npm_config_global;\n return installPath === \"true\";\n}\n\nfunction findProjectRoot(): string | null {\n // When installed as a dependency, npm/pnpm runs postinstall from the package directory\n // which is inside node_modules/@hawkinside_out/workflow-agent\n // We need to find the project root (the directory containing node_modules)\n\n let currentDir = process.cwd();\n\n // Check if we're inside node_modules\n if (currentDir.includes(\"node_modules\")) {\n // Split on 'node_modules' and take everything before it\n // This handles both node_modules/@scope/package and node_modules/package\n const parts = currentDir.split(\"node_modules\");\n if (parts.length > 0 && parts[0]) {\n // Remove trailing slash\n return parts[0].replace(/\\/$/, \"\");\n }\n }\n\n // If not in node_modules, we're probably in a monorepo workspace during development\n // Don't modify package.json in this case\n return null;\n}\n\nfunction addScriptsToPackageJson(): void {\n try {\n // Don't run for global installs\n if (isGlobalInstall()) {\n return;\n }\n\n const projectRoot = findProjectRoot();\n if (!projectRoot) {\n return;\n }\n\n const packageJsonPath = join(projectRoot, \"package.json\");\n\n if (!existsSync(packageJsonPath)) {\n return;\n }\n\n // Read existing package.json\n const packageJsonContent = readFileSync(packageJsonPath, \"utf-8\");\n const packageJson = JSON.parse(packageJsonContent);\n\n // Initialize scripts object if it doesn't exist\n if (!packageJson.scripts) {\n packageJson.scripts = {};\n }\n\n // Check if any workflow scripts already exist\n const hasWorkflowScripts = Object.keys(WORKFLOW_SCRIPTS).some(\n (scriptName) => packageJson.scripts[scriptName],\n );\n\n if (hasWorkflowScripts) {\n // Scripts already exist, don't overwrite\n return;\n }\n\n // Add workflow scripts\n let addedCount = 0;\n for (const [scriptName, scriptCommand] of Object.entries(\n WORKFLOW_SCRIPTS,\n )) {\n if (!packageJson.scripts[scriptName]) {\n packageJson.scripts[scriptName] = scriptCommand;\n addedCount++;\n }\n }\n\n if (addedCount > 0) {\n // Write back to package.json with proper formatting\n writeFileSync(\n packageJsonPath,\n JSON.stringify(packageJson, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n console.log(\"\\n✓ Added workflow scripts to package.json:\");\n console.log(\"\\n Core Commands:\");\n console.log(\" - workflow:init\");\n console.log(\" - workflow:validate\");\n console.log(\" - workflow:config\");\n console.log(\" - workflow:suggest\");\n console.log(\" - workflow:setup\");\n console.log(\" - workflow:doctor\");\n console.log(\"\\n Scope Commands:\");\n console.log(\" - workflow:scope:create\");\n console.log(\" - workflow:scope:migrate\");\n console.log(\"\\n Verification:\");\n console.log(\" - workflow:verify\");\n console.log(\" - workflow:verify:fix\");\n console.log(\" - workflow:auto-setup\");\n console.log(\"\\n Learning System:\");\n console.log(\" - workflow:learn:record\");\n console.log(\" - workflow:learn:list\");\n console.log(\" - workflow:learn:apply\");\n console.log(\" - workflow:learn:sync\");\n console.log(\" - workflow:learn:config\");\n console.log(\" - workflow:learn:deprecate\");\n console.log(\" - workflow:learn:stats\");\n console.log(\"\\n Solution Patterns:\");\n console.log(\" - workflow:solution:capture\");\n console.log(\" - workflow:solution:search\");\n console.log(\" - workflow:solution:list\");\n console.log(\" - workflow:solution:apply\");\n console.log(\" - workflow:solution:deprecate\");\n console.log(\" - workflow:solution:stats\");\n console.log(\n \"\\nRun them with: npm run workflow:init (or pnpm run workflow:init)\\n\",\n );\n }\n } catch (error) {\n // Silently fail - this is a nice-to-have feature\n // We don't want to break the installation if something goes wrong\n }\n}\n\n// Run the script\naddScriptsToPackageJson();\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workflow-agent-cli",
3
- "version": "2.4.2",
3
+ "version": "2.4.3",
4
4
  "description": "A self-evolving workflow management system for AI agent development",
5
5
  "keywords": [
6
6
  "workflow",
@@ -49,11 +49,12 @@
49
49
  "lint": "echo \"ESLint not configured - skipping\"",
50
50
  "typecheck": "tsc --noEmit",
51
51
  "clean": "rm -rf dist",
52
- "postinstall": "node dist/scripts/postinstall.js || true"
52
+ "postinstall": "node dist/scripts/postinstall.js || true",
53
+ "prepublishOnly": "pnpm build && pnpm test"
53
54
  },
54
55
  "dependencies": {
55
56
  "@clack/prompts": "^0.7.0",
56
- "@hawkinside_out/workflow-improvement-tracker": "^1.0.0",
57
+ "@hawkinside_out/workflow-improvement-tracker": "^1.1.1",
57
58
  "chalk": "^5.3.0",
58
59
  "commander": "^11.1.0",
59
60
  "cosmiconfig": "^9.0.0",