@roackb2/heddle 0.0.6 → 0.0.8
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 +122 -2
- package/dist/examples/heartbeat.d.ts +2 -0
- package/dist/examples/heartbeat.d.ts.map +1 -0
- package/dist/examples/heartbeat.js +61 -0
- package/dist/examples/heartbeat.js.map +1 -0
- package/dist/examples/programmatic-loop.d.ts +2 -0
- package/dist/examples/programmatic-loop.d.ts.map +1 -0
- package/dist/examples/programmatic-loop.js +126 -0
- package/dist/examples/programmatic-loop.js.map +1 -0
- package/dist/src/cli/ask.d.ts.map +1 -1
- package/dist/src/cli/ask.js +10 -41
- package/dist/src/cli/ask.js.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.js +14 -25
- package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +3 -19
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/main.js +0 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/factory.d.ts +1 -1
- package/dist/src/llm/factory.d.ts.map +1 -1
- package/dist/src/llm/factory.js +2 -19
- package/dist/src/llm/factory.js.map +1 -1
- package/dist/src/llm/providers.d.ts +3 -0
- package/dist/src/llm/providers.d.ts.map +1 -0
- package/dist/src/llm/providers.js +21 -0
- package/dist/src/llm/providers.js.map +1 -0
- package/dist/src/runtime/agent-loop.d.ts +42 -0
- package/dist/src/runtime/agent-loop.d.ts.map +1 -0
- package/dist/src/runtime/agent-loop.js +118 -0
- package/dist/src/runtime/agent-loop.js.map +1 -0
- package/dist/src/runtime/api-keys.d.ts +8 -0
- package/dist/src/runtime/api-keys.d.ts.map +1 -0
- package/dist/src/runtime/api-keys.js +25 -0
- package/dist/src/runtime/api-keys.js.map +1 -0
- package/dist/src/runtime/default-tools.d.ts +12 -0
- package/dist/src/runtime/default-tools.d.ts.map +1 -0
- package/dist/src/runtime/default-tools.js +40 -0
- package/dist/src/runtime/default-tools.js.map +1 -0
- package/dist/src/runtime/events.d.ts +62 -0
- package/dist/src/runtime/events.d.ts.map +1 -0
- package/dist/src/runtime/events.js +30 -0
- package/dist/src/runtime/events.js.map +1 -0
- package/dist/src/runtime/heartbeat-store.d.ts +20 -0
- package/dist/src/runtime/heartbeat-store.d.ts.map +1 -0
- package/dist/src/runtime/heartbeat-store.js +42 -0
- package/dist/src/runtime/heartbeat-store.js.map +1 -0
- package/dist/src/runtime/heartbeat.d.ts +39 -0
- package/dist/src/runtime/heartbeat.d.ts.map +1 -0
- package/dist/src/runtime/heartbeat.js +72 -0
- package/dist/src/runtime/heartbeat.js.map +1 -0
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/logger.js +2 -2
- package/dist/src/utils/logger.js.map +1 -1
- package/package.json +18 -2
- package/dist/src/__tests__/chat-activity-format.test.d.ts +0 -2
- package/dist/src/__tests__/chat-activity-format.test.d.ts.map +0 -1
- package/dist/src/__tests__/chat-activity-format.test.js +0 -41
- package/dist/src/__tests__/chat-activity-format.test.js.map +0 -1
- package/dist/src/__tests__/chat-compaction.test.d.ts +0 -2
- package/dist/src/__tests__/chat-compaction.test.d.ts.map +0 -1
- package/dist/src/__tests__/chat-compaction.test.js +0 -63
- package/dist/src/__tests__/chat-compaction.test.js.map +0 -1
- package/dist/src/__tests__/chat-format.test.d.ts +0 -2
- package/dist/src/__tests__/chat-format.test.d.ts.map +0 -1
- package/dist/src/__tests__/chat-format.test.js +0 -137
- package/dist/src/__tests__/chat-format.test.js.map +0 -1
- package/dist/src/__tests__/chat-runtime.test.d.ts +0 -2
- package/dist/src/__tests__/chat-runtime.test.d.ts.map +0 -1
- package/dist/src/__tests__/chat-runtime.test.js +0 -39
- package/dist/src/__tests__/chat-runtime.test.js.map +0 -1
- package/dist/src/__tests__/core-utils.test.d.ts +0 -2
- package/dist/src/__tests__/core-utils.test.d.ts.map +0 -1
- package/dist/src/__tests__/core-utils.test.js +0 -87
- package/dist/src/__tests__/core-utils.test.js.map +0 -1
- package/dist/src/__tests__/file-mentions.test.d.ts +0 -2
- package/dist/src/__tests__/file-mentions.test.d.ts.map +0 -1
- package/dist/src/__tests__/file-mentions.test.js +0 -29
- package/dist/src/__tests__/file-mentions.test.js.map +0 -1
- package/dist/src/__tests__/llm-factory.test.d.ts +0 -2
- package/dist/src/__tests__/llm-factory.test.d.ts.map +0 -1
- package/dist/src/__tests__/llm-factory.test.js +0 -45
- package/dist/src/__tests__/llm-factory.test.js.map +0 -1
- package/dist/src/__tests__/local-commands.test.d.ts +0 -2
- package/dist/src/__tests__/local-commands.test.d.ts.map +0 -1
- package/dist/src/__tests__/local-commands.test.js +0 -153
- package/dist/src/__tests__/local-commands.test.js.map +0 -1
- package/dist/src/__tests__/project-approval-rules.test.d.ts +0 -2
- package/dist/src/__tests__/project-approval-rules.test.d.ts.map +0 -1
- package/dist/src/__tests__/project-approval-rules.test.js +0 -135
- package/dist/src/__tests__/project-approval-rules.test.js.map +0 -1
- package/dist/src/__tests__/prompt-input.test.d.ts +0 -2
- package/dist/src/__tests__/prompt-input.test.d.ts.map +0 -1
- package/dist/src/__tests__/prompt-input.test.js +0 -57
- package/dist/src/__tests__/prompt-input.test.js.map +0 -1
- package/dist/src/__tests__/prompts.test.d.ts +0 -2
- package/dist/src/__tests__/prompts.test.d.ts.map +0 -1
- package/dist/src/__tests__/prompts.test.js +0 -46
- package/dist/src/__tests__/prompts.test.js.map +0 -1
- package/dist/src/__tests__/run-agent.test.d.ts +0 -2
- package/dist/src/__tests__/run-agent.test.d.ts.map +0 -1
- package/dist/src/__tests__/run-agent.test.js +0 -1276
- package/dist/src/__tests__/run-agent.test.js.map +0 -1
- package/dist/src/__tests__/run-shell.command.test.d.ts +0 -2
- package/dist/src/__tests__/run-shell.command.test.d.ts.map +0 -1
- package/dist/src/__tests__/run-shell.command.test.js +0 -188
- package/dist/src/__tests__/run-shell.command.test.js.map +0 -1
- package/dist/src/__tests__/smoke.test.d.ts +0 -2
- package/dist/src/__tests__/smoke.test.d.ts.map +0 -1
- package/dist/src/__tests__/smoke.test.js +0 -314
- package/dist/src/__tests__/smoke.test.js.map +0 -1
- package/dist/src/__tests__/tools.test.d.ts +0 -2
- package/dist/src/__tests__/tools.test.d.ts.map +0 -1
- package/dist/src/__tests__/tools.test.js +0 -698
- package/dist/src/__tests__/tools.test.js.map +0 -1
- package/dist/src/__tests__/trace-format.test.d.ts +0 -2
- package/dist/src/__tests__/trace-format.test.d.ts.map +0 -1
- package/dist/src/__tests__/trace-format.test.js +0 -148
- package/dist/src/__tests__/trace-format.test.js.map +0 -1
- package/dist/src/cli/chat/actions.d.ts +0 -47
- package/dist/src/cli/chat/actions.d.ts.map +0 -1
- package/dist/src/cli/chat/actions.js +0 -215
- package/dist/src/cli/chat/actions.js.map +0 -1
- package/dist/src/cli/chat/format.d.ts +0 -23
- package/dist/src/cli/chat/format.d.ts.map +0 -1
- package/dist/src/cli/chat/format.js +0 -243
- package/dist/src/cli/chat/format.js.map +0 -1
- package/dist/src/cli/chat/local-commands.d.ts +0 -17
- package/dist/src/cli/chat/local-commands.d.ts.map +0 -1
- package/dist/src/cli/chat/local-commands.js +0 -180
- package/dist/src/cli/chat/local-commands.js.map +0 -1
- package/dist/src/cli/chat/panels.d.ts +0 -37
- package/dist/src/cli/chat/panels.d.ts.map +0 -1
- package/dist/src/cli/chat/panels.js +0 -142
- package/dist/src/cli/chat/panels.js.map +0 -1
- package/dist/src/cli/chat/runtime.d.ts +0 -26
- package/dist/src/cli/chat/runtime.d.ts.map +0 -1
- package/dist/src/cli/chat/runtime.js +0 -28
- package/dist/src/cli/chat/runtime.js.map +0 -1
- package/dist/src/cli/chat/storage.d.ts +0 -13
- package/dist/src/cli/chat/storage.d.ts.map +0 -1
- package/dist/src/cli/chat/storage.js +0 -126
- package/dist/src/cli/chat/storage.js.map +0 -1
- package/dist/src/cli/chat/types.d.ts +0 -51
- package/dist/src/cli/chat/types.d.ts.map +0 -1
- package/dist/src/cli/chat/types.js +0 -2
- package/dist/src/cli/chat/types.js.map +0 -1
- package/dist/src/cli/chat/use-run-state.d.ts +0 -23
- package/dist/src/cli/chat/use-run-state.d.ts.map +0 -1
- package/dist/src/cli/chat/use-run-state.js +0 -118
- package/dist/src/cli/chat/use-run-state.js.map +0 -1
- package/dist/src/cli/chat/use-sessions.d.ts +0 -21
- package/dist/src/cli/chat/use-sessions.d.ts.map +0 -1
- package/dist/src/cli/chat/use-sessions.js +0 -111
- package/dist/src/cli/chat/use-sessions.js.map +0 -1
- package/dist/src/cli/chat-actions.d.ts +0 -47
- package/dist/src/cli/chat-actions.d.ts.map +0 -1
- package/dist/src/cli/chat-actions.js +0 -215
- package/dist/src/cli/chat-actions.js.map +0 -1
- package/dist/src/cli/chat-format.d.ts +0 -23
- package/dist/src/cli/chat-format.d.ts.map +0 -1
- package/dist/src/cli/chat-format.js +0 -243
- package/dist/src/cli/chat-format.js.map +0 -1
- package/dist/src/cli/chat-local-commands.d.ts +0 -17
- package/dist/src/cli/chat-local-commands.d.ts.map +0 -1
- package/dist/src/cli/chat-local-commands.js +0 -180
- package/dist/src/cli/chat-local-commands.js.map +0 -1
- package/dist/src/cli/chat-panels.d.ts +0 -37
- package/dist/src/cli/chat-panels.d.ts.map +0 -1
- package/dist/src/cli/chat-panels.js +0 -142
- package/dist/src/cli/chat-panels.js.map +0 -1
- package/dist/src/cli/chat-runtime.d.ts +0 -26
- package/dist/src/cli/chat-runtime.d.ts.map +0 -1
- package/dist/src/cli/chat-runtime.js +0 -28
- package/dist/src/cli/chat-runtime.js.map +0 -1
- package/dist/src/cli/chat-storage.d.ts +0 -13
- package/dist/src/cli/chat-storage.d.ts.map +0 -1
- package/dist/src/cli/chat-storage.js +0 -126
- package/dist/src/cli/chat-storage.js.map +0 -1
- package/dist/src/cli/chat-submit.d.ts +0 -28
- package/dist/src/cli/chat-submit.d.ts.map +0 -1
- package/dist/src/cli/chat-submit.js +0 -90
- package/dist/src/cli/chat-submit.js.map +0 -1
- package/dist/src/cli/chat-types.d.ts +0 -51
- package/dist/src/cli/chat-types.d.ts.map +0 -1
- package/dist/src/cli/chat-types.js +0 -2
- package/dist/src/cli/chat-types.js.map +0 -1
- package/dist/src/cli/chat.d.ts +0 -4
- package/dist/src/cli/chat.d.ts.map +0 -1
- package/dist/src/cli/chat.js +0 -153
- package/dist/src/cli/chat.js.map +0 -1
- package/dist/src/cli/useChatRunState.d.ts +0 -23
- package/dist/src/cli/useChatRunState.d.ts.map +0 -1
- package/dist/src/cli/useChatRunState.js +0 -118
- package/dist/src/cli/useChatRunState.js.map +0 -1
- package/dist/src/cli/useChatSessions.d.ts +0 -21
- package/dist/src/cli/useChatSessions.d.ts.map +0 -1
- package/dist/src/cli/useChatSessions.js +0 -111
- package/dist/src/cli/useChatSessions.js.map +0 -1
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { mkdtempSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { describe, expect, it } from 'vitest';
|
|
5
|
-
import { createProjectApprovalRule, createProjectApprovalRuleForCall, describeProjectApprovalRule, extractApprovalTarget, findMatchingApprovalRule, loadProjectApprovalRules, normalizeApprovedCommand, saveProjectApprovalRules, } from '../cli/chat/state/approval-rules.js';
|
|
6
|
-
describe('project approval rules', () => {
|
|
7
|
-
it('normalizes repeated whitespace in saved commands', () => {
|
|
8
|
-
expect(normalizeApprovedCommand(' yarn test --watch ')).toBe('yarn test --watch');
|
|
9
|
-
});
|
|
10
|
-
it('saves and reloads project approval rules', () => {
|
|
11
|
-
const root = mkdtempSync(join(tmpdir(), 'heddle-approval-rules-'));
|
|
12
|
-
const filePath = join(root, 'command-approvals.json');
|
|
13
|
-
const rule = createProjectApprovalRule('yarn test');
|
|
14
|
-
saveProjectApprovalRules(filePath, [rule]);
|
|
15
|
-
expect(loadProjectApprovalRules(filePath)).toEqual([rule]);
|
|
16
|
-
});
|
|
17
|
-
it('matches exact normalized mutate commands only', () => {
|
|
18
|
-
const rules = [createProjectApprovalRule('gh pr view 123')];
|
|
19
|
-
expect(findMatchingApprovalRule(rules, 'run_shell_mutate', { command: 'gh pr view 123' })).toBeDefined();
|
|
20
|
-
expect(findMatchingApprovalRule(rules, 'run_shell_mutate', { command: 'gh pr view 124' })).toBeUndefined();
|
|
21
|
-
expect(findMatchingApprovalRule(rules, 'run_shell_inspect', { command: 'yarn test' })).toBeUndefined();
|
|
22
|
-
});
|
|
23
|
-
it('broadens low-risk workspace verification approvals to a command-family prefix', () => {
|
|
24
|
-
const rule = createProjectApprovalRule('yarn test src/__tests__/tools.test.ts');
|
|
25
|
-
expect(rule.mode).toBe('prefix');
|
|
26
|
-
expect(rule.command).toBe('yarn test');
|
|
27
|
-
expect(rule.scope).toBe('workspace');
|
|
28
|
-
expect(rule.capability).toBe('verification');
|
|
29
|
-
expect(findMatchingApprovalRule([rule], 'run_shell_mutate', { command: 'yarn test' })).toBeDefined();
|
|
30
|
-
expect(findMatchingApprovalRule([rule], 'run_shell_mutate', { command: 'yarn test src/__tests__/run-agent.test.ts' })).toBeDefined();
|
|
31
|
-
expect(findMatchingApprovalRule([rule], 'run_shell_mutate', { command: 'yarn build' })).toBeUndefined();
|
|
32
|
-
});
|
|
33
|
-
it('creates a project-wide edit_file approval rule from a tool call', () => {
|
|
34
|
-
const rule = createProjectApprovalRuleForCall({
|
|
35
|
-
id: 'tool-1',
|
|
36
|
-
tool: 'edit_file',
|
|
37
|
-
input: { path: 'src/example.ts', oldText: 'a', newText: 'b' },
|
|
38
|
-
});
|
|
39
|
-
expect(rule).toMatchObject({
|
|
40
|
-
tool: 'edit_file',
|
|
41
|
-
mode: 'tool',
|
|
42
|
-
command: '*',
|
|
43
|
-
scope: 'workspace',
|
|
44
|
-
capability: 'file_edit',
|
|
45
|
-
});
|
|
46
|
-
expect(findMatchingApprovalRule([rule], 'edit_file', { path: 'src/another.ts', content: 'x', createIfMissing: true })).toBeDefined();
|
|
47
|
-
});
|
|
48
|
-
it('loads legacy mutate approval rules from disk without dropping them', () => {
|
|
49
|
-
const root = mkdtempSync(join(tmpdir(), 'heddle-approval-rules-legacy-'));
|
|
50
|
-
const filePath = join(root, 'command-approvals.json');
|
|
51
|
-
saveProjectApprovalRules(filePath, [
|
|
52
|
-
{
|
|
53
|
-
tool: 'run_shell_mutate',
|
|
54
|
-
mode: 'exact',
|
|
55
|
-
command: 'ffmpeg -i input.mp4 output.gif',
|
|
56
|
-
scope: 'workspace',
|
|
57
|
-
capability: 'unknown_workspace',
|
|
58
|
-
createdAt: new Date().toISOString(),
|
|
59
|
-
},
|
|
60
|
-
]);
|
|
61
|
-
const legacyFilePath = join(root, 'legacy-command-approvals.json');
|
|
62
|
-
const legacyRules = [
|
|
63
|
-
{
|
|
64
|
-
tool: 'run_shell_mutate',
|
|
65
|
-
command: 'yarn test',
|
|
66
|
-
createdAt: new Date().toISOString(),
|
|
67
|
-
},
|
|
68
|
-
];
|
|
69
|
-
writeFileSync(legacyFilePath, `${JSON.stringify(legacyRules, null, 2)}\n`);
|
|
70
|
-
const loaded = loadProjectApprovalRules(legacyFilePath);
|
|
71
|
-
expect(loaded[0]).toMatchObject({
|
|
72
|
-
tool: 'run_shell_mutate',
|
|
73
|
-
mode: 'prefix',
|
|
74
|
-
command: 'yarn test',
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
it('describes approval rules based on tool and mode', () => {
|
|
78
|
-
const editRule = {
|
|
79
|
-
tool: 'edit_file',
|
|
80
|
-
mode: 'tool',
|
|
81
|
-
command: '*',
|
|
82
|
-
scope: 'workspace',
|
|
83
|
-
capability: 'file_edit',
|
|
84
|
-
createdAt: new Date().toISOString(),
|
|
85
|
-
};
|
|
86
|
-
const prefixRule = {
|
|
87
|
-
tool: 'run_shell_mutate',
|
|
88
|
-
mode: 'prefix',
|
|
89
|
-
command: 'yarn lint',
|
|
90
|
-
scope: 'workspace',
|
|
91
|
-
capability: 'verification',
|
|
92
|
-
createdAt: new Date().toISOString(),
|
|
93
|
-
};
|
|
94
|
-
const exactRule = {
|
|
95
|
-
tool: 'run_shell_mutate',
|
|
96
|
-
mode: 'exact',
|
|
97
|
-
command: 'gh pr view 123',
|
|
98
|
-
scope: 'workspace',
|
|
99
|
-
capability: 'unknown_workspace',
|
|
100
|
-
createdAt: new Date().toISOString(),
|
|
101
|
-
};
|
|
102
|
-
expect(describeProjectApprovalRule(editRule)).toContain('allow edit_file');
|
|
103
|
-
expect(describeProjectApprovalRule(prefixRule)).toContain('command family');
|
|
104
|
-
expect(describeProjectApprovalRule(exactRule)).toContain('exact command');
|
|
105
|
-
});
|
|
106
|
-
it('normalizes run shell and edit file approvals', () => {
|
|
107
|
-
expect(extractApprovalTarget('run_shell_mutate', ' yarn test ')).toBe('yarn test');
|
|
108
|
-
expect(extractApprovalTarget('run_shell_mutate', { command: ' yarn test src/ ' })).toBe('yarn test src/');
|
|
109
|
-
expect(extractApprovalTarget('run_shell_mutate', { command: '' })).toBeUndefined();
|
|
110
|
-
expect(extractApprovalTarget('run_shell_mutate', 42)).toBeUndefined();
|
|
111
|
-
expect(extractApprovalTarget('edit_file', '.')).toBe('.');
|
|
112
|
-
expect(extractApprovalTarget('edit_file', './')).toBe('.');
|
|
113
|
-
expect(extractApprovalTarget('edit_file', './src/')).toBe('./src');
|
|
114
|
-
expect(extractApprovalTarget('edit_file', { path: './foo/bar/' })).toBe('./foo/bar');
|
|
115
|
-
expect(extractApprovalTarget('edit_file', { path: '' })).toBeUndefined();
|
|
116
|
-
});
|
|
117
|
-
it('falls back to unknown workspace rules when the shell command is blocked', () => {
|
|
118
|
-
const rule = createProjectApprovalRule('yarn test; echo hi');
|
|
119
|
-
expect(rule.mode).toBe('exact');
|
|
120
|
-
expect(rule.scope).toBe('workspace');
|
|
121
|
-
expect(rule.capability).toBe('unknown_workspace');
|
|
122
|
-
expect(rule.command).toBe('yarn test; echo hi');
|
|
123
|
-
});
|
|
124
|
-
it('deduplicates duplicate rules when loading from disk', () => {
|
|
125
|
-
const root = mkdtempSync(join(tmpdir(), 'heddle-approval-rules-dedupe-'));
|
|
126
|
-
const filePath = join(root, 'command-approvals.json');
|
|
127
|
-
const rule = createProjectApprovalRule('yarn lint');
|
|
128
|
-
const duplicate = { ...rule, createdAt: new Date().toISOString() };
|
|
129
|
-
writeFileSync(filePath, `${JSON.stringify([rule, duplicate], null, 2)}\n`);
|
|
130
|
-
const loaded = loadProjectApprovalRules(filePath);
|
|
131
|
-
expect(loaded).toHaveLength(1);
|
|
132
|
-
expect(loaded[0].command).toBe(rule.command);
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
//# sourceMappingURL=project-approval-rules.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-approval-rules.test.js","sourceRoot":"","sources":["../../../src/__tests__/project-approval-rules.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-input.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/prompt-input.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { insertMentionSelection } from '../cli/chat/utils/file-mentions.js';
|
|
3
|
-
import { buildPromptRenderLines } from '../cli/chat/components/PromptInput.js';
|
|
4
|
-
describe('prompt input related helpers', () => {
|
|
5
|
-
it('places the inserted mention at the end of the current trailing mention token', () => {
|
|
6
|
-
const nextDraft = insertMentionSelection('take a look at @REA', 'README.md');
|
|
7
|
-
expect(nextDraft).toBe('take a look at @README.md');
|
|
8
|
-
expect(nextDraft.length).toBe('take a look at @README.md'.length);
|
|
9
|
-
});
|
|
10
|
-
it('renders the cursor at the end of the line after the last typed character', () => {
|
|
11
|
-
expect(buildPromptRenderLines('asdf', 4, 8, 80)).toEqual([
|
|
12
|
-
{
|
|
13
|
-
before: 'asdf',
|
|
14
|
-
cursor: ' ',
|
|
15
|
-
after: '',
|
|
16
|
-
hasCursor: true,
|
|
17
|
-
},
|
|
18
|
-
]);
|
|
19
|
-
});
|
|
20
|
-
it('renders the cursor at the current insertion point within a line', () => {
|
|
21
|
-
expect(buildPromptRenderLines('asdf', 2, 8, 80)).toEqual([
|
|
22
|
-
{
|
|
23
|
-
before: 'as',
|
|
24
|
-
cursor: 'd',
|
|
25
|
-
after: 'f',
|
|
26
|
-
hasCursor: true,
|
|
27
|
-
},
|
|
28
|
-
]);
|
|
29
|
-
});
|
|
30
|
-
it('places a wrapped-line boundary cursor at the start of the next visual segment', () => {
|
|
31
|
-
expect(buildPromptRenderLines('abcd', 2, 8, 2)).toEqual([
|
|
32
|
-
{
|
|
33
|
-
before: 'ab',
|
|
34
|
-
cursor: '',
|
|
35
|
-
after: '',
|
|
36
|
-
hasCursor: false,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
before: '',
|
|
40
|
-
cursor: 'c',
|
|
41
|
-
after: 'd',
|
|
42
|
-
hasCursor: true,
|
|
43
|
-
},
|
|
44
|
-
]);
|
|
45
|
-
});
|
|
46
|
-
it('renders an empty line cursor as a highlighted blank cell', () => {
|
|
47
|
-
expect(buildPromptRenderLines('', 0, 8, 80)).toEqual([
|
|
48
|
-
{
|
|
49
|
-
before: '',
|
|
50
|
-
cursor: ' ',
|
|
51
|
-
after: '',
|
|
52
|
-
hasCursor: true,
|
|
53
|
-
},
|
|
54
|
-
]);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=prompt-input.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-input.test.js","sourceRoot":"","sources":["../../../src/__tests__/prompt-input.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,SAAS,GAAG,sBAAsB,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;QAC7E,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvD;gBACE,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACvD;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACtD;gBACE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,KAAK;aACjB;YACD;gBACE,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD;gBACE,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/prompts.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { buildSystemPrompt } from '../prompts/system-prompt.js';
|
|
3
|
-
describe('buildSystemPrompt', () => {
|
|
4
|
-
it('frames Heddle as a coding and workspace agent rather than a generic chatbot', () => {
|
|
5
|
-
const prompt = buildSystemPrompt('Explain this project.', ['list_files', 'read_file', 'run_shell_inspect']);
|
|
6
|
-
expect(prompt).toContain('You are Heddle, a conversational coding and workspace agent.');
|
|
7
|
-
expect(prompt).toContain('You are not a generic chatbot.');
|
|
8
|
-
expect(prompt).toContain('## Default Workflow');
|
|
9
|
-
expect(prompt).toContain('1. Clarify the real task.');
|
|
10
|
-
expect(prompt).toContain('2. Gather the minimum relevant evidence first.');
|
|
11
|
-
expect(prompt).toContain('3. Form a grounded conclusion or proposal.');
|
|
12
|
-
expect(prompt).toContain('4. Carry the task through when action is needed.');
|
|
13
|
-
expect(prompt).toContain('5. Finish with a useful operator answer.');
|
|
14
|
-
expect(prompt).toContain('If the user asks what Heddle itself is');
|
|
15
|
-
expect(prompt).toContain('If the user asks how to use Heddle');
|
|
16
|
-
expect(prompt).toContain('direct shell commands');
|
|
17
|
-
expect(prompt).toContain('distinguish observed facts from inference');
|
|
18
|
-
expect(prompt).toContain('You MUST call report_state before continuing');
|
|
19
|
-
expect(prompt).toContain('Do not lead with internal tool names or implementation details');
|
|
20
|
-
expect(prompt).toContain('prefer plain-language descriptions over enumerating internal tool names');
|
|
21
|
-
expect(prompt).toContain('prefer carrying the task through implementation and verification instead of stopping at analysis or a plan unless you are blocked');
|
|
22
|
-
expect(prompt).toContain('If the user asks to improve tests or coverage');
|
|
23
|
-
expect(prompt).toContain('Prefer the first-class file editing tool for creating or changing file contents');
|
|
24
|
-
expect(prompt).toContain('## Knowledge Persistence');
|
|
25
|
-
expect(prompt).toContain('Maintain useful memory proactively');
|
|
26
|
-
expect(prompt).toContain('Memory writes do not require user approval');
|
|
27
|
-
expect(prompt).toContain('If a shell command is arbitrary, uses inline scripts, needs redirects/heredocs, or inspect rejects it, switch to run_shell_mutate');
|
|
28
|
-
expect(prompt).toContain('do not stop at "inspect is blocked."');
|
|
29
|
-
expect(prompt).toContain('Do not ask unnecessary questions when the answer can be discovered from the workspace');
|
|
30
|
-
expect(prompt).toContain('Do not jump from one narrow local detail to a project-level recommendation');
|
|
31
|
-
expect(prompt).toContain('If the user asks for the next step, propose a concrete high-leverage next step based on the project goal and current state');
|
|
32
|
-
expect(prompt).toContain('If you identify a reasonable bounded change that directly serves the user goal, make it and verify it instead of only describing it.');
|
|
33
|
-
expect(prompt).toContain('Once you choose a concrete next step, execute that step instead of repeatedly restating the plan');
|
|
34
|
-
expect(prompt).toContain('Do not spend multiple turns narrating the same intent without either gathering new evidence or making progress on the implementation.');
|
|
35
|
-
expect(prompt).toContain('record a short plan with update_plan');
|
|
36
|
-
expect(prompt).toContain('If you recorded a plan, do not stop after only one small slice');
|
|
37
|
-
expect(prompt).toContain('Use update_plan for substantial tasks');
|
|
38
|
-
});
|
|
39
|
-
it('includes project-specific context when provided', () => {
|
|
40
|
-
const prompt = buildSystemPrompt('Help in this repo.', ['list_files'], 'Source: AGENTS.md\nUse yarn and keep answers concise.');
|
|
41
|
-
expect(prompt).toContain('## Project Context');
|
|
42
|
-
expect(prompt).toContain('Source: AGENTS.md');
|
|
43
|
-
expect(prompt).toContain('Use yarn and keep answers concise.');
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=prompts.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.test.js","sourceRoot":"","sources":["../../../src/__tests__/prompts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-agent.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/run-agent.test.ts"],"names":[],"mappings":""}
|