@bicorne/task-flow 0.2.0 → 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.
Files changed (56) hide show
  1. package/README.md +2 -4
  2. package/SKILL.md +2 -4
  3. package/dist/commands/analyze.js +160 -318
  4. package/dist/commands/archive.js +44 -48
  5. package/dist/commands/design.js +225 -400
  6. package/dist/commands/extract.js +174 -303
  7. package/dist/commands/init.js +103 -147
  8. package/dist/commands/merge/index.js +184 -295
  9. package/dist/commands/merge/merger.js +112 -134
  10. package/dist/commands/merge/types.js +3 -5
  11. package/dist/commands/merge/validators.js +115 -132
  12. package/dist/commands/merge.js +46 -13
  13. package/dist/commands/start.js +155 -248
  14. package/dist/commands/status.js +68 -129
  15. package/dist/commands/sync.js +37 -53
  16. package/dist/commands/tasks-gen/doc-parser.js +148 -228
  17. package/dist/commands/tasks-gen/generators.js +104 -116
  18. package/dist/commands/tasks-gen/index.js +206 -314
  19. package/dist/commands/tasks-gen/parsers.js +131 -232
  20. package/dist/commands/tasks-gen/templates.js +9 -10
  21. package/dist/commands/tasks-gen/types.js +36 -14
  22. package/dist/commands/tasks-gen/validators.js +33 -49
  23. package/dist/commands/tasks.js +58 -20
  24. package/dist/commands/worktree.js +167 -249
  25. package/dist/hooks/check-prd-exists.js +45 -55
  26. package/dist/hooks/check-worktree-conflict.js +68 -101
  27. package/dist/hooks/hook-runner/executor.js +134 -126
  28. package/dist/hooks/hook-runner/index.js +181 -196
  29. package/dist/hooks/hook-runner/loader.js +74 -113
  30. package/dist/hooks/hook-runner/types.js +3 -5
  31. package/dist/hooks/hook-runner.js +94 -28
  32. package/dist/hooks/phase-complete-detector.js +125 -191
  33. package/dist/hooks/phase-gate-validator.js +315 -376
  34. package/dist/hooks/save-checkpoint.js +87 -130
  35. package/dist/hooks/start-mcp-servers.js +50 -65
  36. package/dist/hooks/stop-mcp-servers.js +40 -49
  37. package/dist/index.js +84 -153
  38. package/dist/lib/archive.js +126 -209
  39. package/dist/lib/config.js +141 -226
  40. package/dist/lib/constants.js +155 -145
  41. package/dist/lib/interactive.js +98 -148
  42. package/dist/lib/mcp-client.js +197 -320
  43. package/dist/lib/state.js +142 -253
  44. package/dist/slash/executor.js +299 -330
  45. package/dist/slash/index.js +69 -43
  46. package/dist/slash/parser.js +84 -97
  47. package/dist/slash/registry.js +100 -88
  48. package/dist/spec/openspec-to-task/builders.js +96 -109
  49. package/dist/spec/openspec-to-task/index.js +112 -173
  50. package/dist/spec/openspec-to-task/parsers.js +148 -219
  51. package/dist/spec/openspec-to-task/types.js +3 -5
  52. package/dist/spec/sync-openspec-to-task.js +47 -19
  53. package/dist/spec/sync-task-to-openspec.js +241 -272
  54. package/dist/types/ai-context.js +3 -8
  55. package/package.json +8 -6
  56. package/references/CLI-TUTORIAL.md +4 -10
