oh-my-codex 0.4.3 → 0.5.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 +17 -10
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +7 -13
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/native-config.d.ts +20 -0
- package/dist/agents/native-config.d.ts.map +1 -0
- package/dist/agents/native-config.js +84 -0
- package/dist/agents/native-config.js.map +1 -0
- package/dist/catalog/__tests__/generator.test.d.ts +2 -0
- package/dist/catalog/__tests__/generator.test.d.ts.map +1 -0
- package/dist/catalog/__tests__/generator.test.js +42 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -0
- package/dist/catalog/__tests__/schema.test.d.ts +2 -0
- package/dist/catalog/__tests__/schema.test.d.ts.map +1 -0
- package/dist/catalog/__tests__/schema.test.js +33 -0
- package/dist/catalog/__tests__/schema.test.js.map +1 -0
- package/dist/catalog/reader.d.ts +19 -0
- package/dist/catalog/reader.d.ts.map +1 -0
- package/dist/catalog/reader.js +63 -0
- package/dist/catalog/reader.js.map +1 -0
- package/dist/catalog/schema.d.ts +32 -0
- package/dist/catalog/schema.d.ts.map +1 -0
- package/dist/catalog/schema.js +101 -0
- package/dist/catalog/schema.js.map +1 -0
- package/dist/cli/__tests__/index.test.js +109 -1
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-scope.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-scope.test.js +164 -0
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -0
- package/dist/cli/catalog-contract.d.ts +10 -0
- package/dist/cli/catalog-contract.d.ts.map +1 -0
- package/dist/cli/catalog-contract.js +24 -0
- package/dist/cli/catalog-contract.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +7 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +124 -99
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup.d.ts +3 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +208 -47
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +28 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/generator.d.ts +1 -0
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +34 -2
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/code-simplifier/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.js +135 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.js.map +1 -0
- package/dist/hooks/code-simplifier/index.d.ts +74 -0
- package/dist/hooks/code-simplifier/index.d.ts.map +1 -0
- package/dist/hooks/code-simplifier/index.js +145 -0
- package/dist/hooks/code-simplifier/index.js.map +1 -0
- package/dist/hooks/emulator.d.ts.map +1 -1
- package/dist/hooks/emulator.js +0 -1
- package/dist/hooks/emulator.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +0 -3
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/notifications/__tests__/tmux.test.js +61 -1
- package/dist/notifications/__tests__/tmux.test.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.d.ts +2 -0
- package/dist/notifications/__tests__/verbosity.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/verbosity.test.js +202 -0
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -0
- package/dist/notifications/config.d.ts +14 -1
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +52 -0
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +14 -0
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/index.d.ts +3 -3
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +14 -4
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/tmux.d.ts +6 -0
- package/dist/notifications/tmux.d.ts.map +1 -1
- package/dist/notifications/tmux.js +31 -1
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/notifications/types.d.ts +13 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/team/__tests__/model-contract.test.d.ts +2 -0
- package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +47 -0
- package/dist/team/__tests__/model-contract.test.js.map +1 -0
- package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
- package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
- package/dist/team/__tests__/phase-controller.test.js +36 -0
- package/dist/team/__tests__/phase-controller.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +112 -8
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +71 -1
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/model-contract.d.ts +19 -0
- package/dist/team/model-contract.d.ts.map +1 -0
- package/dist/team/model-contract.js +123 -0
- package/dist/team/model-contract.js.map +1 -0
- package/dist/team/orchestrator.d.ts.map +1 -1
- package/dist/team/orchestrator.js +0 -1
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/phase-controller.d.ts +10 -0
- package/dist/team/phase-controller.d.ts.map +1 -0
- package/dist/team/phase-controller.js +128 -0
- package/dist/team/phase-controller.js.map +1 -0
- package/dist/team/runtime.d.ts +3 -3
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +40 -74
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state.d.ts +15 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +35 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-ops.d.ts +3 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +2 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +12 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +33 -1
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +4 -0
- package/dist/utils/paths.js.map +1 -1
- package/package.json +2 -2
- package/prompts/code-simplifier.md +91 -0
- package/prompts/product-analyst.md +7 -7
- package/scripts/generate-catalog-docs.js +111 -0
- package/scripts/notify-hook.js +36 -1
- package/skills/build-fix/SKILL.md +3 -3
- package/skills/code-review/SKILL.md +3 -3
- package/skills/help/SKILL.md +4 -4
- package/skills/omx-setup/SKILL.md +24 -15
- package/skills/research/SKILL.md +28 -28
- package/skills/security-review/SKILL.md +3 -3
- package/templates/AGENTS.md +1 -8
- package/templates/catalog-manifest.json +397 -0
- package/prompts/deep-executor.md +0 -19
- package/prompts/scientist.md +0 -89
- package/skills/deepinit/SKILL.md +0 -320
- package/skills/learn-about-omx/SKILL.md +0 -37
- package/skills/learner/SKILL.md +0 -135
- package/skills/pipeline/SKILL.md +0 -407
- package/skills/project-session-manager/SKILL.md +0 -560
- package/skills/psm/SKILL.md +0 -20
- package/skills/release/SKILL.md +0 -83
- package/skills/ultrapilot/SKILL.md +0 -627
- package/skills/writer-memory/SKILL.md +0 -443
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { describe, it, beforeEach, afterEach } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { existsSync, mkdirSync, rmSync, readFileSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { tmpdir } from 'os';
|
|
6
|
+
import { isAlreadyTriggered, writeTriggerMarker, clearTriggerMarker, buildSimplifierMessage, getModifiedFiles, processCodeSimplifier, TRIGGER_MARKER_FILENAME, } from '../index.js';
|
|
7
|
+
function makeTmpDir() {
|
|
8
|
+
const dir = join(tmpdir(), `omx-cs-test-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`);
|
|
9
|
+
mkdirSync(dir, { recursive: true });
|
|
10
|
+
return dir;
|
|
11
|
+
}
|
|
12
|
+
describe('code-simplifier trigger marker', () => {
|
|
13
|
+
let stateDir;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
stateDir = makeTmpDir();
|
|
16
|
+
});
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
rmSync(stateDir, { recursive: true, force: true });
|
|
19
|
+
});
|
|
20
|
+
it('reports not triggered when marker absent', () => {
|
|
21
|
+
assert.equal(isAlreadyTriggered(stateDir), false);
|
|
22
|
+
});
|
|
23
|
+
it('writes marker and detects it', () => {
|
|
24
|
+
writeTriggerMarker(stateDir);
|
|
25
|
+
assert.equal(isAlreadyTriggered(stateDir), true);
|
|
26
|
+
assert.ok(existsSync(join(stateDir, TRIGGER_MARKER_FILENAME)));
|
|
27
|
+
});
|
|
28
|
+
it('clears marker', () => {
|
|
29
|
+
writeTriggerMarker(stateDir);
|
|
30
|
+
assert.equal(isAlreadyTriggered(stateDir), true);
|
|
31
|
+
clearTriggerMarker(stateDir);
|
|
32
|
+
assert.equal(isAlreadyTriggered(stateDir), false);
|
|
33
|
+
});
|
|
34
|
+
it('clear is idempotent when no marker exists', () => {
|
|
35
|
+
clearTriggerMarker(stateDir);
|
|
36
|
+
assert.equal(isAlreadyTriggered(stateDir), false);
|
|
37
|
+
});
|
|
38
|
+
it('writes marker with ISO timestamp content', () => {
|
|
39
|
+
writeTriggerMarker(stateDir);
|
|
40
|
+
const content = readFileSync(join(stateDir, TRIGGER_MARKER_FILENAME), 'utf-8');
|
|
41
|
+
// ISO 8601 date pattern
|
|
42
|
+
assert.match(content, /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/);
|
|
43
|
+
});
|
|
44
|
+
it('creates state directory if it does not exist', () => {
|
|
45
|
+
const nested = join(stateDir, 'deep', 'nested');
|
|
46
|
+
assert.equal(existsSync(nested), false);
|
|
47
|
+
writeTriggerMarker(nested);
|
|
48
|
+
assert.ok(existsSync(nested));
|
|
49
|
+
assert.ok(existsSync(join(nested, TRIGGER_MARKER_FILENAME)));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('buildSimplifierMessage', () => {
|
|
53
|
+
it('includes all file paths', () => {
|
|
54
|
+
const msg = buildSimplifierMessage(['src/foo.ts', 'src/bar.tsx']);
|
|
55
|
+
assert.match(msg, /src\/foo\.ts/);
|
|
56
|
+
assert.match(msg, /src\/bar\.tsx/);
|
|
57
|
+
});
|
|
58
|
+
it('includes CODE SIMPLIFIER marker', () => {
|
|
59
|
+
const msg = buildSimplifierMessage(['a.ts']);
|
|
60
|
+
assert.match(msg, /\[CODE SIMPLIFIER\]/);
|
|
61
|
+
});
|
|
62
|
+
it('includes delegation instruction', () => {
|
|
63
|
+
const msg = buildSimplifierMessage(['a.ts']);
|
|
64
|
+
assert.match(msg, /@code-simplifier/);
|
|
65
|
+
});
|
|
66
|
+
it('formats file list with bullet points', () => {
|
|
67
|
+
const msg = buildSimplifierMessage(['src/a.ts', 'src/b.ts']);
|
|
68
|
+
const lines = msg.split('\n');
|
|
69
|
+
const bullets = lines.filter((l) => l.trimStart().startsWith('- '));
|
|
70
|
+
assert.equal(bullets.length, 2);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('getModifiedFiles', () => {
|
|
74
|
+
it('returns empty array for non-git directory', () => {
|
|
75
|
+
const dir = makeTmpDir();
|
|
76
|
+
try {
|
|
77
|
+
const files = getModifiedFiles(dir);
|
|
78
|
+
assert.deepEqual(files, []);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
rmSync(dir, { recursive: true, force: true });
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
it('filters by extension', () => {
|
|
85
|
+
// getModifiedFiles calls git internally; test the filter logic indirectly
|
|
86
|
+
// by checking that calling with empty extensions returns empty
|
|
87
|
+
const dir = makeTmpDir();
|
|
88
|
+
try {
|
|
89
|
+
const files = getModifiedFiles(dir, [], 10);
|
|
90
|
+
assert.deepEqual(files, []);
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
rmSync(dir, { recursive: true, force: true });
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
it('respects maxFiles limit', () => {
|
|
97
|
+
const dir = makeTmpDir();
|
|
98
|
+
try {
|
|
99
|
+
const files = getModifiedFiles(dir, ['.ts'], 0);
|
|
100
|
+
assert.deepEqual(files, []);
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
rmSync(dir, { recursive: true, force: true });
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('processCodeSimplifier', () => {
|
|
108
|
+
let stateDir;
|
|
109
|
+
let cwd;
|
|
110
|
+
beforeEach(() => {
|
|
111
|
+
stateDir = makeTmpDir();
|
|
112
|
+
cwd = makeTmpDir();
|
|
113
|
+
});
|
|
114
|
+
afterEach(() => {
|
|
115
|
+
rmSync(stateDir, { recursive: true, force: true });
|
|
116
|
+
rmSync(cwd, { recursive: true, force: true });
|
|
117
|
+
});
|
|
118
|
+
it('returns not triggered when disabled (no config)', () => {
|
|
119
|
+
// processCodeSimplifier reads ~/.omx/config.json which likely has
|
|
120
|
+
// codeSimplifier.enabled = false or absent in test environments
|
|
121
|
+
const result = processCodeSimplifier(cwd, stateDir);
|
|
122
|
+
assert.equal(result.triggered, false);
|
|
123
|
+
assert.equal(result.message, '');
|
|
124
|
+
});
|
|
125
|
+
it('clears marker on second call (cycle prevention)', () => {
|
|
126
|
+
// Simulate a marker from a previous trigger
|
|
127
|
+
writeTriggerMarker(stateDir);
|
|
128
|
+
assert.equal(isAlreadyTriggered(stateDir), true);
|
|
129
|
+
// Even if config is disabled, the marker-clearing logic is tested
|
|
130
|
+
// by directly checking marker state
|
|
131
|
+
clearTriggerMarker(stateDir);
|
|
132
|
+
assert.equal(isAlreadyTriggered(stateDir), false);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/hooks/code-simplifier/__tests__/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Simplifier Stop Hook
|
|
3
|
+
*
|
|
4
|
+
* Intercepts agent turn completions to automatically delegate recently modified
|
|
5
|
+
* files to the code-simplifier agent for cleanup and simplification.
|
|
6
|
+
*
|
|
7
|
+
* Opt-in via ~/.omx/config.json: { "codeSimplifier": { "enabled": true } }
|
|
8
|
+
* Default: disabled (opt-in only)
|
|
9
|
+
*/
|
|
10
|
+
/** Config shape for the code-simplifier feature */
|
|
11
|
+
export interface CodeSimplifierConfig {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
/** File extensions to include (default: common source extensions) */
|
|
14
|
+
extensions?: string[];
|
|
15
|
+
/** Maximum number of files to simplify per trigger (default: 10) */
|
|
16
|
+
maxFiles?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Global OMX config shape (subset relevant to code-simplifier) */
|
|
19
|
+
interface OmxGlobalConfig {
|
|
20
|
+
codeSimplifier?: CodeSimplifierConfig;
|
|
21
|
+
}
|
|
22
|
+
/** Result returned from processCodeSimplifier */
|
|
23
|
+
export interface CodeSimplifierResult {
|
|
24
|
+
triggered: boolean;
|
|
25
|
+
message: string;
|
|
26
|
+
}
|
|
27
|
+
/** Marker filename used to prevent re-triggering within the same turn cycle */
|
|
28
|
+
export declare const TRIGGER_MARKER_FILENAME = "code-simplifier-triggered.marker";
|
|
29
|
+
/**
|
|
30
|
+
* Read the global OMX config from ~/.omx/config.json.
|
|
31
|
+
* Returns null if the file does not exist or cannot be parsed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function readOmxConfig(): OmxGlobalConfig | null;
|
|
34
|
+
/**
|
|
35
|
+
* Check whether the code-simplifier feature is enabled in config.
|
|
36
|
+
* Disabled by default — requires explicit opt-in.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isCodeSimplifierEnabled(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Get list of recently modified source files via `git diff HEAD --name-only`.
|
|
41
|
+
* Returns an empty array if git is unavailable or no files are modified.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getModifiedFiles(cwd: string, extensions?: string[], maxFiles?: number): string[];
|
|
44
|
+
/**
|
|
45
|
+
* Check whether the code-simplifier was already triggered this turn
|
|
46
|
+
* (marker file present in the state directory).
|
|
47
|
+
*/
|
|
48
|
+
export declare function isAlreadyTriggered(stateDir: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Write the trigger marker to prevent re-triggering in the same turn cycle.
|
|
51
|
+
*/
|
|
52
|
+
export declare function writeTriggerMarker(stateDir: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Clear the trigger marker after a completed simplification round,
|
|
55
|
+
* allowing the hook to trigger again on the next turn.
|
|
56
|
+
*/
|
|
57
|
+
export declare function clearTriggerMarker(stateDir: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Build the message injected into the agent's context when code-simplifier triggers.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildSimplifierMessage(files: string[]): string;
|
|
62
|
+
/**
|
|
63
|
+
* Process the code-simplifier hook logic.
|
|
64
|
+
*
|
|
65
|
+
* Logic:
|
|
66
|
+
* 1. Return early (no trigger) if the feature is disabled
|
|
67
|
+
* 2. If already triggered this turn (marker present), clear marker and skip
|
|
68
|
+
* 3. Get modified files via git diff HEAD
|
|
69
|
+
* 4. Return early if no relevant files are modified
|
|
70
|
+
* 5. Write trigger marker and build the simplifier delegation message
|
|
71
|
+
*/
|
|
72
|
+
export declare function processCodeSimplifier(cwd: string, stateDir: string): CodeSimplifierResult;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/code-simplifier/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mEAAmE;AACnE,UAAU,eAAe;IACvB,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,aAAa,IAAI,eAAe,GAAG,IAAI,CAYtD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,MAAM,EAAuB,EACzC,QAAQ,GAAE,MAA0B,GACnC,MAAM,EAAE,CAkBV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAW9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,oBAAoB,CA0BtB"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Simplifier Stop Hook
|
|
3
|
+
*
|
|
4
|
+
* Intercepts agent turn completions to automatically delegate recently modified
|
|
5
|
+
* files to the code-simplifier agent for cleanup and simplification.
|
|
6
|
+
*
|
|
7
|
+
* Opt-in via ~/.omx/config.json: { "codeSimplifier": { "enabled": true } }
|
|
8
|
+
* Default: disabled (opt-in only)
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import { execSync } from 'child_process';
|
|
14
|
+
const DEFAULT_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.rs'];
|
|
15
|
+
const DEFAULT_MAX_FILES = 10;
|
|
16
|
+
/** Marker filename used to prevent re-triggering within the same turn cycle */
|
|
17
|
+
export const TRIGGER_MARKER_FILENAME = 'code-simplifier-triggered.marker';
|
|
18
|
+
/**
|
|
19
|
+
* Read the global OMX config from ~/.omx/config.json.
|
|
20
|
+
* Returns null if the file does not exist or cannot be parsed.
|
|
21
|
+
*/
|
|
22
|
+
export function readOmxConfig() {
|
|
23
|
+
const configPath = join(homedir(), '.omx', 'config.json');
|
|
24
|
+
if (!existsSync(configPath)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check whether the code-simplifier feature is enabled in config.
|
|
36
|
+
* Disabled by default — requires explicit opt-in.
|
|
37
|
+
*/
|
|
38
|
+
export function isCodeSimplifierEnabled() {
|
|
39
|
+
const config = readOmxConfig();
|
|
40
|
+
return config?.codeSimplifier?.enabled === true;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get list of recently modified source files via `git diff HEAD --name-only`.
|
|
44
|
+
* Returns an empty array if git is unavailable or no files are modified.
|
|
45
|
+
*/
|
|
46
|
+
export function getModifiedFiles(cwd, extensions = DEFAULT_EXTENSIONS, maxFiles = DEFAULT_MAX_FILES) {
|
|
47
|
+
try {
|
|
48
|
+
const output = execSync('git diff HEAD --name-only', {
|
|
49
|
+
cwd,
|
|
50
|
+
encoding: 'utf-8',
|
|
51
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
52
|
+
timeout: 5000,
|
|
53
|
+
});
|
|
54
|
+
return output
|
|
55
|
+
.trim()
|
|
56
|
+
.split('\n')
|
|
57
|
+
.filter((file) => file.trim().length > 0)
|
|
58
|
+
.filter((file) => extensions.some((ext) => file.endsWith(ext)))
|
|
59
|
+
.slice(0, maxFiles);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check whether the code-simplifier was already triggered this turn
|
|
67
|
+
* (marker file present in the state directory).
|
|
68
|
+
*/
|
|
69
|
+
export function isAlreadyTriggered(stateDir) {
|
|
70
|
+
return existsSync(join(stateDir, TRIGGER_MARKER_FILENAME));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Write the trigger marker to prevent re-triggering in the same turn cycle.
|
|
74
|
+
*/
|
|
75
|
+
export function writeTriggerMarker(stateDir) {
|
|
76
|
+
try {
|
|
77
|
+
if (!existsSync(stateDir)) {
|
|
78
|
+
mkdirSync(stateDir, { recursive: true });
|
|
79
|
+
}
|
|
80
|
+
writeFileSync(join(stateDir, TRIGGER_MARKER_FILENAME), new Date().toISOString(), 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Ignore write errors — marker is best-effort
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Clear the trigger marker after a completed simplification round,
|
|
88
|
+
* allowing the hook to trigger again on the next turn.
|
|
89
|
+
*/
|
|
90
|
+
export function clearTriggerMarker(stateDir) {
|
|
91
|
+
try {
|
|
92
|
+
const markerPath = join(stateDir, TRIGGER_MARKER_FILENAME);
|
|
93
|
+
if (existsSync(markerPath)) {
|
|
94
|
+
unlinkSync(markerPath);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Ignore removal errors
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Build the message injected into the agent's context when code-simplifier triggers.
|
|
103
|
+
*/
|
|
104
|
+
export function buildSimplifierMessage(files) {
|
|
105
|
+
const fileList = files.map((f) => ` - ${f}`).join('\n');
|
|
106
|
+
const fileArgs = files.join('\\n');
|
|
107
|
+
return (`[CODE SIMPLIFIER] Recently modified files detected. Delegate to the ` +
|
|
108
|
+
`code-simplifier agent to simplify the following files for clarity, ` +
|
|
109
|
+
`consistency, and maintainability (without changing behavior):\n\n` +
|
|
110
|
+
`${fileList}\n\n` +
|
|
111
|
+
`Use: @code-simplifier "Simplify the recently modified files:\\n${fileArgs}"`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Process the code-simplifier hook logic.
|
|
115
|
+
*
|
|
116
|
+
* Logic:
|
|
117
|
+
* 1. Return early (no trigger) if the feature is disabled
|
|
118
|
+
* 2. If already triggered this turn (marker present), clear marker and skip
|
|
119
|
+
* 3. Get modified files via git diff HEAD
|
|
120
|
+
* 4. Return early if no relevant files are modified
|
|
121
|
+
* 5. Write trigger marker and build the simplifier delegation message
|
|
122
|
+
*/
|
|
123
|
+
export function processCodeSimplifier(cwd, stateDir) {
|
|
124
|
+
if (!isCodeSimplifierEnabled()) {
|
|
125
|
+
return { triggered: false, message: '' };
|
|
126
|
+
}
|
|
127
|
+
// If already triggered this turn, clear marker and allow normal flow
|
|
128
|
+
if (isAlreadyTriggered(stateDir)) {
|
|
129
|
+
clearTriggerMarker(stateDir);
|
|
130
|
+
return { triggered: false, message: '' };
|
|
131
|
+
}
|
|
132
|
+
const config = readOmxConfig();
|
|
133
|
+
const extensions = config?.codeSimplifier?.extensions ?? DEFAULT_EXTENSIONS;
|
|
134
|
+
const maxFiles = config?.codeSimplifier?.maxFiles ?? DEFAULT_MAX_FILES;
|
|
135
|
+
const files = getModifiedFiles(cwd, extensions, maxFiles);
|
|
136
|
+
if (files.length === 0) {
|
|
137
|
+
return { triggered: false, message: '' };
|
|
138
|
+
}
|
|
139
|
+
writeTriggerMarker(stateDir);
|
|
140
|
+
return {
|
|
141
|
+
triggered: true,
|
|
142
|
+
message: buildSimplifierMessage(files),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/code-simplifier/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulator.d.ts","sourceRoot":"","sources":["../../src/hooks/emulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf,CA8CA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"emulator.d.ts","sourceRoot":"","sources":["../../src/hooks/emulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,YAAY,GACZ,MAAM,GACN,YAAY,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf,CA8CA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAenD,CAAC;AAEF;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAcxD"}
|
package/dist/hooks/emulator.js
CHANGED
|
@@ -87,7 +87,6 @@ export const KEYWORD_TRIGGERS = {
|
|
|
87
87
|
'coordinated team': 'Activate coordinated team mode',
|
|
88
88
|
'swarm': 'Activate coordinated team mode (swarm is a compatibility alias for team)',
|
|
89
89
|
'coordinated swarm': 'Activate coordinated team mode (swarm is a compatibility alias for team)',
|
|
90
|
-
'pipeline': 'Activate sequential pipeline mode',
|
|
91
90
|
'research': 'Activate parallel research mode',
|
|
92
91
|
'cancel': 'Cancel active execution modes',
|
|
93
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/hooks/emulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAgBH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAIpB;IACH,YAAY,EAAE;QACZ,SAAS,EAAE,4CAA4C;QACvD,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,yHAAyH;KACjI;IACD,UAAU,EAAE;QACV,SAAS,EAAE,2BAA2B;QACtC,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,qFAAqF;KAC7F;IACD,WAAW,EAAE;QACX,SAAS,EAAE,iCAAiC;QAC5C,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,4EAA4E;KACpF;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,uCAAuC;QAClD,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,4EAA4E;KACpF;IACD,aAAa,EAAE;QACb,SAAS,EAAE,8BAA8B;QACzC,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6DAA6D;KACrE;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,8BAA8B;QACzC,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6DAA6D;KACrE;IACD,UAAU,EAAE;QACV,SAAS,EAAE,uCAAuC;QAClD,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,sHAAsH;KAC9H;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,oCAAoC;QAC/C,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6FAA6F;KACrG;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gCAAgC;QAC3C,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,2FAA2F;KACnG;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,WAAW,EAAE,mDAAmD;IAChE,OAAO,EAAE,mDAAmD;IAC5D,WAAW,EAAE,4CAA4C;IACzD,KAAK,EAAE,4CAA4C;IACnD,SAAS,EAAE,gDAAgD;IAC3D,KAAK,EAAE,gDAAgD;IACvD,MAAM,EAAE,yBAAyB;IACjC,SAAS,EAAE,4DAA4D;IACvE,MAAM,EAAE,gCAAgC;IACxC,kBAAkB,EAAE,gCAAgC;IACpD,OAAO,EAAE,0EAA0E;IACnF,mBAAmB,EAAE,0EAA0E;IAC/F,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/hooks/emulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAgBH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAIpB;IACH,YAAY,EAAE;QACZ,SAAS,EAAE,4CAA4C;QACvD,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,yHAAyH;KACjI;IACD,UAAU,EAAE;QACV,SAAS,EAAE,2BAA2B;QACtC,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,qFAAqF;KAC7F;IACD,WAAW,EAAE;QACX,SAAS,EAAE,iCAAiC;QAC5C,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,4EAA4E;KACpF;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,uCAAuC;QAClD,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,4EAA4E;KACpF;IACD,aAAa,EAAE;QACb,SAAS,EAAE,8BAA8B;QACzC,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6DAA6D;KACrE;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,8BAA8B;QACzC,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6DAA6D;KACrE;IACD,UAAU,EAAE;QACV,SAAS,EAAE,uCAAuC;QAClD,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,sHAAsH;KAC9H;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,oCAAoC;QAC/C,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,6FAA6F;KACrG;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gCAAgC;QAC3C,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,2FAA2F;KACnG;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,WAAW,EAAE,mDAAmD;IAChE,OAAO,EAAE,mDAAmD;IAC5D,WAAW,EAAE,4CAA4C;IACzD,KAAK,EAAE,4CAA4C;IACnD,SAAS,EAAE,gDAAgD;IAC3D,KAAK,EAAE,gDAAgD;IACvD,MAAM,EAAE,yBAAyB;IACjC,SAAS,EAAE,4DAA4D;IACvE,MAAM,EAAE,gCAAgC;IACxC,kBAAkB,EAAE,gCAAgC;IACpD,OAAO,EAAE,0EAA0E;IACnF,mBAAmB,EAAE,0EAA0E;IAC/F,UAAU,EAAE,iCAAiC;IAC7C,QAAQ,EAAE,+BAA+B;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,qBAAqB,OAAO,MAAM,MAAM,EAAE,CAAC;SACtE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;EAGP,KAAK;;;;;CAKN,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword-detector.d.ts","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"keyword-detector.d.ts","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAe3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGtE"}
|
|
@@ -16,14 +16,12 @@ const KEYWORD_MAP = [
|
|
|
16
16
|
{ pattern: /\bralph\b/i, skill: 'ralph', priority: 10 },
|
|
17
17
|
{ pattern: /\bultrawork\b|\bulw\b/i, skill: 'ultrawork', priority: 10 },
|
|
18
18
|
{ pattern: /\becomode\b|\beco\b/i, skill: 'ecomode', priority: 10 },
|
|
19
|
-
{ pattern: /\bultrapilot\b/i, skill: 'ultrapilot', priority: 10 },
|
|
20
19
|
// Planning
|
|
21
20
|
{ pattern: /\bralplan\b/i, skill: 'ralplan', priority: 9 },
|
|
22
21
|
{ pattern: /\bplan\s+(?:this|the)\b/i, skill: 'plan', priority: 8 },
|
|
23
22
|
// Coordination
|
|
24
23
|
{ pattern: /\bteam\b|\bcoordinated\s+team\b/i, skill: 'team', priority: 8 },
|
|
25
24
|
{ pattern: /\bswarm\b|\bcoordinated\s+swarm\b/i, skill: 'team', priority: 8 },
|
|
26
|
-
{ pattern: /\bpipeline\b/i, skill: 'pipeline', priority: 8 },
|
|
27
25
|
{ pattern: /\bresearch\b/i, skill: 'research', priority: 7 },
|
|
28
26
|
// Shortcuts
|
|
29
27
|
{ pattern: /\banalyze\b|\bdebug\b|\binvestigate\b/i, skill: 'analyze', priority: 6 },
|
|
@@ -32,7 +30,6 @@ const KEYWORD_MAP = [
|
|
|
32
30
|
{ pattern: /\bfix.build\b|\btype.errors?\b/i, skill: 'build-fix', priority: 6 },
|
|
33
31
|
{ pattern: /\breview.code\b|\bcode.review\b/i, skill: 'code-review', priority: 6 },
|
|
34
32
|
{ pattern: /\bsecurity.review\b/i, skill: 'security-review', priority: 6 },
|
|
35
|
-
{ pattern: /\bdeepinit\b/i, skill: 'deepinit', priority: 6 },
|
|
36
33
|
// Utilities
|
|
37
34
|
{ pattern: /\bcancel\b.*\b(?:mode|all)\b/i, skill: 'cancel', priority: 5 },
|
|
38
35
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyword-detector.js","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,GAAgE;IAC/E,kBAAkB;IAClB,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/D,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvE,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"keyword-detector.js","sourceRoot":"","sources":["../../src/hooks/keyword-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,GAAgE;IAC/E,kBAAkB;IAClB,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/D,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,EAAE,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvE,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IAEnE,WAAW;IACX,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC1D,EAAE,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;IAEnE,eAAe;IACf,EAAE,OAAO,EAAE,kCAAkC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC3E,EAAE,OAAO,EAAE,oCAAoC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC7E,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IAE5D,YAAY;IACZ,EAAE,OAAO,EAAE,wCAAwC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;IACpF,EAAE,OAAO,EAAE,sCAAsC,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE;IACrF,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE;IACjE,EAAE,OAAO,EAAE,iCAAiC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC/E,EAAE,OAAO,EAAE,kCAAkC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE;IAClF,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,EAAE;IAE1E,YAAY;IACZ,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE;CAC3E,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjB,KAAK;gBACL,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,5 +14,6 @@ export { doctor } from './cli/doctor.js';
|
|
|
14
14
|
export { version } from './cli/version.js';
|
|
15
15
|
export { mergeConfig } from './config/generator.js';
|
|
16
16
|
export { AGENT_DEFINITIONS, type AgentDefinition } from './agents/definitions.js';
|
|
17
|
+
export { generateAgentToml, installNativeAgentConfigs } from './agents/native-config.js';
|
|
17
18
|
export { hudCommand } from './hud/index.js';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,5 +14,6 @@ export { doctor } from './cli/doctor.js';
|
|
|
14
14
|
export { version } from './cli/version.js';
|
|
15
15
|
export { mergeConfig } from './config/generator.js';
|
|
16
16
|
export { AGENT_DEFINITIONS } from './agents/definitions.js';
|
|
17
|
+
export { generateAgentToml, installNativeAgentConfigs } from './agents/native-config.js';
|
|
17
18
|
export { hudCommand } from './hud/index.js';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAwB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { describe, it, afterEach } from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
|
-
import {
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { mkdtempSync, chmodSync, rmSync, writeFileSync } from 'node:fs';
|
|
6
|
+
import { getCurrentTmuxSession, getCurrentTmuxPaneId, formatTmuxInfo, getTeamTmuxSessions, captureTmuxPane, } from '../tmux.js';
|
|
4
7
|
describe('getCurrentTmuxSession', () => {
|
|
5
8
|
const originalTmux = process.env.TMUX;
|
|
6
9
|
afterEach(() => {
|
|
@@ -87,4 +90,61 @@ describe('getTeamTmuxSessions', () => {
|
|
|
87
90
|
assert.ok(Array.isArray(result));
|
|
88
91
|
});
|
|
89
92
|
});
|
|
93
|
+
describe('captureTmuxPane', () => {
|
|
94
|
+
const originalPath = process.env.PATH;
|
|
95
|
+
const originalTmux = process.env.TMUX;
|
|
96
|
+
const originalPane = process.env.TMUX_PANE;
|
|
97
|
+
const tmpDirs = [];
|
|
98
|
+
afterEach(() => {
|
|
99
|
+
process.env.PATH = originalPath;
|
|
100
|
+
if (originalTmux !== undefined) {
|
|
101
|
+
process.env.TMUX = originalTmux;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
delete process.env.TMUX;
|
|
105
|
+
}
|
|
106
|
+
if (originalPane !== undefined) {
|
|
107
|
+
process.env.TMUX_PANE = originalPane;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
delete process.env.TMUX_PANE;
|
|
111
|
+
}
|
|
112
|
+
for (const dir of tmpDirs.splice(0)) {
|
|
113
|
+
rmSync(dir, { recursive: true, force: true });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
it('returns null for invalid pane targets', () => {
|
|
117
|
+
assert.equal(captureTmuxPane('1'), null);
|
|
118
|
+
assert.equal(captureTmuxPane('abc'), null);
|
|
119
|
+
assert.equal(captureTmuxPane('%1;rm -rf /'), null);
|
|
120
|
+
});
|
|
121
|
+
it('returns null for invalid TMUX_PANE env target', () => {
|
|
122
|
+
process.env.TMUX = '/tmp/tmux-1000/default,12345,0';
|
|
123
|
+
process.env.TMUX_PANE = 'invalid';
|
|
124
|
+
assert.equal(captureTmuxPane(undefined, 10), null);
|
|
125
|
+
});
|
|
126
|
+
it('captures output for valid pane id and sanitizes/clamps lines', () => {
|
|
127
|
+
const fakeBinDir = mkdtempSync(join(tmpdir(), 'omx-tmux-test-'));
|
|
128
|
+
tmpDirs.push(fakeBinDir);
|
|
129
|
+
const tmuxPath = join(fakeBinDir, 'tmux');
|
|
130
|
+
writeFileSync(tmuxPath, [
|
|
131
|
+
'#!/bin/sh',
|
|
132
|
+
'if [ "$1" != "capture-pane" ]; then exit 2; fi',
|
|
133
|
+
'target=""',
|
|
134
|
+
'lines=""',
|
|
135
|
+
'while [ "$#" -gt 0 ]; do',
|
|
136
|
+
' if [ "$1" = "-t" ]; then target="$2"; shift 2; continue; fi',
|
|
137
|
+
' if [ "$1" = "-l" ]; then lines="$2"; shift 2; continue; fi',
|
|
138
|
+
' shift',
|
|
139
|
+
'done',
|
|
140
|
+
'printf "capture:%s:%s\\n" "$target" "$lines"',
|
|
141
|
+
].join('\n'));
|
|
142
|
+
chmodSync(tmuxPath, 0o755);
|
|
143
|
+
process.env.PATH = `${fakeBinDir}:${originalPath ?? ''}`;
|
|
144
|
+
assert.equal(captureTmuxPane('%42', 7.8), 'capture:%42:7');
|
|
145
|
+
assert.equal(captureTmuxPane('%42', Number.NaN), 'capture:%42:12');
|
|
146
|
+
assert.equal(captureTmuxPane('%42', 0), 'capture:%42:1');
|
|
147
|
+
assert.equal(captureTmuxPane('%42', 999999), 'capture:%42:2000');
|
|
148
|
+
});
|
|
149
|
+
});
|
|
90
150
|
//# sourceMappingURL=tmux.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.test.js","sourceRoot":"","sources":["../../../src/notifications/__tests__/tmux.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"tmux.test.js","sourceRoot":"","sources":["../../../src/notifications/__tests__/tmux.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbosity.test.d.ts","sourceRoot":"","sources":["../../../src/notifications/__tests__/verbosity.test.ts"],"names":[],"mappings":""}
|