oh-my-claude-sisyphus 3.3.8 → 3.4.0
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/README.md +3 -3
- package/agents/explore-high.md +195 -0
- package/agents/qa-tester-high.md +141 -0
- package/agents/templates/README.md +110 -0
- package/agents/templates/base-agent.md +54 -0
- package/agents/templates/tier-instructions.md +94 -0
- package/commands/ecomode.md +60 -0
- package/commands/help.md +1 -1
- package/commands/mcp-setup.md +7 -6
- package/commands/ralplan.md +8 -1
- package/commands/ultrapilot.md +158 -0
- package/commands/ultrawork.md +1 -0
- package/dist/__tests__/delegation-enforcer-integration.test.d.ts +6 -0
- package/dist/__tests__/delegation-enforcer-integration.test.d.ts.map +1 -0
- package/dist/__tests__/delegation-enforcer-integration.test.js +136 -0
- package/dist/__tests__/delegation-enforcer-integration.test.js.map +1 -0
- package/dist/__tests__/delegation-enforcer.test.d.ts +5 -0
- package/dist/__tests__/delegation-enforcer.test.d.ts.map +1 -0
- package/dist/__tests__/delegation-enforcer.test.js +208 -0
- package/dist/__tests__/delegation-enforcer.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +2 -2
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +4 -6
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/ralph-prd.test.js +1 -1
- package/dist/__tests__/ralph-prd.test.js.map +1 -1
- package/dist/__tests__/ralph-progress.test.js +1 -1
- package/dist/__tests__/ralph-progress.test.js.map +1 -1
- package/dist/__tests__/skills.test.js +31 -24
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/agents/analyst.d.ts.map +1 -1
- package/dist/agents/analyst.js +1 -0
- package/dist/agents/analyst.js.map +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +1 -0
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/critic.d.ts.map +1 -1
- package/dist/agents/critic.js +1 -0
- package/dist/agents/critic.js.map +1 -1
- package/dist/agents/definitions.d.ts +5 -1
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +53 -155
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts.map +1 -1
- package/dist/agents/designer.js +1 -0
- package/dist/agents/designer.js.map +1 -1
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +1 -0
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +1 -0
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +1 -0
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/qa-tester.d.ts.map +1 -1
- package/dist/agents/qa-tester.js +1 -0
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts.map +1 -1
- package/dist/agents/researcher.js +1 -0
- package/dist/agents/researcher.js.map +1 -1
- package/dist/agents/scientist.d.ts.map +1 -1
- package/dist/agents/scientist.js +1 -0
- package/dist/agents/scientist.js.map +1 -1
- package/dist/agents/types.d.ts +2 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/agents/vision.d.ts.map +1 -1
- package/dist/agents/vision.js +1 -0
- package/dist/agents/vision.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +1 -0
- package/dist/agents/writer.js.map +1 -1
- package/dist/cli/index.js +0 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/features/delegation-enforcer.d.ts +71 -0
- package/dist/features/delegation-enforcer.d.ts.map +1 -0
- package/dist/features/delegation-enforcer.js +128 -0
- package/dist/features/delegation-enforcer.js.map +1 -0
- package/dist/features/index.d.ts +3 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +18 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/state-manager/index.d.ts +100 -0
- package/dist/features/state-manager/index.d.ts.map +1 -0
- package/dist/features/state-manager/index.js +407 -0
- package/dist/features/state-manager/index.js.map +1 -0
- package/dist/features/state-manager/types.d.ts +147 -0
- package/dist/features/state-manager/types.d.ts.map +1 -0
- package/dist/features/state-manager/types.js +30 -0
- package/dist/features/state-manager/types.js.map +1 -0
- package/dist/features/task-decomposer/index.d.ts +33 -0
- package/dist/features/task-decomposer/index.d.ts.map +1 -0
- package/dist/features/task-decomposer/index.js +698 -0
- package/dist/features/task-decomposer/index.js.map +1 -0
- package/dist/features/task-decomposer/types.d.ts +133 -0
- package/dist/features/task-decomposer/types.d.ts.map +1 -0
- package/dist/features/task-decomposer/types.js +8 -0
- package/dist/features/task-decomposer/types.js.map +1 -0
- package/dist/features/verification/example.d.ts +49 -0
- package/dist/features/verification/example.d.ts.map +1 -0
- package/dist/features/verification/example.js +235 -0
- package/dist/features/verification/example.js.map +1 -0
- package/dist/features/verification/index.d.ts +97 -0
- package/dist/features/verification/index.d.ts.map +1 -0
- package/dist/features/verification/index.js +439 -0
- package/dist/features/verification/index.js.map +1 -0
- package/dist/features/verification/types.d.ts +142 -0
- package/dist/features/verification/types.d.ts.map +1 -0
- package/dist/features/verification/types.js +7 -0
- package/dist/features/verification/types.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -1
- package/dist/hooks/agent-usage-reminder/constants.js +0 -1
- package/dist/hooks/agent-usage-reminder/constants.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/cancel.test.js +4 -4
- package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/summary.test.js +1 -1
- package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/transition.test.js +1 -2
- package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -1
- package/dist/hooks/autopilot/cancel.js +2 -2
- package/dist/hooks/autopilot/cancel.js.map +1 -1
- package/dist/hooks/autopilot/enforcement.d.ts +16 -2
- package/dist/hooks/autopilot/enforcement.d.ts.map +1 -1
- package/dist/hooks/autopilot/enforcement.js +78 -4
- package/dist/hooks/autopilot/enforcement.js.map +1 -1
- package/dist/hooks/autopilot/index.d.ts +3 -6
- package/dist/hooks/autopilot/index.d.ts.map +1 -1
- package/dist/hooks/autopilot/index.js +6 -12
- package/dist/hooks/autopilot/index.js.map +1 -1
- package/dist/hooks/autopilot/state.d.ts +36 -2
- package/dist/hooks/autopilot/state.d.ts.map +1 -1
- package/dist/hooks/autopilot/state.js +216 -2
- package/dist/hooks/autopilot/state.js.map +1 -1
- package/dist/hooks/autopilot/validation.d.ts +23 -2
- package/dist/hooks/autopilot/validation.d.ts.map +1 -1
- package/dist/hooks/autopilot/validation.js +158 -1
- package/dist/hooks/autopilot/validation.js.map +1 -1
- package/dist/hooks/bridge.js +3 -3
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/index.d.ts +5 -9
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +31 -21
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/learner/promotion.js +1 -1
- package/dist/hooks/learner/promotion.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +2 -3
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph/index.d.ts +11 -0
- package/dist/hooks/ralph/index.d.ts.map +1 -0
- package/dist/hooks/ralph/index.js +53 -0
- package/dist/hooks/ralph/index.js.map +1 -0
- package/dist/hooks/ralph/loop.d.ts +116 -0
- package/dist/hooks/ralph/loop.d.ts.map +1 -0
- package/dist/hooks/ralph/loop.js +322 -0
- package/dist/hooks/ralph/loop.js.map +1 -0
- package/dist/hooks/ralph/prd.d.ts +130 -0
- package/dist/hooks/ralph/prd.d.ts.map +1 -0
- package/dist/hooks/ralph/prd.js +310 -0
- package/dist/hooks/ralph/prd.js.map +1 -0
- package/dist/hooks/ralph/progress.d.ts +102 -0
- package/dist/hooks/ralph/progress.d.ts.map +1 -0
- package/dist/hooks/ralph/progress.js +408 -0
- package/dist/hooks/ralph/progress.js.map +1 -0
- package/dist/hooks/ralph/verifier.d.ts +72 -0
- package/dist/hooks/ralph/verifier.d.ts.map +1 -0
- package/dist/hooks/ralph/verifier.js +223 -0
- package/dist/hooks/ralph/verifier.js.map +1 -0
- package/dist/hooks/recovery/constants.d.ts +114 -0
- package/dist/hooks/recovery/constants.d.ts.map +1 -0
- package/dist/hooks/recovery/constants.js +227 -0
- package/dist/hooks/recovery/constants.js.map +1 -0
- package/dist/hooks/recovery/context-window.d.ts +24 -0
- package/dist/hooks/recovery/context-window.d.ts.map +1 -0
- package/dist/hooks/recovery/context-window.js +321 -0
- package/dist/hooks/recovery/context-window.js.map +1 -0
- package/dist/hooks/recovery/edit-error.d.ts +24 -0
- package/dist/hooks/recovery/edit-error.d.ts.map +1 -0
- package/dist/hooks/recovery/edit-error.js +56 -0
- package/dist/hooks/recovery/edit-error.js.map +1 -0
- package/dist/hooks/recovery/index.d.ts +102 -0
- package/dist/hooks/recovery/index.d.ts.map +1 -0
- package/dist/hooks/recovery/index.js +166 -0
- package/dist/hooks/recovery/index.js.map +1 -0
- package/dist/hooks/recovery/session-recovery.d.ts +24 -0
- package/dist/hooks/recovery/session-recovery.d.ts.map +1 -0
- package/dist/hooks/recovery/session-recovery.js +281 -0
- package/dist/hooks/recovery/session-recovery.js.map +1 -0
- package/dist/hooks/recovery/storage.d.ts +75 -0
- package/dist/hooks/recovery/storage.d.ts.map +1 -0
- package/dist/hooks/recovery/storage.js +382 -0
- package/dist/hooks/recovery/storage.js.map +1 -0
- package/dist/hooks/recovery/types.d.ts +196 -0
- package/dist/hooks/recovery/types.d.ts.map +1 -0
- package/dist/hooks/recovery/types.js +32 -0
- package/dist/hooks/recovery/types.js.map +1 -0
- package/dist/hooks/ultrapilot/index.d.ts +90 -0
- package/dist/hooks/ultrapilot/index.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/index.js +310 -0
- package/dist/hooks/ultrapilot/index.js.map +1 -0
- package/dist/hooks/ultrapilot/state.d.ts +72 -0
- package/dist/hooks/ultrapilot/state.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/state.js +258 -0
- package/dist/hooks/ultrapilot/state.js.map +1 -0
- package/dist/hooks/ultrapilot/types.d.ts +113 -0
- package/dist/hooks/ultrapilot/types.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/types.js +36 -0
- package/dist/hooks/ultrapilot/types.js.map +1 -0
- package/dist/hooks/ultraqa/index.d.ts +94 -0
- package/dist/hooks/ultraqa/index.d.ts.map +1 -0
- package/dist/hooks/ultraqa/index.js +216 -0
- package/dist/hooks/ultraqa/index.js.map +1 -0
- package/dist/hooks/ultrawork/index.d.ts +62 -0
- package/dist/hooks/ultrawork/index.d.ts.map +1 -0
- package/dist/hooks/ultrawork/index.js +208 -0
- package/dist/hooks/ultrawork/index.js.map +1 -0
- package/dist/hud/elements/index.d.ts +1 -1
- package/dist/hud/elements/index.d.ts.map +1 -1
- package/dist/hud/elements/index.js +1 -1
- package/dist/hud/elements/index.js.map +1 -1
- package/dist/hud/elements/limits.d.ts +6 -0
- package/dist/hud/elements/limits.d.ts.map +1 -1
- package/dist/hud/elements/limits.js +31 -0
- package/dist/hud/elements/limits.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +8 -4
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +1 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +6 -0
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +5 -3
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/servers.d.ts +2 -18
- package/dist/mcp/servers.d.ts.map +1 -1
- package/dist/mcp/servers.js +4 -36
- package/dist/mcp/servers.js.map +1 -1
- package/dist/shared/types.d.ts +1 -3
- package/dist/shared/types.d.ts.map +1 -1
- package/docs/CLAUDE.md +170 -44
- package/docs/DELEGATION-ENFORCER.md +282 -0
- package/docs/FULL-README.md +1 -1
- package/docs/LOCAL_PLUGIN_INSTALL.md +1 -1
- package/docs/MIGRATION.md +298 -104
- package/package.json +2 -2
- package/scripts/test-mutual-exclusion.ts +1 -1
- package/skills/analyze/SKILL.md +0 -1
- package/skills/autopilot/SKILL.md +0 -1
- package/skills/cancel/SKILL.md +580 -0
- package/skills/cancel-autopilot/SKILL.md +0 -1
- package/skills/cancel-ecomode/SKILL.md +41 -0
- package/skills/cancel-ralph/SKILL.md +0 -1
- package/skills/cancel-ultraqa/SKILL.md +0 -1
- package/skills/cancel-ultrawork/SKILL.md +0 -1
- package/skills/deepinit/SKILL.md +0 -1
- package/skills/deepsearch/SKILL.md +0 -1
- package/skills/doctor/SKILL.md +0 -1
- package/skills/ecomode/SKILL.md +128 -0
- package/skills/frontend-ui-ux/SKILL.md +0 -1
- package/skills/git-master/SKILL.md +0 -1
- package/skills/help/SKILL.md +1 -2
- package/skills/hud/SKILL.md +0 -1
- package/skills/learner/SKILL.md +0 -1
- package/skills/mcp-setup/SKILL.md +8 -7
- package/skills/note/SKILL.md +0 -1
- package/skills/omc-default/SKILL.md +0 -1
- package/skills/omc-default-global/SKILL.md +0 -1
- package/skills/omc-setup/SKILL.md +212 -10
- package/skills/orchestrate/SKILL.md +0 -1
- package/skills/pipeline/SKILL.md +417 -0
- package/skills/plan/SKILL.md +138 -21
- package/skills/planner/SKILL.md +0 -1
- package/skills/ralph/SKILL.md +65 -1
- package/skills/ralph-init/SKILL.md +0 -1
- package/skills/ralplan/SKILL.md +0 -1
- package/skills/release/SKILL.md +0 -1
- package/skills/research/SKILL.md +0 -1
- package/skills/review/SKILL.md +0 -1
- package/skills/swarm/SKILL.md +349 -0
- package/skills/tdd/SKILL.md +0 -1
- package/skills/ultrapilot/SKILL.md +563 -0
- package/skills/ultraqa/SKILL.md +0 -1
- package/skills/ultrawork/SKILL.md +0 -1
- package/docs/MIGRATION-v3.md +0 -186
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Manager
|
|
3
|
+
*
|
|
4
|
+
* Unified state management that standardizes state file locations:
|
|
5
|
+
* - Local state: .omc/state/{name}.json
|
|
6
|
+
* - Global state: ~/.omc/state/{name}.json
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Type-safe read/write operations
|
|
10
|
+
* - Auto-create directories
|
|
11
|
+
* - Legacy location support (for migration)
|
|
12
|
+
* - State cleanup utilities
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
import * as os from 'os';
|
|
17
|
+
import { StateLocation, DEFAULT_STATE_CONFIG } from './types.js';
|
|
18
|
+
// Standard state directories
|
|
19
|
+
const LOCAL_STATE_DIR = '.omc/state';
|
|
20
|
+
const GLOBAL_STATE_DIR = path.join(os.homedir(), '.omc', 'state');
|
|
21
|
+
// Legacy state locations (for backward compatibility)
|
|
22
|
+
const LEGACY_LOCATIONS = {
|
|
23
|
+
// Example legacy locations that might exist
|
|
24
|
+
'boulder': ['.omc/boulder.json', path.join(os.homedir(), '.omc', 'boulder.json')],
|
|
25
|
+
'autopilot': ['.omc/autopilot-state.json'],
|
|
26
|
+
'ralph': ['.omc/ralph-state.json'],
|
|
27
|
+
'ultrawork': ['.omc/ultrawork-state.json'],
|
|
28
|
+
'ultraqa': ['.omc/ultraqa-state.json']
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Get the standard path for a state file
|
|
32
|
+
*/
|
|
33
|
+
export function getStatePath(name, location) {
|
|
34
|
+
const baseDir = location === StateLocation.LOCAL ? LOCAL_STATE_DIR : GLOBAL_STATE_DIR;
|
|
35
|
+
return path.join(baseDir, `${name}.json`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get legacy paths for a state file (for migration)
|
|
39
|
+
*/
|
|
40
|
+
export function getLegacyPaths(name) {
|
|
41
|
+
return LEGACY_LOCATIONS[name] || [];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Ensure state directory exists
|
|
45
|
+
*/
|
|
46
|
+
export function ensureStateDir(location) {
|
|
47
|
+
const dir = location === StateLocation.LOCAL ? LOCAL_STATE_DIR : GLOBAL_STATE_DIR;
|
|
48
|
+
if (!fs.existsSync(dir)) {
|
|
49
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Read state from file
|
|
54
|
+
*
|
|
55
|
+
* Checks standard location first, then legacy locations if enabled.
|
|
56
|
+
* Returns both the data and where it was found.
|
|
57
|
+
*/
|
|
58
|
+
export function readState(name, location = StateLocation.LOCAL, options) {
|
|
59
|
+
const checkLegacy = options?.checkLegacy ?? DEFAULT_STATE_CONFIG.checkLegacy;
|
|
60
|
+
const standardPath = getStatePath(name, location);
|
|
61
|
+
const legacyPaths = checkLegacy ? getLegacyPaths(name) : [];
|
|
62
|
+
// Try standard location first
|
|
63
|
+
if (fs.existsSync(standardPath)) {
|
|
64
|
+
try {
|
|
65
|
+
const content = fs.readFileSync(standardPath, 'utf-8');
|
|
66
|
+
const data = JSON.parse(content);
|
|
67
|
+
return {
|
|
68
|
+
exists: true,
|
|
69
|
+
data,
|
|
70
|
+
foundAt: standardPath,
|
|
71
|
+
legacyLocations: []
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
// Invalid JSON or read error - treat as not found
|
|
76
|
+
console.warn(`Failed to read state from ${standardPath}:`, error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Try legacy locations
|
|
80
|
+
if (checkLegacy) {
|
|
81
|
+
for (const legacyPath of legacyPaths) {
|
|
82
|
+
// Resolve relative paths
|
|
83
|
+
const resolvedPath = path.isAbsolute(legacyPath)
|
|
84
|
+
? legacyPath
|
|
85
|
+
: path.join(process.cwd(), legacyPath);
|
|
86
|
+
if (fs.existsSync(resolvedPath)) {
|
|
87
|
+
try {
|
|
88
|
+
const content = fs.readFileSync(resolvedPath, 'utf-8');
|
|
89
|
+
const data = JSON.parse(content);
|
|
90
|
+
return {
|
|
91
|
+
exists: true,
|
|
92
|
+
data,
|
|
93
|
+
foundAt: resolvedPath,
|
|
94
|
+
legacyLocations: legacyPaths
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.warn(`Failed to read legacy state from ${resolvedPath}:`, error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
exists: false,
|
|
105
|
+
legacyLocations: checkLegacy ? legacyPaths : []
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Write state to file
|
|
110
|
+
*
|
|
111
|
+
* Always writes to the standard location.
|
|
112
|
+
* Creates directories if they don't exist.
|
|
113
|
+
*/
|
|
114
|
+
export function writeState(name, data, location = StateLocation.LOCAL, options) {
|
|
115
|
+
const createDirs = options?.createDirs ?? DEFAULT_STATE_CONFIG.createDirs;
|
|
116
|
+
const statePath = getStatePath(name, location);
|
|
117
|
+
try {
|
|
118
|
+
// Ensure directory exists
|
|
119
|
+
if (createDirs) {
|
|
120
|
+
ensureStateDir(location);
|
|
121
|
+
}
|
|
122
|
+
// Write state
|
|
123
|
+
const content = JSON.stringify(data, null, 2);
|
|
124
|
+
fs.writeFileSync(statePath, content, 'utf-8');
|
|
125
|
+
return {
|
|
126
|
+
success: true,
|
|
127
|
+
path: statePath
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
path: statePath,
|
|
134
|
+
error: error instanceof Error ? error.message : String(error)
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Clear state from all locations (standard + legacy)
|
|
140
|
+
*
|
|
141
|
+
* Removes the state file from both standard and legacy locations.
|
|
142
|
+
* Returns information about what was removed.
|
|
143
|
+
*/
|
|
144
|
+
export function clearState(name, location) {
|
|
145
|
+
const result = {
|
|
146
|
+
removed: [],
|
|
147
|
+
notFound: [],
|
|
148
|
+
errors: []
|
|
149
|
+
};
|
|
150
|
+
// Determine which locations to check
|
|
151
|
+
const locationsToCheck = location
|
|
152
|
+
? [location]
|
|
153
|
+
: [StateLocation.LOCAL, StateLocation.GLOBAL];
|
|
154
|
+
// Remove from standard locations
|
|
155
|
+
for (const loc of locationsToCheck) {
|
|
156
|
+
const standardPath = getStatePath(name, loc);
|
|
157
|
+
try {
|
|
158
|
+
if (fs.existsSync(standardPath)) {
|
|
159
|
+
fs.unlinkSync(standardPath);
|
|
160
|
+
result.removed.push(standardPath);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
result.notFound.push(standardPath);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
result.errors.push({
|
|
168
|
+
path: standardPath,
|
|
169
|
+
error: error instanceof Error ? error.message : String(error)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Remove from legacy locations
|
|
174
|
+
const legacyPaths = getLegacyPaths(name);
|
|
175
|
+
for (const legacyPath of legacyPaths) {
|
|
176
|
+
const resolvedPath = path.isAbsolute(legacyPath)
|
|
177
|
+
? legacyPath
|
|
178
|
+
: path.join(process.cwd(), legacyPath);
|
|
179
|
+
try {
|
|
180
|
+
if (fs.existsSync(resolvedPath)) {
|
|
181
|
+
fs.unlinkSync(resolvedPath);
|
|
182
|
+
result.removed.push(resolvedPath);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
result.notFound.push(resolvedPath);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
result.errors.push({
|
|
190
|
+
path: resolvedPath,
|
|
191
|
+
error: error instanceof Error ? error.message : String(error)
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Migrate state from legacy location to standard location
|
|
199
|
+
*
|
|
200
|
+
* Finds state in legacy locations and moves it to the standard location.
|
|
201
|
+
* Deletes the legacy file after successful migration.
|
|
202
|
+
*/
|
|
203
|
+
export function migrateState(name, location = StateLocation.LOCAL) {
|
|
204
|
+
// Check if already in standard location
|
|
205
|
+
const standardPath = getStatePath(name, location);
|
|
206
|
+
if (fs.existsSync(standardPath)) {
|
|
207
|
+
return {
|
|
208
|
+
migrated: false
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// Look for legacy state
|
|
212
|
+
const readResult = readState(name, location, { checkLegacy: true });
|
|
213
|
+
if (!readResult.exists || !readResult.foundAt || !readResult.data) {
|
|
214
|
+
return {
|
|
215
|
+
migrated: false,
|
|
216
|
+
error: 'No legacy state found'
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
// Check if it's actually from a legacy location
|
|
220
|
+
const isLegacy = readResult.foundAt !== standardPath;
|
|
221
|
+
if (!isLegacy) {
|
|
222
|
+
return {
|
|
223
|
+
migrated: false
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
// Write to standard location
|
|
227
|
+
const writeResult = writeState(name, readResult.data, location);
|
|
228
|
+
if (!writeResult.success) {
|
|
229
|
+
return {
|
|
230
|
+
migrated: false,
|
|
231
|
+
error: `Failed to write to standard location: ${writeResult.error}`
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
// Delete legacy file
|
|
235
|
+
try {
|
|
236
|
+
fs.unlinkSync(readResult.foundAt);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
// Migration succeeded but cleanup failed - not critical
|
|
240
|
+
console.warn(`Failed to delete legacy state at ${readResult.foundAt}:`, error);
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
migrated: true,
|
|
244
|
+
from: readResult.foundAt,
|
|
245
|
+
to: writeResult.path
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* List all state files
|
|
250
|
+
*
|
|
251
|
+
* Returns information about all state files in the specified location(s).
|
|
252
|
+
*/
|
|
253
|
+
export function listStates(options) {
|
|
254
|
+
const results = [];
|
|
255
|
+
const includeLegacy = options?.includeLegacy ?? false;
|
|
256
|
+
const pattern = options?.pattern;
|
|
257
|
+
// Helper to check if name matches pattern
|
|
258
|
+
const matchesPattern = (name) => {
|
|
259
|
+
if (!pattern)
|
|
260
|
+
return true;
|
|
261
|
+
// Simple glob: * matches anything
|
|
262
|
+
const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
|
|
263
|
+
return regex.test(name);
|
|
264
|
+
};
|
|
265
|
+
// Helper to add state files from a directory
|
|
266
|
+
const addStatesFromDir = (dir, location, isLegacy = false) => {
|
|
267
|
+
if (!fs.existsSync(dir))
|
|
268
|
+
return;
|
|
269
|
+
try {
|
|
270
|
+
const files = fs.readdirSync(dir);
|
|
271
|
+
for (const file of files) {
|
|
272
|
+
if (!file.endsWith('.json'))
|
|
273
|
+
continue;
|
|
274
|
+
const name = file.slice(0, -5); // Remove .json
|
|
275
|
+
if (!matchesPattern(name))
|
|
276
|
+
continue;
|
|
277
|
+
const filePath = path.join(dir, file);
|
|
278
|
+
const stats = fs.statSync(filePath);
|
|
279
|
+
results.push({
|
|
280
|
+
name,
|
|
281
|
+
path: filePath,
|
|
282
|
+
location,
|
|
283
|
+
size: stats.size,
|
|
284
|
+
modified: stats.mtime,
|
|
285
|
+
isLegacy
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
console.warn(`Failed to list states from ${dir}:`, error);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
// Check standard locations
|
|
294
|
+
if (!options?.location || options.location === StateLocation.LOCAL) {
|
|
295
|
+
addStatesFromDir(LOCAL_STATE_DIR, StateLocation.LOCAL);
|
|
296
|
+
}
|
|
297
|
+
if (!options?.location || options.location === StateLocation.GLOBAL) {
|
|
298
|
+
addStatesFromDir(GLOBAL_STATE_DIR, StateLocation.GLOBAL);
|
|
299
|
+
}
|
|
300
|
+
// Check legacy locations if requested
|
|
301
|
+
if (includeLegacy) {
|
|
302
|
+
// Add logic to scan legacy locations
|
|
303
|
+
// This would require knowing all possible legacy locations
|
|
304
|
+
// For now, we skip this as legacy locations are name-specific
|
|
305
|
+
}
|
|
306
|
+
return results;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Cleanup orphaned state files
|
|
310
|
+
*
|
|
311
|
+
* Removes state files that haven't been modified in a long time.
|
|
312
|
+
* Useful for cleaning up abandoned states.
|
|
313
|
+
*/
|
|
314
|
+
export function cleanupOrphanedStates(options) {
|
|
315
|
+
const maxAgeDays = options?.maxAgeDays ?? 30;
|
|
316
|
+
const dryRun = options?.dryRun ?? false;
|
|
317
|
+
const exclude = options?.exclude ?? [];
|
|
318
|
+
const result = {
|
|
319
|
+
deleted: [],
|
|
320
|
+
wouldDelete: dryRun ? [] : undefined,
|
|
321
|
+
spaceFreed: 0,
|
|
322
|
+
errors: []
|
|
323
|
+
};
|
|
324
|
+
const cutoffDate = new Date();
|
|
325
|
+
cutoffDate.setDate(cutoffDate.getDate() - maxAgeDays);
|
|
326
|
+
const states = listStates({ includeLegacy: false });
|
|
327
|
+
for (const state of states) {
|
|
328
|
+
// Skip excluded patterns
|
|
329
|
+
if (exclude.some(pattern => {
|
|
330
|
+
const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
|
|
331
|
+
return regex.test(state.name);
|
|
332
|
+
})) {
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
// Check if old enough
|
|
336
|
+
if (state.modified > cutoffDate) {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
// Delete or record for dry run
|
|
340
|
+
if (dryRun) {
|
|
341
|
+
result.wouldDelete?.push(state.path);
|
|
342
|
+
result.spaceFreed += state.size;
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
try {
|
|
346
|
+
fs.unlinkSync(state.path);
|
|
347
|
+
result.deleted.push(state.path);
|
|
348
|
+
result.spaceFreed += state.size;
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
result.errors.push({
|
|
352
|
+
path: state.path,
|
|
353
|
+
error: error instanceof Error ? error.message : String(error)
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return result;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* State Manager Class
|
|
362
|
+
*
|
|
363
|
+
* Object-oriented interface for managing a specific state.
|
|
364
|
+
*/
|
|
365
|
+
export class StateManager {
|
|
366
|
+
name;
|
|
367
|
+
location;
|
|
368
|
+
constructor(name, location = StateLocation.LOCAL) {
|
|
369
|
+
this.name = name;
|
|
370
|
+
this.location = location;
|
|
371
|
+
}
|
|
372
|
+
read(options) {
|
|
373
|
+
return readState(this.name, this.location, options);
|
|
374
|
+
}
|
|
375
|
+
write(data, options) {
|
|
376
|
+
return writeState(this.name, data, this.location, options);
|
|
377
|
+
}
|
|
378
|
+
clear() {
|
|
379
|
+
return clearState(this.name, this.location);
|
|
380
|
+
}
|
|
381
|
+
migrate() {
|
|
382
|
+
return migrateState(this.name, this.location);
|
|
383
|
+
}
|
|
384
|
+
exists() {
|
|
385
|
+
return this.read({ checkLegacy: false }).exists;
|
|
386
|
+
}
|
|
387
|
+
get() {
|
|
388
|
+
return this.read().data;
|
|
389
|
+
}
|
|
390
|
+
set(data) {
|
|
391
|
+
return this.write(data).success;
|
|
392
|
+
}
|
|
393
|
+
update(updater) {
|
|
394
|
+
const current = this.get();
|
|
395
|
+
const updated = updater(current);
|
|
396
|
+
return this.set(updated);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Create a state manager for a specific state
|
|
401
|
+
*/
|
|
402
|
+
export function createStateManager(name, location = StateLocation.LOCAL) {
|
|
403
|
+
return new StateManager(name, location);
|
|
404
|
+
}
|
|
405
|
+
// Re-export enum, constants, and functions from types
|
|
406
|
+
export { StateLocation, DEFAULT_STATE_CONFIG, isStateLocation } from './types.js';
|
|
407
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/state-manager/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Manager Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for unified state management across
|
|
5
|
+
* local (.omc/state/) and global (~/.omc/state/) locations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Location where state should be stored
|
|
9
|
+
*/
|
|
10
|
+
export declare enum StateLocation {
|
|
11
|
+
/** Local project state: .omc/state/{name}.json */
|
|
12
|
+
LOCAL = "local",
|
|
13
|
+
/** Global user state: ~/.omc/state/{name}.json */
|
|
14
|
+
GLOBAL = "global"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Configuration for state operations
|
|
18
|
+
*/
|
|
19
|
+
export interface StateConfig {
|
|
20
|
+
/** State file name (without .json extension) */
|
|
21
|
+
name: string;
|
|
22
|
+
/** Where to store the state */
|
|
23
|
+
location: StateLocation;
|
|
24
|
+
/** Whether to create directories if they don't exist */
|
|
25
|
+
createDirs?: boolean;
|
|
26
|
+
/** Whether to check legacy locations when reading */
|
|
27
|
+
checkLegacy?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Result of a state read operation
|
|
31
|
+
*/
|
|
32
|
+
export interface StateReadResult<T = unknown> {
|
|
33
|
+
/** Whether state was found */
|
|
34
|
+
exists: boolean;
|
|
35
|
+
/** The state data (if found) */
|
|
36
|
+
data?: T;
|
|
37
|
+
/** Where the state was found */
|
|
38
|
+
foundAt?: string;
|
|
39
|
+
/** Legacy location that was checked */
|
|
40
|
+
legacyLocations?: string[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Result of a state write operation
|
|
44
|
+
*/
|
|
45
|
+
export interface StateWriteResult {
|
|
46
|
+
/** Whether write was successful */
|
|
47
|
+
success: boolean;
|
|
48
|
+
/** Path where state was written */
|
|
49
|
+
path: string;
|
|
50
|
+
/** Error message if failed */
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Result of a state clear operation
|
|
55
|
+
*/
|
|
56
|
+
export interface StateClearResult {
|
|
57
|
+
/** Paths that were removed */
|
|
58
|
+
removed: string[];
|
|
59
|
+
/** Paths that didn't exist */
|
|
60
|
+
notFound: string[];
|
|
61
|
+
/** Paths that failed to remove */
|
|
62
|
+
errors: Array<{
|
|
63
|
+
path: string;
|
|
64
|
+
error: string;
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Result of a state migration operation
|
|
69
|
+
*/
|
|
70
|
+
export interface StateMigrationResult {
|
|
71
|
+
/** Whether migration occurred */
|
|
72
|
+
migrated: boolean;
|
|
73
|
+
/** Source path (legacy location) */
|
|
74
|
+
from?: string;
|
|
75
|
+
/** Destination path (standard location) */
|
|
76
|
+
to?: string;
|
|
77
|
+
/** Error message if failed */
|
|
78
|
+
error?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Information about a state file
|
|
82
|
+
*/
|
|
83
|
+
export interface StateFileInfo {
|
|
84
|
+
/** State name */
|
|
85
|
+
name: string;
|
|
86
|
+
/** Full file path */
|
|
87
|
+
path: string;
|
|
88
|
+
/** Location type */
|
|
89
|
+
location: StateLocation;
|
|
90
|
+
/** File size in bytes */
|
|
91
|
+
size: number;
|
|
92
|
+
/** Last modified timestamp */
|
|
93
|
+
modified: Date;
|
|
94
|
+
/** Whether this is a legacy location */
|
|
95
|
+
isLegacy: boolean;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Options for listing states
|
|
99
|
+
*/
|
|
100
|
+
export interface ListStatesOptions {
|
|
101
|
+
/** Filter by location */
|
|
102
|
+
location?: StateLocation;
|
|
103
|
+
/** Include legacy locations */
|
|
104
|
+
includeLegacy?: boolean;
|
|
105
|
+
/** Filter by name pattern (glob) */
|
|
106
|
+
pattern?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Options for cleanup operation
|
|
110
|
+
*/
|
|
111
|
+
export interface CleanupOptions {
|
|
112
|
+
/** Maximum age in days for orphaned states */
|
|
113
|
+
maxAgeDays?: number;
|
|
114
|
+
/** Dry run - don't actually delete */
|
|
115
|
+
dryRun?: boolean;
|
|
116
|
+
/** Patterns to exclude from cleanup */
|
|
117
|
+
exclude?: string[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Result of cleanup operation
|
|
121
|
+
*/
|
|
122
|
+
export interface CleanupResult {
|
|
123
|
+
/** Files that were deleted */
|
|
124
|
+
deleted: string[];
|
|
125
|
+
/** Files that would be deleted (dry run) */
|
|
126
|
+
wouldDelete?: string[];
|
|
127
|
+
/** Total space freed in bytes */
|
|
128
|
+
spaceFreed: number;
|
|
129
|
+
/** Errors encountered */
|
|
130
|
+
errors: Array<{
|
|
131
|
+
path: string;
|
|
132
|
+
error: string;
|
|
133
|
+
}>;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Generic state data structure
|
|
137
|
+
*/
|
|
138
|
+
export type StateData = Record<string, unknown>;
|
|
139
|
+
/**
|
|
140
|
+
* Type guard for StateLocation
|
|
141
|
+
*/
|
|
142
|
+
export declare function isStateLocation(value: unknown): value is StateLocation;
|
|
143
|
+
/**
|
|
144
|
+
* Default state configuration
|
|
145
|
+
*/
|
|
146
|
+
export declare const DEFAULT_STATE_CONFIG: Partial<StateConfig>;
|
|
147
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/state-manager/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Manager Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for unified state management across
|
|
5
|
+
* local (.omc/state/) and global (~/.omc/state/) locations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Location where state should be stored
|
|
9
|
+
*/
|
|
10
|
+
export var StateLocation;
|
|
11
|
+
(function (StateLocation) {
|
|
12
|
+
/** Local project state: .omc/state/{name}.json */
|
|
13
|
+
StateLocation["LOCAL"] = "local";
|
|
14
|
+
/** Global user state: ~/.omc/state/{name}.json */
|
|
15
|
+
StateLocation["GLOBAL"] = "global";
|
|
16
|
+
})(StateLocation || (StateLocation = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Type guard for StateLocation
|
|
19
|
+
*/
|
|
20
|
+
export function isStateLocation(value) {
|
|
21
|
+
return value === StateLocation.LOCAL || value === StateLocation.GLOBAL;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default state configuration
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_STATE_CONFIG = {
|
|
27
|
+
createDirs: true,
|
|
28
|
+
checkLegacy: true
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/state-manager/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kDAAkD;IAClD,gCAAe,CAAA;IACf,kDAAkD;IAClD,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAiID;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,aAAa,CAAC,KAAK,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;CAClB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Decomposition Engine
|
|
3
|
+
*
|
|
4
|
+
* Analyzes tasks and splits them into parallelizable components
|
|
5
|
+
* with non-overlapping file ownership.
|
|
6
|
+
*/
|
|
7
|
+
import type { TaskAnalysis, Component, Subtask, SharedFile, DecompositionResult, ProjectContext } from './types.js';
|
|
8
|
+
export type { TaskAnalysis, Component, Subtask, SharedFile, DecompositionResult, ProjectContext, TaskType, ComponentRole, FileOwnership, DecompositionStrategy } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Main entry point: decompose a task into parallelizable subtasks
|
|
11
|
+
*/
|
|
12
|
+
export declare function decomposeTask(task: string, projectContext?: ProjectContext): Promise<DecompositionResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Analyze task to understand structure and requirements
|
|
15
|
+
*/
|
|
16
|
+
export declare function analyzeTask(task: string, context: ProjectContext): TaskAnalysis;
|
|
17
|
+
/**
|
|
18
|
+
* Identify parallelizable components from analysis
|
|
19
|
+
*/
|
|
20
|
+
export declare function identifyComponents(analysis: TaskAnalysis, context: ProjectContext): Component[];
|
|
21
|
+
/**
|
|
22
|
+
* Generate subtasks from components
|
|
23
|
+
*/
|
|
24
|
+
export declare function generateSubtasks(components: Component[], analysis: TaskAnalysis, context: ProjectContext): Subtask[];
|
|
25
|
+
/**
|
|
26
|
+
* Assign non-overlapping file ownership to subtasks
|
|
27
|
+
*/
|
|
28
|
+
export declare function assignFileOwnership(subtasks: Subtask[], sharedFiles: SharedFile[], context: ProjectContext): void;
|
|
29
|
+
/**
|
|
30
|
+
* Identify files that should be managed by coordinator
|
|
31
|
+
*/
|
|
32
|
+
export declare function identifySharedFiles(components: Component[], context: ProjectContext): SharedFile[];
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/task-decomposer/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,cAAc,EAKf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,aAAa,EACb,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,cAA2C,GAC1D,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,YAAY,CAkCd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,cAAc,GACtB,SAAS,EAAE,CAsBb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,cAAc,GACtB,OAAO,EAAE,CAsBX;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,EAAE,cAAc,GACtB,IAAI,CAoCN;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE,cAAc,GACtB,UAAU,EAAE,CA4Cd"}
|