@@ -1,164 +1,120 @@
1
- "use strict";
2
- /**
3
- * commands/init.ts
4
- * Initialize task flow in current project
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
1
+ function e(t) {
2
+ return "function" != typeof WeakMap ? null : (e = function(e) {
3
+ return new WeakMap();
4
+ })(t);
5
+ }
6
+ function t(t, s) {
7
+ var r, o, n;
8
+ if (!s && t && t.__esModule) return t;
9
+ if (null === t || "object" != typeof t && "function" != typeof t) return {
10
+ default: t
37
11
  };
38
- })();
39
- Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.initHarness = initHarness;
41
- exports.main = main;
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- const config_1 = require("../lib/config");
45
- const state_1 = require("../lib/state");
46
- function parseArgs(argv) {
47
- const args = {};
48
- for (let i = 2; i < argv.length; i += 1) {
49
- const token = argv[i] || '';
50
- if (!token.startsWith('--')) {
51
- continue;
52
- }
53
- const key = token.slice(2);
54
- const next = argv[i + 1];
55
- if (!next || next.startsWith('--')) {
56
- args[key] = true;
57
- continue;
58
- }
59
- args[key] = next;
60
- i += 1;
12
+ if ((r = e(s)) && r.has(t)) return r.get(t);
13
+ for(var i in o = {
14
+ __proto__: null
15
+ }, n = Object.defineProperty && Object.getOwnPropertyDescriptor, t)if ("default" !== i && Object.prototype.hasOwnProperty.call(t, i)) {
16
+ var a = n ? Object.getOwnPropertyDescriptor(t, i) : null;
17
+ a && (a.get || a.set) ? Object.defineProperty(o, i, a) : o[i] = t[i];
61
18
  }
62
- return args;
19
+ return o.default = t, r && r.set(t, o), o;
63
20
  }
64
- function initHarness(options = {}) {
65
- const config = (0, config_1.loadConfig)({ cwd: options.cwd });
66
- // Check if already initialized
67
- const harnessRootAbs = config.harnessRootAbs;
68
- if (!harnessRootAbs) {
69
- return {
70
- success: false,
71
- reason: 'missing-harness-root',
72
- message: 'Config missing harnessRootAbs',
73
- };
74
- }
75
- const statePath = path.resolve(harnessRootAbs, 'state.json');
76
- if (fs.existsSync(statePath) && !options.force) {
77
- return {
78
- success: false,
79
- reason: 'already-initialized',
80
- message: `Harness already initialized at ${harnessRootAbs}. Use --force to reinitialize.`,
81
- };
82
- }
83
- // Create directories
84
- (0, config_1.ensureDirectories)(config);
85
- // Create initial state
86
- const state = (0, state_1.createInitialState)();
87
- if (!(0, state_1.saveState)(state, config)) {
88
- return {
89
- success: false,
90
- reason: 'save-state-failed',
91
- message: 'Failed to save initial state',
92
- };
93
- }
94
- // Create config template if not exists
95
- const projectRoot = config.projectRoot;
96
- if (!projectRoot) {
97
- return {
98
- success: false,
99
- reason: 'missing-project-root',
100
- message: 'Config missing projectRoot',
101
- };
102
- }
103
- const configTemplatePath = path.resolve(projectRoot, '.harnessrc.example');
104
- if (!fs.existsSync(configTemplatePath)) {
105
- const template = {
21
+ function s(e = {}) {
22
+ let t = (0, l.loadConfig)({
23
+ cwd: e.cwd
24
+ }), r = t.harnessRootAbs;
25
+ if (!r) return {
26
+ success: !1,
27
+ reason: 'missing-harness-root',
28
+ message: 'Config missing harnessRootAbs'
29
+ };
30
+ let o = c.resolve(r, 'state.json');
31
+ if (a.existsSync(o) && !e.force) return {
32
+ success: !1,
33
+ reason: 'already-initialized',
34
+ message: `Harness already initialized at ${r}. Use --force to reinitialize.`
35
+ };
36
+ (0, l.ensureDirectories)(t);
37
+ let n = (0, u.createInitialState)();
38
+ if (!(0, u.saveState)(n, t)) return {
39
+ success: !1,
40
+ reason: 'save-state-failed',
41
+ message: 'Failed to save initial state'
42
+ };
43
+ let i = t.projectRoot;
44
+ if (!i) return {
45
+ success: !1,
46
+ reason: 'missing-project-root',
47
+ message: 'Config missing projectRoot'
48
+ };
49
+ let f = c.resolve(i, '.harnessrc.example');
50
+ if (!a.existsSync(f)) try {
51
+ a.writeFileSync(f, JSON.stringify({
106
52
  harnessRoot: '.harness',
107
53
  worktreesDir: '.worktrees',
108
54
  tasksDir: 'tasks',
109
55
  snapshotsDir: 'snapshots',
110
56
  archiveDir: 'archive',
111
57
  reportsDir: 'reports',
112
- specRoot: 'spec',
58
+ specRoot: 'spec'
59
+ }, null, 2), 'utf8');
60
+ } catch (t) {
61
+ let e = t instanceof Error ? t.message : 'Unknown error';
62
+ return {
63
+ success: !1,
64
+ reason: 'file-write-error',
65
+ message: `Failed to write config template: ${e}`
113
66
  };
114
- try {
115
- fs.writeFileSync(configTemplatePath, JSON.stringify(template, null, 2), 'utf8');
116
- }
117
- catch (error) {
118
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
119
- return {
120
- success: false,
121
- reason: 'file-write-error',
122
- message: `Failed to write config template: ${errorMessage}`,
123
- };
124
- }
125
67
  }
126
68
  return {
127
- success: true,
128
- config,
129
- state,
69
+ success: !0,
70
+ config: t,
71
+ state: n
130
72
  };
131
73
  }
132
- function main() {
133
- const args = parseArgs(process.argv);
134
- const result = initHarness({
135
- cwd: args.cwd,
136
- force: args.force === true,
74
+ function r() {
75
+ let e = function(e) {
76
+ let t = {};
77
+ for(let s = 2; s < e.length; s += 1){
78
+ let r = e[s] || '';
79
+ if (!r.startsWith('--')) continue;
80
+ let o = r.slice(2), n = e[s + 1];
81
+ if (!n || n.startsWith('--')) {
82
+ t[o] = !0;
83
+ continue;
84
+ }
85
+ t[o] = n, s += 1;
86
+ }
87
+ return t;
88
+ }(process.argv), t = s({
89
+ cwd: e.cwd,
90
+ force: !0 === e.force
137
91
  });
138
- if (!result.success) {
139
- console.error(`[INIT] ${result.message}`);
140
- process.exit(1);
141
- }
142
- const harnessRoot = result.config?.harnessRootAbs || 'unknown';
143
- const worktreesDir = result.config?.worktreesDirAbs || 'unknown';
144
- const tasksDir = result.config?.tasksDirAbs || 'unknown';
145
- const snapshotsDir = result.config?.snapshotsDirAbs || 'unknown';
146
- console.log('[INIT] Task flow initialized successfully!');
147
- console.log(` Root: ${harnessRoot}`);
148
- console.log(` Worktrees: ${worktreesDir}`);
149
- console.log(` Tasks: ${tasksDir}`);
150
- console.log(` Snapshots: ${snapshotsDir}`);
151
- console.log('');
152
- console.log('Next steps:');
153
- console.log(' 1. Create a proposal: task-flow extract --change <change-name>');
154
- console.log(' 2. Check status: task-flow status');
155
- console.log('');
156
- process.exit(0);
92
+ t.success || (console.error(`[INIT] ${t.message}`), process.exit(1));
93
+ let r = t.config?.harnessRootAbs || 'unknown', o = t.config?.worktreesDirAbs || 'unknown', n = t.config?.tasksDirAbs || 'unknown', i = t.config?.snapshotsDirAbs || 'unknown';
94
+ console.log('[INIT] Task flow initialized successfully!'), console.log(` Root: ${r}`), console.log(` Worktrees: ${o}`), console.log(` Tasks: ${n}`), console.log(` Snapshots: ${i}`), console.log(''), console.log('Next steps:'), console.log(' 1. Create a proposal: task-flow extract --change <change-name>'), console.log(' 2. Check status: task-flow status'), console.log(''), process.exit(0);
157
95
  }
158
- if (require.main === module) {
159
- main();
160
- }
161
- exports.default = {
162
- initHarness,
163
- main,
96
+ "use strict";
97
+ Object.defineProperty(exports, "__esModule", {
98
+ value: !0
99
+ });
100
+ var o = exports, n = {
101
+ get default () {
102
+ return f;
103
+ },
104
+ get initHarness () {
105
+ return s;
106
+ },
107
+ get main () {
108
+ return r;
109
+ }
110
+ };
111
+ for(var i in n)Object.defineProperty(o, i, {
112
+ enumerable: !0,
113
+ get: Object.getOwnPropertyDescriptor(n, i).get
114
+ });
115
+ let a = /*#__PURE__*/ t(require("fs")), c = /*#__PURE__*/ t(require("path")), l = require("../lib/config"), u = require("../lib/state");
116
+ require.main === module && r();
117
+ let f = {
118
+ initHarness: s,
119
+ main: r
164
120
  };