@provos/ironcurtain 0.7.0 → 0.7.2
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 +24 -100
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/constitution-readonly.md +21 -0
- package/dist/config/generated-readonly/compiled-policy.json +468 -0
- package/dist/config/paths.d.ts +17 -0
- package/dist/config/paths.js +23 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/cron/constitution-generator.d.ts +60 -0
- package/dist/cron/constitution-generator.js +217 -0
- package/dist/cron/constitution-generator.js.map +1 -0
- package/dist/cron/job-commands.js +104 -41
- package/dist/cron/job-commands.js.map +1 -1
- package/dist/cron/job-customizer.d.ts +22 -0
- package/dist/cron/job-customizer.js +47 -0
- package/dist/cron/job-customizer.js.map +1 -0
- package/dist/cron/types.d.ts +8 -0
- package/dist/cron/types.js +3 -6
- package/dist/cron/types.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.js +3 -1
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/mitm-proxy.js +10 -5
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/oauth-credentials.js +2 -2
- package/dist/docker/oauth-credentials.js.map +1 -1
- package/dist/docker/pty-session.js +139 -35
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/mux/mux-command.js +29 -1
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-input-handler.d.ts +1 -1
- package/dist/mux/mux-input-handler.js +3 -7
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/persona/compile-persona-policy.d.ts +21 -0
- package/dist/persona/compile-persona-policy.js +50 -0
- package/dist/persona/compile-persona-policy.js.map +1 -0
- package/dist/persona/persona-command.d.ts +9 -0
- package/dist/persona/persona-command.js +479 -0
- package/dist/persona/persona-command.js.map +1 -0
- package/dist/persona/persona-customizer.d.ts +23 -0
- package/dist/persona/persona-customizer.js +52 -0
- package/dist/persona/persona-customizer.js.map +1 -0
- package/dist/persona/persona-prompt.d.ts +19 -0
- package/dist/persona/persona-prompt.js +42 -0
- package/dist/persona/persona-prompt.js.map +1 -0
- package/dist/persona/resolve.d.ts +46 -0
- package/dist/persona/resolve.js +108 -0
- package/dist/persona/resolve.js.map +1 -0
- package/dist/persona/types.d.ts +40 -0
- package/dist/persona/types.js +20 -0
- package/dist/persona/types.js.map +1 -0
- package/dist/pipeline/annotate.js +8 -3
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.d.ts +13 -0
- package/dist/pipeline/compile.js +27 -1
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +6 -0
- package/dist/pipeline/constitution-compiler.js +41 -5
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/constitution-customizer.d.ts +3 -0
- package/dist/pipeline/constitution-customizer.js +19 -5
- package/dist/pipeline/constitution-customizer.js.map +1 -1
- package/dist/pipeline/customizer-loop.d.ts +34 -0
- package/dist/pipeline/customizer-loop.js +167 -0
- package/dist/pipeline/customizer-loop.js.map +1 -0
- package/dist/pipeline/pipeline-runner.js +2 -9
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +8 -1
- package/dist/pipeline/pipeline-shared.js +9 -4
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/tool-annotator.js +20 -2
- package/dist/pipeline/tool-annotator.js.map +1 -1
- package/dist/session/index.d.ts +10 -0
- package/dist/session/index.js +108 -35
- package/dist/session/index.js.map +1 -1
- package/dist/session/session-metadata.d.ts +18 -0
- package/dist/session/session-metadata.js +34 -0
- package/dist/session/session-metadata.js.map +1 -0
- package/dist/session/types.d.ts +20 -0
- package/dist/signal/signal-bot-daemon.js +8 -5
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/trusted-process/domain-utils.d.ts +2 -3
- package/dist/trusted-process/domain-utils.js +46 -34
- package/dist/trusted-process/domain-utils.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +19 -0
- package/dist/trusted-process/mcp-proxy-server.js +32 -12
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +2 -3
- package/dist/trusted-process/policy-engine.js +4 -42
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/types/slug.d.ts +7 -0
- package/dist/types/slug.js +14 -0
- package/dist/types/slug.js.map +1 -0
- package/dist/utils/editor.d.ts +24 -0
- package/dist/utils/editor.js +66 -0
- package/dist/utils/editor.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constitution Generator -- uses an LLM with Code Mode access to
|
|
3
|
+
* MCP servers (under read-only policy) to generate a draft task
|
|
4
|
+
* constitution from a task description.
|
|
5
|
+
*
|
|
6
|
+
* The LLM explores MCP servers (read files, list dirs, check git,
|
|
7
|
+
* query GitHub) to understand the task context, then produces a
|
|
8
|
+
* structured constitution.
|
|
9
|
+
*/
|
|
10
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { createSession } from '../session/index.js';
|
|
14
|
+
import { getReadOnlyPolicyDir } from '../config/paths.js';
|
|
15
|
+
import { HeadlessTransport } from './headless-transport.js';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Prompt Construction
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
/**
|
|
20
|
+
* Builds the system prompt augmentation for the constitution generator.
|
|
21
|
+
* This is appended to the standard Code Mode system prompt via
|
|
22
|
+
* SessionOptions.systemPromptAugmentation.
|
|
23
|
+
*
|
|
24
|
+
* @param context - Generation context: 'cron' for unattended jobs,
|
|
25
|
+
* 'persona' for interactive sessions. Defaults to 'cron'.
|
|
26
|
+
*/
|
|
27
|
+
export function buildConstitutionGeneratorSystemPrompt(taskDescription, workspacePath, gitRepo, context = 'cron') {
|
|
28
|
+
const introLine = context === 'persona'
|
|
29
|
+
? 'You are generating a constitution for an interactive persona — a named profile used for human-interactive sessions.'
|
|
30
|
+
: 'You are generating a constitution for an automated, unattended scheduled job (cron).';
|
|
31
|
+
const criticalContext = context === 'persona'
|
|
32
|
+
? `This is an **interactive persona** — a human is present during sessions and can
|
|
33
|
+
approve or deny escalated operations. Use escalation for operations that are
|
|
34
|
+
risky but sometimes necessary (e.g., deleting files outside the workspace,
|
|
35
|
+
pushing to protected branches). The human will decide in real time.
|
|
36
|
+
|
|
37
|
+
If the description says the persona should do something, **allow it** — do not
|
|
38
|
+
escalate operations the persona explicitly requires.`
|
|
39
|
+
: `This is a **cron job that runs unattended** — there is no human to approve
|
|
40
|
+
escalations. "Require approval" effectively means "block this operation."
|
|
41
|
+
Only escalate operations that are truly dangerous and should never run
|
|
42
|
+
automatically (e.g., deleting production data, force-pushing to main).
|
|
43
|
+
|
|
44
|
+
If the task description says the agent should do something (push to a remote,
|
|
45
|
+
create PRs, write files), then **allow it** — do not escalate operations the
|
|
46
|
+
task explicitly requires.`;
|
|
47
|
+
const exploreStep = context === 'persona'
|
|
48
|
+
? `1. **Explore** (optional): If the description references a specific project or
|
|
49
|
+
workspace, use execute_code to call MCP tools for essential context. If the
|
|
50
|
+
persona is general-purpose (email, research, etc.), skip exploration and
|
|
51
|
+
generate directly.`
|
|
52
|
+
: `1. **Explore** (briefly): Use execute_code to call MCP tools for essential context:
|
|
53
|
+
- Check the project structure and key files (README, package.json)
|
|
54
|
+
- Check git remotes and branching patterns if the task involves git
|
|
55
|
+
- Check GitHub repo structure if the task involves GitHub
|
|
56
|
+
Keep exploration focused — spend most effort on generation, not discovery.`;
|
|
57
|
+
return `
|
|
58
|
+
## Constitution Generation Mode
|
|
59
|
+
|
|
60
|
+
${introLine}
|
|
61
|
+
A constitution is a high-level document describing the guiding principles and
|
|
62
|
+
permissions for the agent — what it is and is not permitted to do. A separate
|
|
63
|
+
policy compiler will derive concrete enforcement rules from your constitution,
|
|
64
|
+
so write at the level of principles and intent, not individual tool-level rules.
|
|
65
|
+
You have read-only access to MCP servers (filesystem, git, GitHub) to explore the task's context.
|
|
66
|
+
|
|
67
|
+
## Task Description
|
|
68
|
+
|
|
69
|
+
${taskDescription}
|
|
70
|
+
|
|
71
|
+
## Workspace
|
|
72
|
+
|
|
73
|
+
The ${context === 'persona' ? 'persona' : 'job'} workspace is: ${workspacePath}
|
|
74
|
+
${gitRepo ? `Git repository: ${gitRepo}` : 'No git repository configured.'}
|
|
75
|
+
|
|
76
|
+
## Critical Context: Structural Rules
|
|
77
|
+
|
|
78
|
+
The policy engine has **structural rules** that are always active — you must NOT
|
|
79
|
+
duplicate them in the constitution:
|
|
80
|
+
|
|
81
|
+
- **Workspace auto-allow**: At runtime, all read AND write operations within the
|
|
82
|
+
workspace (${workspacePath}) are automatically allowed. Do NOT write rules
|
|
83
|
+
about reading or writing files in the workspace — they are redundant.
|
|
84
|
+
- **Default-deny**: Any operation not covered by a rule is automatically denied.
|
|
85
|
+
You do NOT need to write "deny" or "NOT allowed" statements — omitting a
|
|
86
|
+
permission is sufficient to block it.
|
|
87
|
+
|
|
88
|
+
${criticalContext}
|
|
89
|
+
|
|
90
|
+
## Your Process
|
|
91
|
+
|
|
92
|
+
${exploreStep}
|
|
93
|
+
|
|
94
|
+
2. **Generate**: Write a concise constitution (aim for 5-10 high-level statements):
|
|
95
|
+
- **Only describe permissions for actions mediated by MCP tools** — the policy
|
|
96
|
+
engine can only enforce MCP tool calls. Do NOT mention shell commands
|
|
97
|
+
(npm install, pip, etc.), package management, or other non-MCP actions —
|
|
98
|
+
they cannot be enforced and add noise.
|
|
99
|
+
- **Be specific about external resources** — the policy compiler can enforce
|
|
100
|
+
constraints on:
|
|
101
|
+
• **Paths**: directory containment (e.g., "within /home/user/project")
|
|
102
|
+
• **Git remote URLs**: domain matching (e.g., "github.com/org/repo")
|
|
103
|
+
• **GitHub owner/repo**: exact values (e.g., "on org/repo")
|
|
104
|
+
However, branch names and commit messages CANNOT be constrained — do not
|
|
105
|
+
write statements about specific branch name patterns.
|
|
106
|
+
- Write statements about operations OUTSIDE the workspace or for external services
|
|
107
|
+
- Allow everything the ${context === 'persona' ? 'persona' : 'task'} explicitly needs to do autonomously
|
|
108
|
+
- Only escalate truly dangerous operations (destructive, irreversible)
|
|
109
|
+
- Use natural language — the policy compiler will derive concrete rules
|
|
110
|
+
- Reference categories for groups (e.g., "popular news sites") not individual items
|
|
111
|
+
- Do NOT reference ${workspacePath} or /workspace — those are handled structurally
|
|
112
|
+
|
|
113
|
+
## Output Format
|
|
114
|
+
|
|
115
|
+
Output a JSON block with:
|
|
116
|
+
- "constitution": The constitution text (multi-line string, each statement on its own
|
|
117
|
+
line, each prefixed with " - ")
|
|
118
|
+
- "reasoning": 1-2 sentences summarizing what you found and the key policy decisions
|
|
119
|
+
- "exploredServers": Array of server names you queried
|
|
120
|
+
|
|
121
|
+
Wrap the JSON in a \`\`\`json code fence.
|
|
122
|
+
|
|
123
|
+
## Example Constitution (for a ${context === 'persona' ? 'persona' : 'job'} that pushes code and creates PRs)
|
|
124
|
+
|
|
125
|
+
- The agent has full local git access and may push to the origin remote
|
|
126
|
+
- The agent has read access to all GitHub repositories
|
|
127
|
+
- The agent may create branches, pull requests, and push code on org/repo
|
|
128
|
+
- Merging pull requests and deleting branches requires approval
|
|
129
|
+
`.trim();
|
|
130
|
+
}
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// User Message
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
function buildConstitutionGenerationUserMessage(taskDescription) {
|
|
135
|
+
return `Please explore the workspace and MCP servers to understand the context for this task, then generate a security constitution for it:\n\n${taskDescription}\n\nRemember to output your final answer as a JSON block with "constitution", "reasoning", and "exploredServers" fields.`;
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Response Parsing
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
/**
|
|
141
|
+
* Extracts the constitution generation result from the LLM's response.
|
|
142
|
+
* Looks for a JSON block in the response text (in code fences or raw).
|
|
143
|
+
*/
|
|
144
|
+
export function parseConstitutionResponse(response) {
|
|
145
|
+
// Try ```json ... ``` first, then raw JSON (only if the entire response is JSON)
|
|
146
|
+
const fencedMatch = response.match(/```json\s*([\s\S]*?)```/);
|
|
147
|
+
const rawMatch = response.match(/^\s*(\{[\s\S]*\})\s*$/);
|
|
148
|
+
const jsonMatch = fencedMatch ?? rawMatch;
|
|
149
|
+
if (!jsonMatch) {
|
|
150
|
+
throw new Error('LLM did not produce a valid constitution response (no JSON block found)');
|
|
151
|
+
}
|
|
152
|
+
// capture group 1 always exists since both patterns have a group
|
|
153
|
+
const jsonText = jsonMatch[1];
|
|
154
|
+
let parsed;
|
|
155
|
+
try {
|
|
156
|
+
parsed = JSON.parse(jsonText);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
throw new Error('LLM produced invalid JSON in constitution response');
|
|
160
|
+
}
|
|
161
|
+
const constitution = parsed['constitution'];
|
|
162
|
+
if (typeof constitution !== 'string' || !constitution.trim()) {
|
|
163
|
+
throw new Error('LLM response missing "constitution" field');
|
|
164
|
+
}
|
|
165
|
+
const reasoning = parsed['reasoning'];
|
|
166
|
+
const servers = parsed['exploredServers'];
|
|
167
|
+
return {
|
|
168
|
+
constitution,
|
|
169
|
+
reasoning: typeof reasoning === 'string' ? reasoning : '',
|
|
170
|
+
exploredServers: Array.isArray(servers) ? servers : [],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
// Main Generation Function
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
/**
|
|
177
|
+
* Generates a draft constitution by running an LLM through Code Mode
|
|
178
|
+
* with a read-only policy. The LLM can explore MCP servers to
|
|
179
|
+
* understand the task context before writing policy.
|
|
180
|
+
*
|
|
181
|
+
* @returns The generated constitution and reasoning.
|
|
182
|
+
*/
|
|
183
|
+
export async function generateConstitution(options) {
|
|
184
|
+
const readOnlyPolicyDir = getReadOnlyPolicyDir();
|
|
185
|
+
const augmentation = buildConstitutionGeneratorSystemPrompt(options.taskDescription, options.workspacePath, options.gitRepo, options.context ?? 'cron');
|
|
186
|
+
const userMessage = buildConstitutionGenerationUserMessage(options.taskDescription);
|
|
187
|
+
options.onProgress?.('Starting Code Mode session with read-only policy...');
|
|
188
|
+
const transport = new HeadlessTransport({ taskMessage: userMessage });
|
|
189
|
+
// Use a throwaway temp dir as the session sandbox so the sandbox fast-path
|
|
190
|
+
// auto-allows writes only in the temp dir, not the real job workspace.
|
|
191
|
+
// The job workspace path is still communicated to the LLM via the system
|
|
192
|
+
// prompt so it knows where to explore.
|
|
193
|
+
const sandboxDir = mkdtempSync(join(tmpdir(), 'ironcurtain-constgen-'));
|
|
194
|
+
let session;
|
|
195
|
+
try {
|
|
196
|
+
session = await createSession({
|
|
197
|
+
workspacePath: sandboxDir,
|
|
198
|
+
policyDir: readOnlyPolicyDir,
|
|
199
|
+
systemPromptAugmentation: augmentation,
|
|
200
|
+
disableAutoApprove: true,
|
|
201
|
+
});
|
|
202
|
+
options.onProgress?.('LLM exploring workspace and MCP servers...');
|
|
203
|
+
await transport.run(session);
|
|
204
|
+
const response = transport.getResponse();
|
|
205
|
+
if (!response) {
|
|
206
|
+
throw new Error('Constitution generation session produced no response');
|
|
207
|
+
}
|
|
208
|
+
options.onProgress?.('Parsing generated constitution...');
|
|
209
|
+
return parseConstitutionResponse(response);
|
|
210
|
+
}
|
|
211
|
+
finally {
|
|
212
|
+
if (session)
|
|
213
|
+
await session.close();
|
|
214
|
+
rmSync(sandboxDir, { recursive: true, force: true });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=constitution-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constitution-generator.js","sourceRoot":"","sources":["../../src/cron/constitution-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,54 +6,18 @@
|
|
|
6
6
|
* running, daemon-command.ts forwards commands via the control socket
|
|
7
7
|
* instead of calling these functions directly.
|
|
8
8
|
*/
|
|
9
|
-
import { mkdirSync
|
|
10
|
-
import { tmpdir } from 'node:os';
|
|
11
|
-
import { join } from 'node:path';
|
|
12
|
-
import { spawnSync } from 'node:child_process';
|
|
9
|
+
import { mkdirSync } from 'node:fs';
|
|
13
10
|
import chalk from 'chalk';
|
|
14
11
|
import { loadAllJobs, loadJob, saveJob, deleteJob, loadRecentRuns } from './job-store.js';
|
|
15
12
|
import { createJobId } from './types.js';
|
|
13
|
+
import { openEditorForMultiline } from '../utils/editor.js';
|
|
16
14
|
import { getJobWorkspaceDir, getJobDir } from '../config/paths.js';
|
|
17
15
|
import { compileTaskPolicy } from './compile-task-policy.js';
|
|
18
16
|
import { parseCronExpression, getNextFireTime } from './cron-scheduler.js';
|
|
19
17
|
import { formatRelativeTime, describeCronExpression } from './format-utils.js';
|
|
20
18
|
import { syncGitRepo, validateGitUri } from './git-sync.js';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* the edited content. Lines beginning with '#' are stripped (instructions).
|
|
24
|
-
* Returns undefined if the user saves an empty file.
|
|
25
|
-
*
|
|
26
|
-
* @param initialContent Pre-populate the file with existing content (for editing).
|
|
27
|
-
*/
|
|
28
|
-
function openEditorForMultiline(instructions, initialContent = '') {
|
|
29
|
-
const editor = process.env['VISUAL'] ?? process.env['EDITOR'] ?? 'nano';
|
|
30
|
-
const tmpFile = join(tmpdir(), `ironcurtain-task-${Date.now()}.txt`);
|
|
31
|
-
const header = instructions
|
|
32
|
-
.split('\n')
|
|
33
|
-
.map((l) => `# ${l}`)
|
|
34
|
-
.join('\n');
|
|
35
|
-
writeFileSync(tmpFile, `${header}\n\n${initialContent}`, 'utf-8');
|
|
36
|
-
try {
|
|
37
|
-
const result = spawnSync(editor, [tmpFile], { stdio: 'inherit' });
|
|
38
|
-
if (result.error)
|
|
39
|
-
throw result.error;
|
|
40
|
-
const raw = readFileSync(tmpFile, 'utf-8');
|
|
41
|
-
const content = raw
|
|
42
|
-
.split('\n')
|
|
43
|
-
.filter((line) => !line.startsWith('#'))
|
|
44
|
-
.join('\n')
|
|
45
|
-
.trim();
|
|
46
|
-
return content || undefined;
|
|
47
|
-
}
|
|
48
|
-
finally {
|
|
49
|
-
try {
|
|
50
|
-
unlinkSync(tmpFile);
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// ignore cleanup errors
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
19
|
+
import { generateConstitution } from './constitution-generator.js';
|
|
20
|
+
import { runJobConstitutionCustomizer } from './job-customizer.js';
|
|
57
21
|
/** Generates a unique default JobDefinition with empty task fields. */
|
|
58
22
|
function generateDefaultJob() {
|
|
59
23
|
const suffix = Math.random().toString(36).slice(2, 8);
|
|
@@ -83,8 +47,58 @@ const TASK_CONSTITUTION_INSTRUCTIONS = 'Enter the task constitution — what the
|
|
|
83
47
|
* In add mode the ID is editable; in edit mode it is fixed.
|
|
84
48
|
*/
|
|
85
49
|
async function runJobReviewLoop(initial, isNew) {
|
|
86
|
-
const { text, confirm, select, note, isCancel, cancel, log } = await import('@clack/prompts');
|
|
50
|
+
const { text, confirm, select, note, isCancel, cancel, log, spinner } = await import('@clack/prompts');
|
|
87
51
|
let job = initial;
|
|
52
|
+
let hasOfferedGeneration = false;
|
|
53
|
+
/**
|
|
54
|
+
* Runs constitution generation and presents accept/refine/discard options.
|
|
55
|
+
* Returns the accepted or refined constitution, or undefined if discarded.
|
|
56
|
+
*/
|
|
57
|
+
async function runGenerateAndReview() {
|
|
58
|
+
const genSpinner = spinner();
|
|
59
|
+
genSpinner.start('Generating constitution...');
|
|
60
|
+
try {
|
|
61
|
+
const workspace = getJobWorkspaceDir(job.id);
|
|
62
|
+
mkdirSync(workspace, { recursive: true });
|
|
63
|
+
const result = await generateConstitution({
|
|
64
|
+
taskDescription: job.taskDescription,
|
|
65
|
+
workspacePath: workspace,
|
|
66
|
+
gitRepo: job.gitRepo,
|
|
67
|
+
onProgress: (msg) => {
|
|
68
|
+
genSpinner.message(msg);
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
genSpinner.stop('Constitution generated.');
|
|
72
|
+
note(result.constitution.trim(), 'Generated Constitution');
|
|
73
|
+
if (result.reasoning) {
|
|
74
|
+
log.info(result.reasoning);
|
|
75
|
+
}
|
|
76
|
+
const genAction = await select({
|
|
77
|
+
message: 'What would you like to do with the generated constitution?',
|
|
78
|
+
options: [
|
|
79
|
+
{ value: 'accept', label: 'Accept as-is' },
|
|
80
|
+
{ value: 'refine', label: 'Refine interactively' },
|
|
81
|
+
{ value: 'discard', label: 'Discard' },
|
|
82
|
+
],
|
|
83
|
+
});
|
|
84
|
+
if (isCancel(genAction)) {
|
|
85
|
+
cancel('Cancelled.');
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
if (genAction === 'accept') {
|
|
89
|
+
return result.constitution;
|
|
90
|
+
}
|
|
91
|
+
else if (genAction === 'refine') {
|
|
92
|
+
return (await runJobConstitutionCustomizer(result.constitution, job.taskDescription)) ?? undefined;
|
|
93
|
+
}
|
|
94
|
+
return undefined; // discard
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
genSpinner.stop('Generation failed.');
|
|
98
|
+
log.error(`Constitution generation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
88
102
|
for (;;) {
|
|
89
103
|
const gitRepoDisplay = job.gitRepo ?? '(none)';
|
|
90
104
|
const descIsEmpty = !job.taskDescription.trim();
|
|
@@ -126,6 +140,14 @@ async function runJobReviewLoop(initial, isNew) {
|
|
|
126
140
|
{ value: 'gitRepo', label: `Edit git repo ${gitRepoDisplay}` },
|
|
127
141
|
{ value: 'taskDescription', label: `Edit task description${descIsEmpty ? ' ← required' : ''}` },
|
|
128
142
|
{ value: 'taskConstitution', label: `Edit task constitution${constIsEmpty ? ' ← required' : ''}` },
|
|
143
|
+
{
|
|
144
|
+
value: 'generateConstitution',
|
|
145
|
+
label: `Generate constitution from task${descIsEmpty ? ' (set task first)' : ''}`,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
value: 'customizeConstitution',
|
|
149
|
+
label: `Customize constitution interactively${constIsEmpty ? ' (set constitution first)' : ''}`,
|
|
150
|
+
},
|
|
129
151
|
{ value: 'notify', label: `Edit notify ${notifyStr}` },
|
|
130
152
|
],
|
|
131
153
|
});
|
|
@@ -230,6 +252,25 @@ async function runJobReviewLoop(initial, isNew) {
|
|
|
230
252
|
else {
|
|
231
253
|
log.warn('Editor was empty — keeping existing task description.');
|
|
232
254
|
}
|
|
255
|
+
// Proactively offer auto-generation for new jobs when the user has
|
|
256
|
+
// just entered a task description and constitution is still empty.
|
|
257
|
+
if (isNew && !hasOfferedGeneration && job.taskDescription.trim() && !job.taskConstitution.trim()) {
|
|
258
|
+
hasOfferedGeneration = true;
|
|
259
|
+
const shouldGenerate = await confirm({
|
|
260
|
+
message: 'Generate a constitution automatically from the task description?',
|
|
261
|
+
initialValue: true,
|
|
262
|
+
});
|
|
263
|
+
if (isCancel(shouldGenerate)) {
|
|
264
|
+
cancel('Cancelled.');
|
|
265
|
+
process.exit(0);
|
|
266
|
+
}
|
|
267
|
+
if (shouldGenerate) {
|
|
268
|
+
const constitution = await runGenerateAndReview();
|
|
269
|
+
if (constitution) {
|
|
270
|
+
job = { ...job, taskConstitution: constitution };
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
233
274
|
break;
|
|
234
275
|
}
|
|
235
276
|
case 'taskConstitution': {
|
|
@@ -244,6 +285,28 @@ async function runJobReviewLoop(initial, isNew) {
|
|
|
244
285
|
}
|
|
245
286
|
break;
|
|
246
287
|
}
|
|
288
|
+
case 'generateConstitution': {
|
|
289
|
+
if (descIsEmpty) {
|
|
290
|
+
log.warn('Set the task description first.');
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
const constitution = await runGenerateAndReview();
|
|
294
|
+
if (constitution) {
|
|
295
|
+
job = { ...job, taskConstitution: constitution };
|
|
296
|
+
}
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
case 'customizeConstitution': {
|
|
300
|
+
if (!job.taskConstitution.trim()) {
|
|
301
|
+
log.warn('Set or generate a constitution first.');
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
const refined = await runJobConstitutionCustomizer(job.taskConstitution, job.taskDescription);
|
|
305
|
+
if (refined) {
|
|
306
|
+
job = { ...job, taskConstitution: refined };
|
|
307
|
+
}
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
247
310
|
case 'notify': {
|
|
248
311
|
const esc = await confirm({
|
|
249
312
|
message: 'Notify on escalation via Signal?',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-commands.js","sourceRoot":"","sources":["../../src/cron/job-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-commands.js","sourceRoot":"","sources":["../../src/cron/job-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive LLM-assisted constitution customizer for cron jobs.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the shared customizer loop, adding
|
|
5
|
+
* task-specific context to the LLM system prompt.
|
|
6
|
+
*/
|
|
7
|
+
import type { GitHubIdentity } from '../pipeline/github-identity.js';
|
|
8
|
+
import type { ToolAnnotation } from '../pipeline/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Builds a system prompt for the job constitution customizer.
|
|
11
|
+
* Extends the base customizer prompt with task-specific context.
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildJobCustomizerSystemPrompt(baseConstitution: string, toolAnnotations: ToolAnnotation[], taskDescription: string, githubIdentity?: GitHubIdentity | null): string;
|
|
14
|
+
/**
|
|
15
|
+
* Runs an interactive constitution customizer session for a job.
|
|
16
|
+
* Operates on an in-memory constitution string (not the global file).
|
|
17
|
+
*
|
|
18
|
+
* @param initialConstitution - Starting constitution text (from generator or existing job)
|
|
19
|
+
* @param taskDescription - The task description (context for the LLM)
|
|
20
|
+
* @returns The final constitution text, or undefined if the user cancelled
|
|
21
|
+
*/
|
|
22
|
+
export declare function runJobConstitutionCustomizer(initialConstitution: string, taskDescription: string): Promise<string | undefined>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive LLM-assisted constitution customizer for cron jobs.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the shared customizer loop, adding
|
|
5
|
+
* task-specific context to the LLM system prompt.
|
|
6
|
+
*/
|
|
7
|
+
import { buildSystemPrompt } from '../pipeline/constitution-customizer.js';
|
|
8
|
+
import { runConstitutionCustomizerLoop } from '../pipeline/customizer-loop.js';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Job-Scoped System Prompt
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Builds a system prompt for the job constitution customizer.
|
|
14
|
+
* Extends the base customizer prompt with task-specific context.
|
|
15
|
+
*/
|
|
16
|
+
export function buildJobCustomizerSystemPrompt(baseConstitution, toolAnnotations, taskDescription, githubIdentity) {
|
|
17
|
+
const basePrompt = buildSystemPrompt(baseConstitution, toolAnnotations, githubIdentity);
|
|
18
|
+
return `${basePrompt}
|
|
19
|
+
|
|
20
|
+
## Task Context
|
|
21
|
+
|
|
22
|
+
This constitution is for a scheduled job with the following task:
|
|
23
|
+
|
|
24
|
+
${taskDescription}
|
|
25
|
+
|
|
26
|
+
Focus your suggestions on what THIS SPECIFIC TASK needs. Do not suggest
|
|
27
|
+
broad permissions unless the task requires them.`;
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Main Entry Point
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
/**
|
|
33
|
+
* Runs an interactive constitution customizer session for a job.
|
|
34
|
+
* Operates on an in-memory constitution string (not the global file).
|
|
35
|
+
*
|
|
36
|
+
* @param initialConstitution - Starting constitution text (from generator or existing job)
|
|
37
|
+
* @param taskDescription - The task description (context for the LLM)
|
|
38
|
+
* @returns The final constitution text, or undefined if the user cancelled
|
|
39
|
+
*/
|
|
40
|
+
export async function runJobConstitutionCustomizer(initialConstitution, taskDescription) {
|
|
41
|
+
return runConstitutionCustomizerLoop(initialConstitution, (ctx) => buildJobCustomizerSystemPrompt('', ctx.annotations, taskDescription, ctx.githubIdentity), {
|
|
42
|
+
stepName: 'job-customize-policy',
|
|
43
|
+
noteTitle: 'Current Job Constitution',
|
|
44
|
+
refinePlaceholder: 'e.g., "also allow git push to origin"',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=job-customizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-customizer.js","sourceRoot":"","sources":["../../src/cron/job-customizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAA8B,MAAM,gCAAgC,CAAC;AAI3G,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,gBAAwB,EACxB,eAAiC,EACjC,eAAuB,EACvB,cAAsC;IAEtC,MAAM,UAAU,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAExF,OAAO,GAAG,UAAU;;;;;;EAMpB,eAAe;;;iDAGgC,CAAC;AAClD,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,mBAA2B,EAC3B,eAAuB;IAEvB,OAAO,6BAA6B,CAClC,mBAAmB,EACnB,CAAC,GAA0B,EAAE,EAAE,CAC7B,8BAA8B,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,EAC1F;QACE,QAAQ,EAAE,sBAAsB;QAChC,SAAS,EAAE,0BAA0B;QACrC,iBAAiB,EAAE,uCAAuC;KAC3D,CACF,CAAC;AACJ,CAAC"}
|
package/dist/cron/types.d.ts
CHANGED
|
@@ -67,6 +67,14 @@ export interface JobDefinition {
|
|
|
67
67
|
* the cron-specific defaults.
|
|
68
68
|
*/
|
|
69
69
|
readonly budgetOverrides?: Partial<JobBudgetOverrides>;
|
|
70
|
+
/**
|
|
71
|
+
* Optional persona name. When set, the job uses this persona's
|
|
72
|
+
* compiled policy instead of its inline taskConstitution.
|
|
73
|
+
* Mutually exclusive with taskConstitution -- if persona is set,
|
|
74
|
+
* taskConstitution is ignored for policy loading (but still used
|
|
75
|
+
* as the system prompt augmentation if present).
|
|
76
|
+
*/
|
|
77
|
+
readonly persona?: string;
|
|
70
78
|
/** Whether this job is active. Disabled jobs are not scheduled. */
|
|
71
79
|
readonly enabled: boolean;
|
|
72
80
|
}
|
package/dist/cron/types.js
CHANGED
|
@@ -4,15 +4,12 @@
|
|
|
4
4
|
* These types are used by the job store, cron scheduler, daemon,
|
|
5
5
|
* and CLI commands.
|
|
6
6
|
*/
|
|
7
|
+
import { SLUG_PATTERN, validateSlug } from '../types/slug.js';
|
|
7
8
|
/** Regex for valid job IDs: 1-63 chars, lowercase alphanumeric, hyphens, or underscores. */
|
|
8
|
-
export const JOB_ID_PATTERN =
|
|
9
|
+
export const JOB_ID_PATTERN = SLUG_PATTERN;
|
|
9
10
|
/** Validates and creates a JobId from a user-provided string. */
|
|
10
11
|
export function createJobId(raw) {
|
|
11
|
-
|
|
12
|
-
throw new Error(`Invalid job ID "${raw}": must be 1-63 chars, ` +
|
|
13
|
-
`lowercase alphanumeric, hyphens, or underscores, ` +
|
|
14
|
-
`starting with a letter or digit`);
|
|
15
|
-
}
|
|
12
|
+
validateSlug(raw, 'job ID');
|
|
16
13
|
return raw;
|
|
17
14
|
}
|
|
18
15
|
/** Cron-specific budget defaults (differ from interactive defaults). */
|
package/dist/cron/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cron/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cron/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAS9D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,cAAc,GAAW,YAAY,CAAC;AAEnD,iEAAiE;AACjE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5B,OAAO,GAAY,CAAC;AACtB,CAAC;AAsID,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,GAAG;IACb,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,GAAG;CACzB,CAAC"}
|
|
@@ -372,11 +372,13 @@ export class IronCurtainDaemon {
|
|
|
372
372
|
// Create the session with per-job policy and escalation handler.
|
|
373
373
|
// Auto-approver is disabled: cron sessions have no interactive user
|
|
374
374
|
// context, so intent-matching against a user message is meaningless.
|
|
375
|
+
// When job.persona is set, use the persona's compiled policy instead
|
|
376
|
+
// of the job-specific generated dir.
|
|
375
377
|
const session = await createSession({
|
|
376
378
|
mode: this.mode,
|
|
377
379
|
config: patchedConfig,
|
|
378
380
|
workspacePath: workspace,
|
|
379
|
-
policyDir: jobGeneratedDir,
|
|
381
|
+
...(job.persona ? { persona: job.persona } : { policyDir: jobGeneratedDir }),
|
|
380
382
|
systemPromptAugmentation: augmentation,
|
|
381
383
|
disableAutoApprove: true,
|
|
382
384
|
onEscalation: (request) => {
|