@cluesmith/codev 3.3.2 → 3.3.4
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/dashboard-dist/assets/{index-D3XaKpZW.js → index-DZf6pNPE.js} +41 -41
- package/dashboard-dist/assets/index-DZf6pNPE.js.map +1 -0
- package/dashboard-dist/assets/index-DnYLy5C_.css +32 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +48 -0
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/ide.d.ts +20 -0
- package/dist/agent-farm/commands/ide.d.ts.map +1 -0
- package/dist/agent-farm/commands/ide.js +138 -0
- package/dist/agent-farm/commands/ide.js.map +1 -0
- package/dist/agent-farm/commands/inbox.d.ts.map +1 -1
- package/dist/agent-farm/commands/inbox.js +79 -10
- package/dist/agent-farm/commands/inbox.js.map +1 -1
- package/dist/agent-farm/commands/interrupt.d.ts +4 -1
- package/dist/agent-farm/commands/interrupt.d.ts.map +1 -1
- package/dist/agent-farm/commands/interrupt.js +6 -3
- package/dist/agent-farm/commands/interrupt.js.map +1 -1
- package/dist/agent-farm/commands/reset.d.ts +4 -1
- package/dist/agent-farm/commands/reset.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset.js +6 -3
- package/dist/agent-farm/commands/reset.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +28 -0
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +79 -6
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +16 -7
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts +21 -9
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +90 -30
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts +3 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +8 -443
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/mailbox.d.ts +47 -7
- package/dist/agent-farm/db/mailbox.d.ts.map +1 -1
- package/dist/agent-farm/db/mailbox.js +56 -12
- package/dist/agent-farm/db/mailbox.js.map +1 -1
- package/dist/agent-farm/db/migrations.d.ts +57 -0
- package/dist/agent-farm/db/migrations.d.ts.map +1 -0
- package/dist/agent-farm/db/migrations.js +530 -0
- package/dist/agent-farm/db/migrations.js.map +1 -0
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +1 -0
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/tower-owner.d.ts +168 -0
- package/dist/agent-farm/db/tower-owner.d.ts.map +1 -0
- package/dist/agent-farm/db/tower-owner.js +369 -0
- package/dist/agent-farm/db/tower-owner.js.map +1 -0
- package/dist/agent-farm/db/types.d.ts +47 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/lib/ide-record.d.ts +65 -0
- package/dist/agent-farm/lib/ide-record.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-record.js +118 -0
- package/dist/agent-farm/lib/ide-record.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts +22 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +96 -19
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/cron-delivery.d.ts +7 -1
- package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -1
- package/dist/agent-farm/servers/cron-delivery.js +2 -1
- package/dist/agent-farm/servers/cron-delivery.js.map +1 -1
- package/dist/agent-farm/servers/gate-profiles.d.ts +44 -2
- package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -1
- package/dist/agent-farm/servers/gate-profiles.js +79 -6
- package/dist/agent-farm/servers/gate-profiles.js.map +1 -1
- package/dist/agent-farm/servers/ide-forward.d.ts +62 -0
- package/dist/agent-farm/servers/ide-forward.d.ts.map +1 -0
- package/dist/agent-farm/servers/ide-forward.js +274 -0
- package/dist/agent-farm/servers/ide-forward.js.map +1 -0
- package/dist/agent-farm/servers/ide-server.d.ts +68 -0
- package/dist/agent-farm/servers/ide-server.d.ts.map +1 -0
- package/dist/agent-farm/servers/ide-server.js +281 -0
- package/dist/agent-farm/servers/ide-server.js.map +1 -0
- package/dist/agent-farm/servers/mailbox-delivery.d.ts +296 -12
- package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-delivery.js +566 -69
- package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.d.ts +66 -19
- package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.js +204 -37
- package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +138 -11
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
- package/dist/agent-farm/servers/message-write.js +144 -35
- package/dist/agent-farm/servers/message-write.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +28 -12
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +130 -79
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/render-gate.d.ts +77 -1
- package/dist/agent-farm/servers/render-gate.d.ts.map +1 -1
- package/dist/agent-farm/servers/render-gate.js +174 -25
- package/dist/agent-farm/servers/render-gate.js.map +1 -1
- package/dist/agent-farm/servers/session-submit.d.ts +7 -4
- package/dist/agent-farm/servers/session-submit.d.ts.map +1 -1
- package/dist/agent-farm/servers/session-submit.js +7 -4
- package/dist/agent-farm/servers/session-submit.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +7 -3
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +17 -10
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts +32 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +186 -26
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +79 -9
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +21 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +106 -13
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +35 -0
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +39 -0
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +26 -2
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/utils/message-format.d.ts +78 -2
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.js +107 -11
- package/dist/agent-farm/utils/message-format.js.map +1 -1
- package/dist/agent-farm/utils/port.d.ts +22 -0
- package/dist/agent-farm/utils/port.d.ts.map +1 -0
- package/dist/agent-farm/utils/port.js +35 -0
- package/dist/agent-farm/utils/port.js.map +1 -0
- package/dist/agent-farm/utils/server-utils.d.ts +26 -0
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +36 -0
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +61 -1
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/tree-tripwire.d.ts +177 -0
- package/dist/commands/consult/tree-tripwire.d.ts.map +1 -0
- package/dist/commands/consult/tree-tripwire.js +356 -0
- package/dist/commands/consult/tree-tripwire.js.map +1 -0
- package/dist/commands/doctor.d.ts +69 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +165 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/generate-image.d.ts +25 -1
- package/dist/commands/generate-image.d.ts.map +1 -1
- package/dist/commands/generate-image.js +410 -2
- package/dist/commands/generate-image.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +18 -2
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/lib/agent-env.d.ts +86 -0
- package/dist/lib/agent-env.d.ts.map +1 -0
- package/dist/lib/agent-env.js +126 -0
- package/dist/lib/agent-env.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +76 -5
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge-rate-limit.d.ts +45 -0
- package/dist/lib/forge-rate-limit.d.ts.map +1 -0
- package/dist/lib/forge-rate-limit.js +89 -0
- package/dist/lib/forge-rate-limit.js.map +1 -0
- package/dist/lib/forge.d.ts +29 -1
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +96 -21
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/github.d.ts +13 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +58 -15
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/test-env.d.ts +17 -0
- package/dist/lib/test-env.d.ts.map +1 -1
- package/dist/lib/test-env.js +20 -0
- package/dist/lib/test-env.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts +10 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +38 -9
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +174 -8
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +299 -25
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +23 -2
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +115 -36
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/session-screen.d.ts +34 -5
- package/dist/terminal/session-screen.d.ts.map +1 -1
- package/dist/terminal/session-screen.js +52 -6
- package/dist/terminal/session-screen.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +73 -0
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +151 -0
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +20 -3
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +2 -0
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +17 -1
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +28 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/dist/terminal/terminal-replies.d.ts +102 -0
- package/dist/terminal/terminal-replies.d.ts.map +1 -0
- package/dist/terminal/terminal-replies.js +181 -0
- package/dist/terminal/terminal-replies.js.map +1 -0
- package/package.json +4 -4
- package/scripts/forge/gitea/_lib.sh +214 -0
- package/scripts/forge/gitea/issue-comment.sh +8 -1
- package/scripts/forge/gitea/issue-view.sh +95 -4
- package/scripts/forge/gitea/pr-create.sh +155 -0
- package/scripts/forge/gitea/pr-exists.sh +32 -4
- package/scripts/forge/gitea/pr-list.sh +40 -31
- package/scripts/forge/gitea/pr-view.sh +65 -4
- package/scripts/forge/gitea/recently-merged.sh +91 -21
- package/scripts/forge/gitea/user-identity.sh +30 -1
- package/scripts/forge/github/issue-view.sh +5 -2
- package/scripts/forge/github/pr-create.sh +47 -0
- package/scripts/forge/github/pr-list.sh +6 -2
- package/scripts/forge/github/pr-search.sh +6 -2
- package/scripts/forge/gitlab/issue-search.sh +1 -0
- package/scripts/forge/gitlab/issue-view.sh +24 -4
- package/scripts/forge/gitlab/pr-create.sh +53 -0
- package/scripts/forge/gitlab/pr-search.sh +37 -2
- package/scripts/forge/linear/auth-status.sh +1 -0
- package/scripts/forge/linear/issue-comment.sh +1 -0
- package/scripts/forge/linear/issue-list.sh +1 -0
- package/scripts/forge/linear/issue-search.sh +1 -0
- package/scripts/forge/linear/issue-view.sh +14 -2
- package/scripts/forge/linear/recently-closed.sh +1 -0
- package/scripts/forge/linear/user-identity.sh +1 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +39 -1
- package/skeleton/.codex/skills/generate-image/SKILL.md +39 -1
- package/skeleton/protocols/air/prompts/pr.md +6 -1
- package/skeleton/protocols/aspir/prompts/review.md +6 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +6 -1
- package/skeleton/protocols/bugfix/protocol.md +2 -1
- package/skeleton/protocols/maintain/prompts/review.md +6 -1
- package/skeleton/protocols/pir/prompts/review.md +10 -7
- package/skeleton/protocols/spir/prompts/review.md +6 -1
- package/skeleton/resources/commands/agent-farm.md +28 -3
- package/skeleton/roles/consultant.md +32 -0
- package/skeleton/templates/AGENTS.md +1 -1
- package/skeleton/templates/CLAUDE.md +1 -1
- package/templates/tower.html +16 -1
- package/dashboard-dist/assets/index-BZRTEMtH.css +0 -32
- package/dashboard-dist/assets/index-D3XaKpZW.js.map +0 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* generate-image - AI-powered image generation using Google's Gemini model (Nano Banana Pro)
|
|
3
3
|
*
|
|
4
|
-
* Uses the @google/genai SDK with GEMINI_API_KEY from environment.
|
|
4
|
+
* Uses the @google/genai SDK with GEMINI_API_KEY from environment. Atlas Cloud
|
|
5
|
+
* serves the same model over a submit-then-poll REST API and is available as an
|
|
6
|
+
* opt-in provider with ATLASCLOUD_API_KEY.
|
|
5
7
|
*/
|
|
6
8
|
import { GoogleGenAI } from '@google/genai';
|
|
7
9
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
8
|
-
import { resolve } from 'node:path';
|
|
10
|
+
import { basename, resolve } from 'node:path';
|
|
9
11
|
import chalk from 'chalk';
|
|
10
12
|
// The model to use for image generation
|
|
11
13
|
const MODEL = 'gemini-3-pro-image-preview';
|
|
@@ -13,6 +15,34 @@ const MODEL = 'gemini-3-pro-image-preview';
|
|
|
13
15
|
const RESOLUTIONS = ['1K', '2K', '4K'];
|
|
14
16
|
// Valid aspect ratios
|
|
15
17
|
const ASPECT_RATIOS = ['1:1', '16:9', '9:16', '3:4', '4:3', '3:2', '2:3'];
|
|
18
|
+
// Providers serving the same model
|
|
19
|
+
const PROVIDERS = ['gemini', 'atlas', 'muapi'];
|
|
20
|
+
// Atlas Cloud serves the same Nano Banana Pro model over its own async REST API
|
|
21
|
+
const ATLAS_BASE_URL = 'https://api.atlascloud.ai/api/v1/model';
|
|
22
|
+
const ATLAS_MODEL = 'google/nano-banana-pro/text-to-image';
|
|
23
|
+
const ATLAS_POLL_INTERVAL_MS = 5000;
|
|
24
|
+
const ATLAS_TIMEOUT_MS = 300_000;
|
|
25
|
+
// Per-request bounds. ATLAS_TIMEOUT_MS caps the poll loop as a whole, but it is
|
|
26
|
+
// only checked between requests, so each fetch carries its own deadline.
|
|
27
|
+
const ATLAS_REQUEST_TIMEOUT_MS = 30_000;
|
|
28
|
+
const ATLAS_DOWNLOAD_TIMEOUT_MS = 120_000;
|
|
29
|
+
// The only status Atlas documents for a prediction that is still running
|
|
30
|
+
// (https://www.atlascloud.ai/docs/en/predictions lists exactly processing,
|
|
31
|
+
// completed and failed). Anything else is unrecognized and fails, named.
|
|
32
|
+
const ATLAS_IN_PROGRESS_STATUSES = new Set(['processing']);
|
|
33
|
+
// api.atlascloud.ai rejects some clients' default User-Agent with 403 (error
|
|
34
|
+
// code 1010), so every request sends an explicit one.
|
|
35
|
+
const ATLAS_USER_AGENT = 'codev-generate-image/1';
|
|
36
|
+
// MuAPI serves Nano Banana Pro through its standard submit -> poll -> download API.
|
|
37
|
+
const MUAPI_BASE_URL = 'https://api.muapi.ai/api/v1';
|
|
38
|
+
const MUAPI_MODEL = 'nano-banana-pro';
|
|
39
|
+
const MUAPI_EDIT_MODEL = 'nano-banana-pro-edit';
|
|
40
|
+
const MUAPI_POLL_INTERVAL_MS = 5000;
|
|
41
|
+
const MUAPI_TIMEOUT_MS = 300_000;
|
|
42
|
+
const MUAPI_REQUEST_TIMEOUT_MS = 30_000;
|
|
43
|
+
const MUAPI_DOWNLOAD_TIMEOUT_MS = 120_000;
|
|
44
|
+
const MUAPI_MAX_REFERENCE_IMAGES = 8;
|
|
45
|
+
const MUAPI_IN_PROGRESS_STATUSES = new Set(['pending', 'queued', 'processing', 'starting', 'in_queue']);
|
|
16
46
|
/**
|
|
17
47
|
* Get the Google GenAI client using API key from environment
|
|
18
48
|
*/
|
|
@@ -38,6 +68,368 @@ function readPrompt(promptOrPath) {
|
|
|
38
68
|
}
|
|
39
69
|
return promptOrPath;
|
|
40
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Check that the downloaded bytes really are an image, and name the file after
|
|
73
|
+
* the container they turned out to be.
|
|
74
|
+
*
|
|
75
|
+
* Atlas serves whatever container the model produced (JPEG for Nano Banana
|
|
76
|
+
* Pro), so writing those bytes into the default `output.png` would mislabel
|
|
77
|
+
* the file. Bytes that are not a recognised image are not written at all: a
|
|
78
|
+
* 200 response carrying an HTML error body must never land in output.png
|
|
79
|
+
* under a green "Image saved". Exits rather than returning on that path.
|
|
80
|
+
*/
|
|
81
|
+
function targetPathForImageBytes(output, bytes, provider = 'Atlas') {
|
|
82
|
+
const detected = bytes.subarray(0, 3).toString('hex') === 'ffd8ff'
|
|
83
|
+
? 'jpg'
|
|
84
|
+
: bytes.subarray(0, 8).toString('hex') === '89504e470d0a1a0a'
|
|
85
|
+
? 'png'
|
|
86
|
+
: bytes.subarray(0, 4).toString('ascii') === 'RIFF' &&
|
|
87
|
+
bytes.subarray(8, 12).toString('ascii') === 'WEBP'
|
|
88
|
+
? 'webp'
|
|
89
|
+
: null;
|
|
90
|
+
if (!detected) {
|
|
91
|
+
console.error(chalk.red('Error:') +
|
|
92
|
+
` ${provider} returned ${bytes.length} bytes that are not a JPEG, PNG or WebP image` +
|
|
93
|
+
` (starts with ${bytes.subarray(0, 8).toString('hex') || '<empty>'}).` +
|
|
94
|
+
' Nothing was written.');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
const current = output.toLowerCase().split('.').pop();
|
|
98
|
+
if (current === detected || (detected === 'jpg' && current === 'jpeg'))
|
|
99
|
+
return output;
|
|
100
|
+
const renamed = output.replace(/\.[^./\\]+$/, '') + '.' + detected;
|
|
101
|
+
console.log(chalk.yellow('Note:') + ` provider returned ${detected.toUpperCase()}; saving as ${renamed}`);
|
|
102
|
+
return renamed;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Make one MuAPI request under a per-request deadline and report failures in
|
|
106
|
+
* the same CLI style as the existing provider path.
|
|
107
|
+
*/
|
|
108
|
+
async function muapiRequest(url, what, timeoutMs, read, init = {}) {
|
|
109
|
+
let outcome;
|
|
110
|
+
try {
|
|
111
|
+
const response = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
|
|
112
|
+
outcome = response.ok
|
|
113
|
+
? { ok: true, body: await read(response) }
|
|
114
|
+
: { ok: false, detail: ` (${response.status}): ${await response.text()}` };
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
outcome = {
|
|
118
|
+
ok: false,
|
|
119
|
+
detail: error instanceof Error && error.name === 'TimeoutError'
|
|
120
|
+
? `: no response within ${timeoutMs}ms`
|
|
121
|
+
: `: ${error instanceof Error ? error.message : String(error)}`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (!outcome.ok) {
|
|
125
|
+
console.error(chalk.red('Error:') + ` MuAPI ${what} failed${outcome.detail}`.trimEnd());
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
return outcome.body;
|
|
129
|
+
}
|
|
130
|
+
function asJsonRecord(value) {
|
|
131
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
132
|
+
? value
|
|
133
|
+
: null;
|
|
134
|
+
}
|
|
135
|
+
/** Find a media URL in the result envelopes used by MuAPI model families. */
|
|
136
|
+
function findMuapiMediaUrl(value, parentKey = '') {
|
|
137
|
+
if (typeof value === 'string') {
|
|
138
|
+
const mediaKey = [
|
|
139
|
+
'image_url',
|
|
140
|
+
'video',
|
|
141
|
+
'image',
|
|
142
|
+
'output_url',
|
|
143
|
+
'url',
|
|
144
|
+
'outputs',
|
|
145
|
+
'images',
|
|
146
|
+
'output',
|
|
147
|
+
'output_data',
|
|
148
|
+
].includes(parentKey);
|
|
149
|
+
return mediaKey ? value : undefined;
|
|
150
|
+
}
|
|
151
|
+
if (Array.isArray(value)) {
|
|
152
|
+
for (const item of value) {
|
|
153
|
+
const found = findMuapiMediaUrl(item, parentKey);
|
|
154
|
+
if (found)
|
|
155
|
+
return found;
|
|
156
|
+
}
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
159
|
+
const record = asJsonRecord(value);
|
|
160
|
+
if (!record)
|
|
161
|
+
return undefined;
|
|
162
|
+
for (const key of ['image_url', 'video', 'image', 'output_url', 'url', 'outputs', 'images', 'output', 'output_data']) {
|
|
163
|
+
if (key in record) {
|
|
164
|
+
const found = findMuapiMediaUrl(record[key], key);
|
|
165
|
+
if (found)
|
|
166
|
+
return found;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
function findMuapiRequestId(value) {
|
|
172
|
+
const record = asJsonRecord(value);
|
|
173
|
+
if (!record)
|
|
174
|
+
return undefined;
|
|
175
|
+
for (const key of ['request_id', 'id']) {
|
|
176
|
+
if (typeof record[key] === 'string' && record[key])
|
|
177
|
+
return record[key];
|
|
178
|
+
}
|
|
179
|
+
return findMuapiRequestId(record.data) || findMuapiRequestId(record.output);
|
|
180
|
+
}
|
|
181
|
+
function findMuapiStatus(value) {
|
|
182
|
+
const record = asJsonRecord(value);
|
|
183
|
+
if (!record)
|
|
184
|
+
return undefined;
|
|
185
|
+
if (typeof record.status === 'string')
|
|
186
|
+
return record.status;
|
|
187
|
+
return findMuapiStatus(record.data) || findMuapiStatus(record.output);
|
|
188
|
+
}
|
|
189
|
+
function findMuapiError(value) {
|
|
190
|
+
const record = asJsonRecord(value);
|
|
191
|
+
if (!record)
|
|
192
|
+
return undefined;
|
|
193
|
+
for (const key of ['error', 'message', 'detail']) {
|
|
194
|
+
if (typeof record[key] === 'string' && record[key])
|
|
195
|
+
return record[key];
|
|
196
|
+
}
|
|
197
|
+
return findMuapiError(record.data) || findMuapiError(record.output);
|
|
198
|
+
}
|
|
199
|
+
function requireHttpsMuapiUrl(value, what) {
|
|
200
|
+
try {
|
|
201
|
+
const parsed = new URL(value);
|
|
202
|
+
if (parsed.protocol !== 'https:')
|
|
203
|
+
throw new Error('URL must use HTTPS');
|
|
204
|
+
return value;
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
console.error(chalk.red('Error:') +
|
|
208
|
+
` MuAPI returned an invalid ${what} URL: ${error instanceof Error ? error.message : String(error)}`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function imageMimeType(path) {
|
|
213
|
+
const extension = path.toLowerCase().split('.').pop();
|
|
214
|
+
if (extension === 'png')
|
|
215
|
+
return 'image/png';
|
|
216
|
+
if (extension === 'webp')
|
|
217
|
+
return 'image/webp';
|
|
218
|
+
if (extension === 'gif')
|
|
219
|
+
return 'image/gif';
|
|
220
|
+
return 'image/jpeg';
|
|
221
|
+
}
|
|
222
|
+
/** Generate through MuAPI: upload references when present, then poll the result. */
|
|
223
|
+
export async function generateViaMuapi(promptText, output, aspect, resolution, refs, options = {}) {
|
|
224
|
+
const apiKey = process.env.MUAPI_API_KEY || process.env.MU_API_KEY;
|
|
225
|
+
if (!apiKey) {
|
|
226
|
+
console.error(chalk.red('Error:') +
|
|
227
|
+
' MUAPI_API_KEY or MU_API_KEY environment variable not set.\n' +
|
|
228
|
+
'Get an API key at https://muapi.ai/access-keys');
|
|
229
|
+
process.exit(1);
|
|
230
|
+
}
|
|
231
|
+
if (refs.length > MUAPI_MAX_REFERENCE_IMAGES) {
|
|
232
|
+
console.error(chalk.red('Error:') +
|
|
233
|
+
` MuAPI supports at most ${MUAPI_MAX_REFERENCE_IMAGES} reference images with --provider muapi.`);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
const headers = { 'x-api-key': apiKey };
|
|
237
|
+
const imageUrls = [];
|
|
238
|
+
for (const ref of refs) {
|
|
239
|
+
const refPath = resolve(ref);
|
|
240
|
+
if (!existsSync(refPath)) {
|
|
241
|
+
console.error(chalk.red('Error:') + ` Reference image not found: ${ref}`);
|
|
242
|
+
process.exit(1);
|
|
243
|
+
}
|
|
244
|
+
const form = new FormData();
|
|
245
|
+
const bytes = readFileSync(refPath);
|
|
246
|
+
form.append('file', new Blob([Buffer.from(bytes)], { type: imageMimeType(refPath) }), basename(refPath));
|
|
247
|
+
const uploaded = await muapiRequest(`${MUAPI_BASE_URL}/upload_file`, 'reference upload', MUAPI_REQUEST_TIMEOUT_MS, (response) => response.json(), { method: 'POST', headers, body: form });
|
|
248
|
+
const uploadedUrl = findMuapiMediaUrl(uploaded);
|
|
249
|
+
if (!uploadedUrl) {
|
|
250
|
+
console.error(chalk.red('Error:') + ' MuAPI reference upload did not return a file URL');
|
|
251
|
+
process.exit(1);
|
|
252
|
+
}
|
|
253
|
+
imageUrls.push(requireHttpsMuapiUrl(uploadedUrl, 'reference upload'));
|
|
254
|
+
}
|
|
255
|
+
const model = refs.length > 0 ? MUAPI_EDIT_MODEL : MUAPI_MODEL;
|
|
256
|
+
const payload = {
|
|
257
|
+
prompt: promptText,
|
|
258
|
+
aspect_ratio: aspect,
|
|
259
|
+
resolution: resolution.toLowerCase(),
|
|
260
|
+
};
|
|
261
|
+
if (imageUrls.length > 0)
|
|
262
|
+
payload.images_list = imageUrls;
|
|
263
|
+
const submitted = await muapiRequest(`${MUAPI_BASE_URL}/${model}`, 'submit', MUAPI_REQUEST_TIMEOUT_MS, (response) => response.json(), {
|
|
264
|
+
method: 'POST',
|
|
265
|
+
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
266
|
+
body: JSON.stringify(payload),
|
|
267
|
+
});
|
|
268
|
+
const predictionId = findMuapiRequestId(submitted);
|
|
269
|
+
if (!predictionId) {
|
|
270
|
+
console.error(chalk.red('Error:') + ' MuAPI did not return a prediction id');
|
|
271
|
+
process.exit(1);
|
|
272
|
+
}
|
|
273
|
+
const pollIntervalMs = options.pollIntervalMs ?? MUAPI_POLL_INTERVAL_MS;
|
|
274
|
+
const timeoutMs = options.timeoutMs ?? MUAPI_TIMEOUT_MS;
|
|
275
|
+
const deadline = Date.now() + timeoutMs;
|
|
276
|
+
for (;;) {
|
|
277
|
+
await new Promise((done) => setTimeout(done, pollIntervalMs));
|
|
278
|
+
if (Date.now() >= deadline) {
|
|
279
|
+
console.error(chalk.red('Error:') + ` MuAPI prediction ${predictionId} timed out after ${timeoutMs}ms`);
|
|
280
|
+
process.exit(1);
|
|
281
|
+
}
|
|
282
|
+
const polled = await muapiRequest(`${MUAPI_BASE_URL}/predictions/${encodeURIComponent(predictionId)}/result`, 'poll', MUAPI_REQUEST_TIMEOUT_MS, (response) => response.json(), { headers });
|
|
283
|
+
const status = findMuapiStatus(polled);
|
|
284
|
+
if (status === 'completed' || status === 'succeeded' || status === 'success') {
|
|
285
|
+
const mediaUrl = findMuapiMediaUrl(polled);
|
|
286
|
+
if (!mediaUrl) {
|
|
287
|
+
console.error(chalk.red('Error:') + ' MuAPI completed without an image URL');
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
const safeUrl = requireHttpsMuapiUrl(mediaUrl, 'image result');
|
|
291
|
+
const bytes = Buffer.from(await muapiRequest(safeUrl, 'image download', MUAPI_DOWNLOAD_TIMEOUT_MS, (response) => response.arrayBuffer()));
|
|
292
|
+
const target = targetPathForImageBytes(output, bytes, 'MuAPI');
|
|
293
|
+
writeFileSync(target, bytes);
|
|
294
|
+
console.log(chalk.green('Image saved to') + ` ${target}`);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
if (status === 'failed' || status === 'error' || status === 'cancelled') {
|
|
298
|
+
console.error(chalk.red('Error:') +
|
|
299
|
+
` MuAPI generation failed: ${findMuapiError(polled) || 'unknown error'}`);
|
|
300
|
+
process.exit(1);
|
|
301
|
+
}
|
|
302
|
+
if (typeof status !== 'string' || !MUAPI_IN_PROGRESS_STATUSES.has(status)) {
|
|
303
|
+
console.error(chalk.red('Error:') +
|
|
304
|
+
` MuAPI prediction ${predictionId} reported an unrecognized status: ` +
|
|
305
|
+
(status === undefined ? '(none)' : status));
|
|
306
|
+
process.exit(1);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* One Atlas exchange - connect, stream and parse - under a single deadline.
|
|
312
|
+
*
|
|
313
|
+
* ATLAS_TIMEOUT_MS bounds the poll loop as a whole, but it is only checked
|
|
314
|
+
* between requests: without a signal, a single stalled connection hangs the
|
|
315
|
+
* command forever. The signal also stays armed while the body streams, so the
|
|
316
|
+
* body read belongs inside the guard too - otherwise a poll that answers 200
|
|
317
|
+
* with an HTML error page, or a download aborted mid-stream, escapes as a raw
|
|
318
|
+
* SyntaxError or TimeoutError stack instead of a clear message.
|
|
319
|
+
*/
|
|
320
|
+
async function atlasRequest(url, what, timeoutMs, read, init = {}) {
|
|
321
|
+
// Resolved inside the try, acted on outside it, so that reporting a failure
|
|
322
|
+
// never lands in our own catch.
|
|
323
|
+
let outcome;
|
|
324
|
+
try {
|
|
325
|
+
const response = await fetch(url, { ...init, signal: AbortSignal.timeout(timeoutMs) });
|
|
326
|
+
outcome = response.ok
|
|
327
|
+
? { ok: true, body: await read(response) }
|
|
328
|
+
: { ok: false, detail: ` (${response.status}): ${await response.text()}` };
|
|
329
|
+
}
|
|
330
|
+
catch (error) {
|
|
331
|
+
outcome = {
|
|
332
|
+
ok: false,
|
|
333
|
+
detail: error instanceof Error && error.name === 'TimeoutError'
|
|
334
|
+
? `: no response within ${timeoutMs}ms`
|
|
335
|
+
: `: ${error instanceof Error ? error.message : String(error)}`,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
if (!outcome.ok) {
|
|
339
|
+
console.error(chalk.red('Error:') + ` Atlas ${what} failed${outcome.detail}`.trimEnd());
|
|
340
|
+
process.exit(1);
|
|
341
|
+
}
|
|
342
|
+
return outcome.body;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Generate through Atlas Cloud: submit a job, poll the prediction, download.
|
|
346
|
+
*
|
|
347
|
+
* The cadence and the overall budget are parameters rather than constants so
|
|
348
|
+
* tests can drive the loop without sleeping for real. Nothing but tests passes
|
|
349
|
+
* them; the CLI uses the defaults.
|
|
350
|
+
*/
|
|
351
|
+
export async function generateViaAtlas(promptText, output, aspect, resolution, refs, options = {}) {
|
|
352
|
+
const pollIntervalMs = options.pollIntervalMs ?? ATLAS_POLL_INTERVAL_MS;
|
|
353
|
+
const timeoutMs = options.timeoutMs ?? ATLAS_TIMEOUT_MS;
|
|
354
|
+
// Argument problems are reported before credential problems, so that
|
|
355
|
+
// `--provider atlas --ref x` names the unsupported flag rather than a
|
|
356
|
+
// missing key the user would not have needed anyway.
|
|
357
|
+
if (refs.length > 0) {
|
|
358
|
+
console.error(chalk.red('Error:') +
|
|
359
|
+
' --ref is not supported with --provider atlas (this path is text-to-image only).\n' +
|
|
360
|
+
'Use --provider gemini for reference images.');
|
|
361
|
+
process.exit(1);
|
|
362
|
+
}
|
|
363
|
+
const apiKey = process.env.ATLASCLOUD_API_KEY;
|
|
364
|
+
if (!apiKey) {
|
|
365
|
+
console.error(chalk.red('Error:') +
|
|
366
|
+
' ATLASCLOUD_API_KEY environment variable not set.\n' +
|
|
367
|
+
'Get an API key at https://www.atlascloud.ai/console');
|
|
368
|
+
process.exit(1);
|
|
369
|
+
}
|
|
370
|
+
// Measured against the endpoint: aspect_ratio is honoured (1:1 -> 1024x1024,
|
|
371
|
+
// 16:9 -> 1376x768), while 1K/2K/4K has no equivalent field here.
|
|
372
|
+
if (resolution !== '1K') {
|
|
373
|
+
console.log(chalk.yellow('Note:') +
|
|
374
|
+
` --resolution ${resolution} is not exposed by this provider; the model's default resolution is returned.`);
|
|
375
|
+
}
|
|
376
|
+
const headers = {
|
|
377
|
+
Authorization: `Bearer ${apiKey}`,
|
|
378
|
+
'Content-Type': 'application/json',
|
|
379
|
+
'User-Agent': ATLAS_USER_AGENT,
|
|
380
|
+
};
|
|
381
|
+
const submitted = (await atlasRequest(`${ATLAS_BASE_URL}/generateImage`, 'submit', ATLAS_REQUEST_TIMEOUT_MS, (response) => response.json(), {
|
|
382
|
+
method: 'POST',
|
|
383
|
+
headers,
|
|
384
|
+
body: JSON.stringify({ model: ATLAS_MODEL, prompt: promptText, aspect_ratio: aspect }),
|
|
385
|
+
}));
|
|
386
|
+
const predictionId = submitted?.data?.id;
|
|
387
|
+
if (typeof predictionId !== 'string' || predictionId === '') {
|
|
388
|
+
console.error(chalk.red('Error:') + ' Atlas did not return a prediction id');
|
|
389
|
+
process.exit(1);
|
|
390
|
+
}
|
|
391
|
+
const deadline = Date.now() + timeoutMs;
|
|
392
|
+
for (;;) {
|
|
393
|
+
await new Promise((done) => setTimeout(done, pollIntervalMs));
|
|
394
|
+
// Checked after the sleep, not before it: a pre-sleep check can pass on a
|
|
395
|
+
// budget that expires during the sleep, and then spend a whole further
|
|
396
|
+
// request on it.
|
|
397
|
+
if (Date.now() >= deadline) {
|
|
398
|
+
console.error(chalk.red('Error:') + ` Atlas prediction ${predictionId} timed out after ${timeoutMs}ms`);
|
|
399
|
+
process.exit(1);
|
|
400
|
+
}
|
|
401
|
+
const polled = (await atlasRequest(`${ATLAS_BASE_URL}/prediction/${encodeURIComponent(predictionId)}`, 'poll', ATLAS_REQUEST_TIMEOUT_MS, (response) => response.json(), { headers }));
|
|
402
|
+
const status = polled?.data?.status;
|
|
403
|
+
if (status === 'completed') {
|
|
404
|
+
const url = polled?.data?.outputs?.[0];
|
|
405
|
+
if (typeof url !== 'string' || url === '') {
|
|
406
|
+
console.error(chalk.red('Error:') + ' Atlas completed without an image URL');
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
// No Atlas headers here: the CDN is a different origin and must never
|
|
410
|
+
// see the API key.
|
|
411
|
+
const bytes = Buffer.from(await atlasRequest(url, 'image download', ATLAS_DOWNLOAD_TIMEOUT_MS, (response) => response.arrayBuffer()));
|
|
412
|
+
const target = targetPathForImageBytes(output, bytes);
|
|
413
|
+
writeFileSync(target, bytes);
|
|
414
|
+
console.log(chalk.green('Image saved to') + ` ${target}`);
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
if (status === 'failed') {
|
|
418
|
+
const detail = polled?.data?.error;
|
|
419
|
+
console.error(chalk.red('Error:') +
|
|
420
|
+
` Atlas generation failed: ${typeof detail === 'string' && detail !== '' ? detail : 'unknown'}`);
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
if (typeof status !== 'string' || !ATLAS_IN_PROGRESS_STATUSES.has(status)) {
|
|
424
|
+
// Polling on past a status we don't understand burns the full timeout and
|
|
425
|
+
// then reports it as one, which is a lie about what happened.
|
|
426
|
+
console.error(chalk.red('Error:') +
|
|
427
|
+
` Atlas prediction ${predictionId} reported an unrecognized status: ` +
|
|
428
|
+
(status === undefined ? '(none)' : String(status)));
|
|
429
|
+
process.exit(1);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
41
433
|
/**
|
|
42
434
|
* Main generate-image function
|
|
43
435
|
*/
|
|
@@ -48,6 +440,12 @@ export async function generateImage(prompt, options) {
|
|
|
48
440
|
const resolution = (options.resolution || '1K');
|
|
49
441
|
const aspect = (options.aspect || '1:1');
|
|
50
442
|
const refs = options.ref || [];
|
|
443
|
+
const provider = (options.provider || 'gemini');
|
|
444
|
+
// Validate provider
|
|
445
|
+
if (!PROVIDERS.includes(provider)) {
|
|
446
|
+
console.error(chalk.red('Error:') + ` Invalid provider '${provider}'. Use: ${PROVIDERS.join(', ')}`);
|
|
447
|
+
process.exit(1);
|
|
448
|
+
}
|
|
51
449
|
// Validate resolution
|
|
52
450
|
if (!RESOLUTIONS.includes(resolution)) {
|
|
53
451
|
console.error(chalk.red('Error:') +
|
|
@@ -78,6 +476,16 @@ export async function generateImage(prompt, options) {
|
|
|
78
476
|
}
|
|
79
477
|
// Read prompt
|
|
80
478
|
const promptText = readPrompt(prompt);
|
|
479
|
+
if (provider === 'atlas') {
|
|
480
|
+
console.log(chalk.blue('Generating image with') + ` ${ATLAS_MODEL} (Atlas Cloud)...`);
|
|
481
|
+
await generateViaAtlas(promptText, output, aspect, resolution, refs);
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
if (provider === 'muapi') {
|
|
485
|
+
console.log(chalk.blue('Generating image with') + ` ${MUAPI_MODEL} (MuAPI)...`);
|
|
486
|
+
await generateViaMuapi(promptText, output, aspect, resolution, refs);
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
81
489
|
console.log(chalk.blue('Generating image with') + ` ${MODEL}...`);
|
|
82
490
|
// Create client
|
|
83
491
|
const client = getClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/commands/generate-image.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wCAAwC;AACxC,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAE3C,qBAAqB;AACrB,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAGhD,sBAAsB;AACtB,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAUnF;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACxE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjB,mEAAmE;YACnE,sDAAsD,CACzD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,YAAoB;IACtC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,wDAAwD;AACxD,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,OAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAe,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAgB,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAE/B,sBAAsB;IACtB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjB,wBAAwB,UAAU,WAAW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjB,0BAA0B,MAAM,WAAW,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjB,+BAA+B,IAAI,CAAC,MAAM,iBAAiB,oBAAoB,GAAG,CACrF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,+BAA+B,GAAG,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,cAAc;IACd,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC;IAElE,gBAAgB;IAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,sEAAsE;IACtE,IAAI,QAAqF,CAAC;IAE1F,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,UAAU,GAAuE,EAAE,CAAC;QAE1F,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChD,qCAAqC;YACrC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACrD,MAAM,QAAQ,GACZ,GAAG,KAAK,KAAK;gBACX,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,GAAG,KAAK,KAAK;oBACb,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,GAAG,KAAK,MAAM;wBACd,CAAC,CAAC,YAAY;wBACd,CAAC,CAAC,YAAY,CAAC;YAEvB,UAAU,CAAC,IAAI,CAAC;gBACd,UAAU,EAAE;oBACV,QAAQ;oBACR,IAAI,EAAE,UAAU;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,QAAQ,GAAG,UAAU,CAAC;QAEtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,mBAAmB,CAAC,MAAM,qBAAqB,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,UAAU,CAAC;IACxB,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAgD;QAC/D,WAAW,EAAE,MAAM;KACpB,CAAC;IACF,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACnD,KAAK,EAAE,KAAK;QACZ,QAAQ;QACR,MAAM,EAAE;YACN,kBAAkB,EAAE,CAAC,OAAO,CAAC;YAC7B,WAAW;SACZ;KACF,CAAC,CAAC;IAEH,wCAAwC;IACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3D,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/commands/generate-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAA6C,MAAM,YAAY,CAAC;AAIpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAA6C,MAAM,YAAY,CAAC;AAIpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMvD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyC/H;AA6ID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAUjE;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAoFjB"}
|
|
@@ -13,6 +13,7 @@ import { getPhaseConfig, isPhased, isBuildVerify, getBuildConfig } from './proto
|
|
|
13
13
|
import { findPlanFile, getCurrentPlanPhase, getPhaseContent } from './plan.js';
|
|
14
14
|
import { getProjectDir, resolveArtifactBaseName } from './state.js';
|
|
15
15
|
import { fetchIssue } from '../../lib/github.js';
|
|
16
|
+
import { getForgeCommand, loadForgeConfig } from '../../lib/forge.js';
|
|
16
17
|
import { resolveCodevFile, resolveCodevIncludes } from '../../lib/skeleton.js';
|
|
17
18
|
import { readHotTierFiles } from '../../lib/managed-block.js';
|
|
18
19
|
/**
|
|
@@ -81,16 +82,31 @@ function loadPromptFile(workspaceRoot, protocolName, promptFile) {
|
|
|
81
82
|
// committed copy. Mirrors the spawn-side protocol.md inlining. #1011.
|
|
82
83
|
return resolveCodevIncludes(fs.readFileSync(resolved, 'utf-8'), workspaceRoot);
|
|
83
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve the `pr-create` concept command for the PR-opening prompts.
|
|
87
|
+
*
|
|
88
|
+
* Mirrors the `pr-merge` injection in porch/next.ts. Prompts must not hardcode
|
|
89
|
+
* `gh pr create`: a project with `forge.provider` set would otherwise shell out
|
|
90
|
+
* to `gh` at the single most important write in the protocol (#1455).
|
|
91
|
+
*/
|
|
92
|
+
function resolvePrCreateCommand(workspaceRoot) {
|
|
93
|
+
const command = getForgeCommand('pr-create', loadForgeConfig(workspaceRoot));
|
|
94
|
+
// The disabled form must FAIL, not comment: a `# …` line is valid shell that
|
|
95
|
+
// exits 0, so an agent running the block would read "PR opened" from silence.
|
|
96
|
+
return (command ??
|
|
97
|
+
"{ echo 'pr-create is disabled for this forge — open the PR manually' >&2; false; }");
|
|
98
|
+
}
|
|
84
99
|
/**
|
|
85
100
|
* Substitute template variables in a prompt.
|
|
86
101
|
*/
|
|
87
|
-
function substituteVariables(prompt, state, artifactBaseName, planPhase, summary) {
|
|
102
|
+
function substituteVariables(prompt, state, artifactBaseName, workspaceRoot, planPhase, summary) {
|
|
88
103
|
const variables = {
|
|
89
104
|
project_id: state.id,
|
|
90
105
|
title: state.title,
|
|
91
106
|
artifact_name: artifactBaseName,
|
|
92
107
|
current_state: state.phase,
|
|
93
108
|
protocol: state.protocol,
|
|
109
|
+
pr_create_command: resolvePrCreateCommand(workspaceRoot),
|
|
94
110
|
};
|
|
95
111
|
// Add summary/goal if available
|
|
96
112
|
if (summary) {
|
|
@@ -233,7 +249,7 @@ export async function buildPhasePrompt(workspaceRoot, state, protocol, resolver)
|
|
|
233
249
|
const promptFileName = buildConfig?.prompt || `${state.phase}.md`;
|
|
234
250
|
const promptContent = loadPromptFile(workspaceRoot, state.protocol, promptFileName);
|
|
235
251
|
if (promptContent) {
|
|
236
|
-
let result = substituteVariables(promptContent, state, artifactBaseName, currentPlanPhase, summary);
|
|
252
|
+
let result = substituteVariables(promptContent, state, artifactBaseName, workspaceRoot, currentPlanPhase, summary);
|
|
237
253
|
// Add goal/summary header if available
|
|
238
254
|
if (summary) {
|
|
239
255
|
result = `## Goal\n\n${summary}\n\n---\n\n` + result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,aAAqB,EAAE,SAAiB,EAAE,YAAqB;IACrG,mFAAmF;IACnF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,iDAAiD;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACvC,iEAAiE;YACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC9B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACrC,4EAA4E;gBAC5E,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;gBAC/D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;gBACzD,OAAO,gBAAgB,KAAK,YAAY,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,wBAAwB;gBACxB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACxE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,aAAqB,EAAE,YAAoB,EAAE,UAAkB;IACrF,MAAM,YAAY,GAAG,aAAa,YAAY,YAAY,UAAU,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,OAAO,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAc,EACd,KAAmB,EACnB,gBAAwB,EACxB,SAA4B,EAC5B,OAAuB;IAEvB,MAAM,SAAS,GAA2B;QACxC,UAAU,EAAE,KAAK,CAAC,EAAE;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,gBAAgB;QAC/B,aAAa,EAAE,KAAK,CAAC,KAAK;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"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"}
|