@drisp/cli 0.6.11 → 0.7.1
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/dist/{WorkflowInstallWizard-NZFBSBLY.js → WorkflowInstallWizard-BVWAIVBH.js} +2 -2
- package/dist/{chunk-D7QQIZDI.js → chunk-CPU4RLSW.js} +8 -7
- package/dist/{chunk-PGMV5I7Y.js → chunk-LCT645C4.js} +2 -2
- package/dist/{chunk-YUVMVYUF.js → chunk-TRNUPQQJ.js} +19 -14
- package/dist/cli.js +114 -62
- package/dist/dashboard-daemon.js +3 -3
- package/dist/runner.js +3 -3
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
installWorkflowPlugins,
|
|
9
9
|
resolveWorkflow,
|
|
10
10
|
writeGlobalConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TRNUPQQJ.js";
|
|
12
12
|
import "./chunk-G3PMV62Z.js";
|
|
13
13
|
|
|
14
14
|
// src/setup/steps/WorkflowInstallWizard.tsx
|
|
@@ -93,4 +93,4 @@ function WorkflowInstallWizard({ source, onDone }) {
|
|
|
93
93
|
export {
|
|
94
94
|
WorkflowInstallWizard as default
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=WorkflowInstallWizard-
|
|
96
|
+
//# sourceMappingURL=WorkflowInstallWizard-BVWAIVBH.js.map
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
verifyRendered,
|
|
56
56
|
wakesFreshAfterHandover,
|
|
57
57
|
workflowRegistryDir
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-TRNUPQQJ.js";
|
|
59
59
|
import {
|
|
60
60
|
__commonJS,
|
|
61
61
|
__toESM
|
|
@@ -14868,7 +14868,7 @@ async function restoreCheckpoint(store, input) {
|
|
|
14868
14868
|
|
|
14869
14869
|
// ../../modules/runtime/src/software-version.ts
|
|
14870
14870
|
import "fs";
|
|
14871
|
-
var runnerSoftwareVersion = true ? "0.
|
|
14871
|
+
var runnerSoftwareVersion = true ? "0.7.1" : JSON.parse(readFileSync2(new URL("../../../apps/cli/package.json", import.meta.url), "utf8")).version;
|
|
14872
14872
|
|
|
14873
14873
|
// ../../modules/runtime/src/connection.ts
|
|
14874
14874
|
var RunnerDisconnectedError = class extends Error {
|
|
@@ -20236,9 +20236,9 @@ var issueEntrySchema = external_exports.strictObject({
|
|
|
20236
20236
|
workflowName: external_exports.string().max(128)
|
|
20237
20237
|
});
|
|
20238
20238
|
var buildPlanSchema = external_exports.strictObject({
|
|
20239
|
-
version: external_exports.literal(
|
|
20239
|
+
version: external_exports.literal(2),
|
|
20240
20240
|
orchestratorRunId: external_exports.string().min(1),
|
|
20241
|
-
|
|
20241
|
+
planKey: external_exports.string().regex(/^plan:.+$/),
|
|
20242
20242
|
projectId: external_exports.string().min(1),
|
|
20243
20243
|
folder: external_exports.string().min(1),
|
|
20244
20244
|
runnerId: external_exports.string().min(1),
|
|
@@ -20594,9 +20594,9 @@ function planBuild(context) {
|
|
|
20594
20594
|
status: "planned",
|
|
20595
20595
|
workflows,
|
|
20596
20596
|
plan: {
|
|
20597
|
-
version:
|
|
20597
|
+
version: 2,
|
|
20598
20598
|
orchestratorRunId: context.orchestratorRunId,
|
|
20599
|
-
|
|
20599
|
+
planKey: `plan:${input.project.id}`,
|
|
20600
20600
|
projectId: input.project.id,
|
|
20601
20601
|
folder: context.folder,
|
|
20602
20602
|
runnerId: context.runnerId,
|
|
@@ -21852,6 +21852,7 @@ export {
|
|
|
21852
21852
|
ExecutionStore,
|
|
21853
21853
|
hubHttpUrl,
|
|
21854
21854
|
runnerSoftwareVersion,
|
|
21855
|
+
fillSchema,
|
|
21855
21856
|
planInputSchema,
|
|
21856
21857
|
buildPlanSchema,
|
|
21857
21858
|
git2 as git,
|
|
@@ -21886,4 +21887,4 @@ export {
|
|
|
21886
21887
|
runMachineRunners,
|
|
21887
21888
|
writeIdentityOnce
|
|
21888
21889
|
};
|
|
21889
|
-
//# sourceMappingURL=chunk-
|
|
21890
|
+
//# sourceMappingURL=chunk-CPU4RLSW.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runMachineRunners
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CPU4RLSW.js";
|
|
4
4
|
|
|
5
5
|
// src/app/entry/runnerDaemon.ts
|
|
6
6
|
if (process.argv.includes("--help")) {
|
|
@@ -13,4 +13,4 @@ if (process.argv.includes("--help")) {
|
|
|
13
13
|
process.exitCode = 1;
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
16
|
+
//# sourceMappingURL=chunk-LCT645C4.js.map
|
|
@@ -21281,7 +21281,7 @@ var GATES = [
|
|
|
21281
21281
|
];
|
|
21282
21282
|
|
|
21283
21283
|
// src/core/workflows/builtins/orchestrator/workflow.md
|
|
21284
|
-
var workflow_default = '# Orchestrator: plan and run a Build\n\nYou plan and run a Drisp Build of one
|
|
21284
|
+
var workflow_default = '# Orchestrator: plan and run a Build\n\nYou plan and run a Drisp Build of one Plan: the open issues of one Linear project. The Run\'s prompt names the\nLinear project, the Plan key and the project folder, which is your working directory. You never write code here:\neach issue is built by its own child Run, which `drisp build tick` starts.\n\nThe Runner sets these for you:\n\n- `DRISP_RUN_ARTIFACTS`: this Run\'s artifact directory. Files you write there are shown to the member.\n- `DRISP_RUN_ID`, `DRISP_RUNNER_ID`, `DRISP_RUN_TOKEN`, `DRISP_HUB_URL`: this Run, its Runner and its right to start\n child Runs; `drisp build` reads them itself.\n\n## 1. Read Linear (first Turn)\n\nWith the `linear` MCP server, read the project and every issue in it, then write\n`$DRISP_RUN_ARTIFACTS/input/plan-input.json` (create the `input` directory) in exactly this shape. Every issue carries\nevery field, empty when it has none. `readAt` is the output of\n`node -e "console.log(new Date().toISOString())"` run just before you read Linear; never write a time yourself:\n\n```json\n{\n "version": 1,\n "readAt": "<the command\'s output, e.g. 2026-10-11T09:30:00.000Z>",\n "project": {\n "id": "<the project\'s `uuid`, not its `id`>",\n "name": "<the project\'s `name`>",\n "slugId": "<the last `-`-separated part of the project\'s `url`>"\n },\n "issues": [\n {\n "id": "<the issue\'s `uuid`, not its `id`>",\n "identifier": "<the issue\'s `id`, e.g. DRI-12>",\n "title": "<the issue\'s `title`>",\n "url": "<the issue\'s `url`>",\n "branchName": "<the issue\'s `gitBranchName`, or null>",\n "state": {\n "type": "<the issue\'s `statusType`: backlog|unstarted|started|completed|canceled|triage>",\n "name": "<the issue\'s `status`>"\n },\n "labels": ["<each of the issue\'s `labels`>"],\n "parentId": "<the parent issue\'s `uuid`, or null>",\n "blockedBy": ["<the `uuid` of each issue in `relations.blockedBy`>"],\n "prioritySortOrder": 0\n }\n ]\n}\n```\n\nLinear\'s MCP names fields differently from this file, and the difference matters: the app finds each issue\'s row by\nits UUID, so a plan that carries identifiers shows no Build state on any row.\n\n- The MCP\'s `id` is the readable identifier (`DRI-12`, or `P-DRI-7` for a project); the UUID is in `uuid`. Every\n `id`, `parentId` and `blockedBy` value in `plan-input.json` is a UUID (`7f7b03f7-accf-46b2-98fb-abadfed76594`).\n- An issue\'s `parentId` and `relations.blockedBy` from the MCP name issues by identifier. Look each one up: use the\n `uuid` of the project\'s issue with that identifier, or `get_issue` it when it is outside the project.\n- Read relations with `get_issue` and `includeRelations: true`; read the project\'s issues with `list_issues` and\n `fields` including `uuid`.\n- The project\'s `url` ends in its `slugId` (`\u2026/project/build-sandbox-b7640301cd64` \u2192 `b7640301cd64`).\n\n`drisp build plan` rejects a plan with an identifier where a UUID belongs and names the field to fix.\n\nInclude every issue of the project, done and canceled ones too: the plan decides what to skip. Then run:\n\n```sh\ndrisp build plan --input "$DRISP_RUN_ARTIFACTS/input/plan-input.json"\n```\n\nIt prints one JSON object. Act on its `status`.\n\n## 2. `needs_fills`\n\n`fills` lists issues that need a `fill.json` (`identifier`, `title`, `url`, `path`) and `templateVersion` is the value\neach fill must carry. For each listed issue: read it through `linear` (description, acceptance criteria, comments) and\nthe repo\'s ADRs and CONTEXT files it touches, then write its `fill.json` at `path`:\n\n```json\n{\n "version": 1,\n "templateVersion": "<templateVersion, copied exactly>",\n "areas": ["macos|web|cli|hub|protocol|docs", "\u2026"],\n "qa": "none|web|macos",\n "sizeClass": "S|M|L",\n "instructions": "<what the child needs beyond the issue>",\n "ownWork": true\n}\n```\n\n- `areas`: the parts of the repo the change touches, each once.\n- `qa`: `web` when the change shows in a web page, `macos` when it shows in the macOS app, else `none`.\n- `sizeClass`: `S` for a change of a file or two, `M` for a feature across a few modules, `L` for a large or risky\n change.\n- `instructions` (at most 6000 characters): start with one short paragraph saying what to build, then restate the\n acceptance criteria, name the ADRs it touches and the parts of the codebase involved. Plain prose and `-` lists\n only: no headings, code fences or HTML comments (`drisp build plan` rejects them).\n- `ownWork`: `false` only for an issue with sub-issues whose own description asks for nothing beyond them, such as\n a PRD above its slices; the plan then skips it and waits for its sub-issues instead. Otherwise `true`.\n\nThen run `drisp build plan` again with the same `--input` path.\n\n## 3. `planned` or `failed`\n\nOn `planned` the Build plan is written and shown to the member, who decides whether to start it: end the Turn with\n`<!-- AWAITING_APPROVAL -->` as the Journal\'s last line. On `failed` the reason is shown instead: end with\n`<!-- WORKFLOW_COMPLETE -->`.\n\n## 4. Every later wake: tick\n\nYou are woken when the member answers the approval question and whenever one of your child Runs closes or parks.\nEach time: read Linear again into `$DRISP_RUN_ARTIFACTS/input/plan-input.json` as in step 1 (with a new `readAt`),\nthen run:\n\n```sh\ndrisp build tick --input "$DRISP_RUN_ARTIFACTS/input/plan-input.json"\n```\n\nIt prints one JSON object. Act on its `action`, and repeat until an action ends the Turn:\n\n- `refresh_input`: read Linear into the input again (a newer `readAt`) and tick again.\n- `repair`: for each of `issues`, read it in Linear first and skip an issue Linear now shows Done or Canceled (its\n child got there first); otherwise move it to Done and post its `comment` verbatim through `linear`. Then read\n Linear into the input again and tick again.\n- `rebase`: for each of `items`, in its `worktree`: `git rebase origin/main`, resolve the conflicts, then\n `git push --force-with-lease origin <branch>` (the item\'s `branch`) if the branch is on the remote. Never push any\n other branch. If a rebase cannot be resolved, `git rebase --abort`.\n Then read Linear into the input again and tick again, adding `--rebase-failed <identifier>` for each that failed.\n- `wait`: end the Turn with `<!-- WAITING_ON_CHILDREN -->` as the Journal\'s last line.\n- `park`: end the Turn with `<!-- NEEDS_HUMAN: <message> -->` as the Journal\'s last line, copying `message`\n verbatim.\n- `complete`: end the Turn with `<!-- WORKFLOW_COMPLETE -->` as the Journal\'s last line.\n\n## Rules\n\n- Never start, cancel or edit Runs, Workflows, worktrees or branches except as an action says; `drisp build` does\n what is needed.\n- Never write to Linear except a `repair`; never open a pull request.\n- Write only `plan-input.json` and the `fill.json` files `drisp build plan` asks for. Never write `answer.json`.\n';
|
|
21285
21285
|
|
|
21286
21286
|
// src/core/workflows/builtins/orchestrator/index.ts
|
|
21287
21287
|
var ORCHESTRATOR_WORKFLOW_NAME = "orchestrator";
|
|
@@ -21300,7 +21300,7 @@ var ORCHESTRATOR_INSTRUCTIONS = workflow_default;
|
|
|
21300
21300
|
function orchestratorWorkflow(workflowFile) {
|
|
21301
21301
|
return {
|
|
21302
21302
|
name: ORCHESTRATOR_WORKFLOW_NAME,
|
|
21303
|
-
description: "Plans a
|
|
21303
|
+
description: "Plans a Plan's open Linear issues into a Build plan, one Generated Workflow per issue, then builds them as child Runs in dependency order once the member starts it",
|
|
21304
21304
|
promptTemplate: "{input}",
|
|
21305
21305
|
plugins: [],
|
|
21306
21306
|
model: "sonnet",
|
|
@@ -21432,7 +21432,7 @@ Commands that only read (\`ls\`, \`cat\`, \`grep\`) need no grant; anything else
|
|
|
21432
21432
|
Write and Edit tools, never through shell redirection or a heredoc, and keep \`\${\u2026}\` and \`$(\u2026)\` expansions out of
|
|
21433
21433
|
shell commands.
|
|
21434
21434
|
|
|
21435
|
-
A refused tool call is not a
|
|
21435
|
+
A refused tool call is not a gate that cannot pass: never answer one with a gate's "cannot pass" line. Do the work
|
|
21436
21436
|
another way within these limits; when there is none, end the Turn with
|
|
21437
21437
|
\`<!-- NEEDS_HUMAN: A tool this Build does not allow was refused. Open the Thread to see which one. -->\` as the
|
|
21438
21438
|
Journal's last line.
|
|
@@ -21441,27 +21441,28 @@ Journal's last line.
|
|
|
21441
21441
|
|
|
21442
21442
|
{instructions}
|
|
21443
21443
|
|
|
21444
|
-
##
|
|
21444
|
+
## Gates
|
|
21445
21445
|
|
|
21446
|
-
Work through the
|
|
21447
|
-
|
|
21448
|
-
|
|
21446
|
+
Work through the gates in this order. Start each gate by running the command its "Start" line gives, which reports the
|
|
21447
|
+
gate to the Build page, then record the gate in the Journal before moving on. Never skip a gate and never reorder
|
|
21448
|
+
them. When a gate cannot pass, end the Turn with its "cannot pass" line exactly as written here, inside
|
|
21449
|
+
\`<!-- NEEDS_HUMAN: \u2026 -->\`, as the Journal's last line; never write your own reason.
|
|
21449
21450
|
|
|
21450
|
-
{
|
|
21451
|
+
{gates}
|
|
21451
21452
|
|
|
21452
21453
|
## Merge gate
|
|
21453
21454
|
|
|
21454
|
-
After the last rebase, in this Run: Checks pass; both reviewers pass; QA passes when it is a
|
|
21455
|
+
After the last rebase, in this Run: Checks pass; both reviewers pass; QA passes when it is a gate; no remote check
|
|
21455
21456
|
failed after its job started.
|
|
21456
21457
|
|
|
21457
21458
|
Before merging: \`git fetch origin\`; if \`origin/main\` is not an ancestor of HEAD, \`git rebase origin/main\`, run
|
|
21458
|
-
Checks again and \`git push --force-with-lease\` to this branch. Repeat at most 3 times; then the Merge
|
|
21459
|
+
Checks again and \`git push --force-with-lease\` to this branch. Repeat at most 3 times; then the Merge gate cannot
|
|
21459
21460
|
pass.
|
|
21460
21461
|
|
|
21461
21462
|
Then run \`drisp build checks\` in this worktree. It reads the GitHub runs on HEAD (\`gh run view <id> --json jobs\` for
|
|
21462
21463
|
each failed one) and prints \`{"ok", "failed", "ignored", "pending"}\`. A failed run whose failed jobs ran zero steps
|
|
21463
21464
|
is in \`ignored\`: it does not block the merge and its name goes in the evidence comment. While \`pending\` is not
|
|
21464
|
-
empty, wait a minute and run it again. When \`failed\` is not empty, fix the change; if it still fails, the Merge
|
|
21465
|
+
empty, wait a minute and run it again. When \`failed\` is not empty, fix the change; if it still fails, the Merge gate
|
|
21465
21466
|
cannot pass. Never judge a check by its timing.
|
|
21466
21467
|
|
|
21467
21468
|
Merge with \`gh pr merge --squash --delete-branch --match-head-commit <sha>\`, where \`<sha>\` is HEAD after the last
|
|
@@ -21486,10 +21487,12 @@ Ignored checks (no steps ran): <names> | none
|
|
|
21486
21487
|
Your Linear writes are exactly: In Progress in Explore, \`PR: <url>\` in Pull request, the evidence comment and Done in
|
|
21487
21488
|
Evidence. Never create issues and never edit an issue's title or description.
|
|
21488
21489
|
|
|
21489
|
-
When every
|
|
21490
|
+
When every gate has passed, end with \`<!-- WORKFLOW_COMPLETE -->\` as the Journal's last line.
|
|
21490
21491
|
`;
|
|
21491
21492
|
var STAGE_TEMPLATE = `### {n}. {title}
|
|
21492
21493
|
|
|
21494
|
+
Start: run \`{stepCommand}\`.
|
|
21495
|
+
|
|
21493
21496
|
Passes when: {passesWhen}.`;
|
|
21494
21497
|
var CANNOT_PASS_TEMPLATE = `
|
|
21495
21498
|
|
|
@@ -21567,6 +21570,7 @@ var RENDERER_RULES = {
|
|
|
21567
21570
|
edit: ["Edit(./**)"],
|
|
21568
21571
|
shell: [
|
|
21569
21572
|
"drisp build checks",
|
|
21573
|
+
"drisp build step",
|
|
21570
21574
|
"gh pr checks",
|
|
21571
21575
|
"gh pr create",
|
|
21572
21576
|
"gh pr list",
|
|
@@ -21697,6 +21701,7 @@ function renderStages(fill, checks, install) {
|
|
|
21697
21701
|
const stage = fillSlots(STAGE_TEMPLATE, {
|
|
21698
21702
|
n: String(index + 1),
|
|
21699
21703
|
title: gate.title,
|
|
21704
|
+
stepCommand: `drisp build step ${index + 1} --qa ${fill.qa}`,
|
|
21700
21705
|
passesWhen
|
|
21701
21706
|
});
|
|
21702
21707
|
return stage + (gate.cannotPass ? fillSlots(CANNOT_PASS_TEMPLATE, { cannotPass: gate.cannotPass }) : NO_GATE_TEXT_TEMPLATE);
|
|
@@ -21729,7 +21734,7 @@ function render(fill, workflowName, layout) {
|
|
|
21729
21734
|
const workflowMd = fillSlots(WORKFLOW_MD_TEMPLATE, {
|
|
21730
21735
|
identifier: parsed.identifier,
|
|
21731
21736
|
instructions: fill.instructions.trim(),
|
|
21732
|
-
|
|
21737
|
+
gates: renderStages(fill, checks, installCommand(fill, layout)),
|
|
21733
21738
|
checksEvidence: checks.map((command) => `${command} \u2713`).join(" \xB7 "),
|
|
21734
21739
|
shellCommands: checksText([...RENDERER_RULES.permissions.shell])
|
|
21735
21740
|
});
|
|
@@ -24242,4 +24247,4 @@ export {
|
|
|
24242
24247
|
compileWorkflowPlan,
|
|
24243
24248
|
collectMcpServersWithOptions
|
|
24244
24249
|
};
|
|
24245
|
-
//# sourceMappingURL=chunk-
|
|
24250
|
+
//# sourceMappingURL=chunk-TRNUPQQJ.js.map
|
package/dist/cli.js
CHANGED
|
@@ -42,6 +42,7 @@ import {
|
|
|
42
42
|
extractFriendlyServerName,
|
|
43
43
|
extractPermissionSnapshot,
|
|
44
44
|
fallbackBranch,
|
|
45
|
+
fillSchema,
|
|
45
46
|
finalizePlan,
|
|
46
47
|
fit,
|
|
47
48
|
fitAnsi,
|
|
@@ -137,7 +138,7 @@ import {
|
|
|
137
138
|
visualPositionToOffset,
|
|
138
139
|
wrapText,
|
|
139
140
|
writeIdentityOnce
|
|
140
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-CPU4RLSW.js";
|
|
141
142
|
import {
|
|
142
143
|
generateId as generateId2
|
|
143
144
|
} from "./chunk-PQIB66SG.js";
|
|
@@ -167,6 +168,7 @@ import {
|
|
|
167
168
|
deserializeRunMemory,
|
|
168
169
|
external_exports,
|
|
169
170
|
findMarketplaceRepoDir,
|
|
171
|
+
gateTitles,
|
|
170
172
|
gatherMarketplaceWorkflowSources,
|
|
171
173
|
hasProjectWorkflow,
|
|
172
174
|
installWorkflowFromSource,
|
|
@@ -194,7 +196,7 @@ import {
|
|
|
194
196
|
workflowRegistryDir,
|
|
195
197
|
writeGlobalConfig,
|
|
196
198
|
writeProjectConfig
|
|
197
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-TRNUPQQJ.js";
|
|
198
200
|
import {
|
|
199
201
|
__toESM
|
|
200
202
|
} from "./chunk-G3PMV62Z.js";
|
|
@@ -202,10 +204,10 @@ import {
|
|
|
202
204
|
// src/app/entry/cli.tsx
|
|
203
205
|
import { render } from "ink";
|
|
204
206
|
import meow from "meow";
|
|
205
|
-
import
|
|
207
|
+
import fs10 from "fs";
|
|
206
208
|
import { createRequire } from "module";
|
|
207
209
|
import os5 from "os";
|
|
208
|
-
import
|
|
210
|
+
import path10 from "path";
|
|
209
211
|
import { fileURLToPath } from "url";
|
|
210
212
|
|
|
211
213
|
// src/app/shell/sessionUiState.ts
|
|
@@ -5324,14 +5326,14 @@ function extractWebSearch(_input, response) {
|
|
|
5324
5326
|
return { type: "text", content: extractTextContent(response), maxLines: 10 };
|
|
5325
5327
|
}
|
|
5326
5328
|
function extractNotebookEdit(input, _response) {
|
|
5327
|
-
const
|
|
5329
|
+
const path11 = typeof input["notebook_path"] === "string" ? input["notebook_path"] : "";
|
|
5328
5330
|
const mode = typeof input["edit_mode"] === "string" ? input["edit_mode"] : "replace";
|
|
5329
5331
|
const source = typeof input["new_source"] === "string" ? input["new_source"] : "";
|
|
5330
|
-
if (!source) return { type: "text", content: `${mode} cell in ${
|
|
5332
|
+
if (!source) return { type: "text", content: `${mode} cell in ${path11}` };
|
|
5331
5333
|
return {
|
|
5332
5334
|
type: "code",
|
|
5333
5335
|
content: source,
|
|
5334
|
-
language: detectLanguage(
|
|
5336
|
+
language: detectLanguage(path11),
|
|
5335
5337
|
maxLines: 10
|
|
5336
5338
|
};
|
|
5337
5339
|
}
|
|
@@ -5857,10 +5859,10 @@ function extractToolSubject(toolName, toolInput) {
|
|
|
5857
5859
|
const parts = [];
|
|
5858
5860
|
const pattern = str(input, "pattern");
|
|
5859
5861
|
const glob = str(input, "glob");
|
|
5860
|
-
const
|
|
5862
|
+
const path11 = str(input, "path");
|
|
5861
5863
|
if (pattern) parts.push(`"${pattern}"`);
|
|
5862
5864
|
if (glob) parts.push(glob);
|
|
5863
|
-
if (
|
|
5865
|
+
if (path11) parts.push(`in ${path11}`);
|
|
5864
5866
|
return parts.length > 0 ? parts.join(" ") : void 0;
|
|
5865
5867
|
}
|
|
5866
5868
|
case "Skill":
|
|
@@ -13091,7 +13093,7 @@ var thisMachine = (installationId) => ({
|
|
|
13091
13093
|
os: `${platform()} ${release()}`.slice(0, 64),
|
|
13092
13094
|
softwareVersion: runnerSoftwareVersion
|
|
13093
13095
|
});
|
|
13094
|
-
var post = (origin,
|
|
13096
|
+
var post = (origin, path11, body) => fetch(new URL(path11, origin), {
|
|
13095
13097
|
method: "POST",
|
|
13096
13098
|
headers: { "Content-Type": "application/json" },
|
|
13097
13099
|
body: JSON.stringify(body)
|
|
@@ -13110,8 +13112,8 @@ async function alreadyConnected(existing, { forTeam, ownIdentity }) {
|
|
|
13110
13112
|
const problem = own ? await credentialAccepted(own.config) ? void 0 : "lapsed" : forTeam(existing.orgId).length ? "other_runner" : "missing";
|
|
13111
13113
|
const runner = { orgId: existing.orgId, runnerId: existing.runnerId, name: existing.name };
|
|
13112
13114
|
if (own && problem === void 0) return { status: "already_connected", ...runner, path: own.path };
|
|
13113
|
-
const
|
|
13114
|
-
return { status: "identity_unusable", ...runner, problem, ...
|
|
13115
|
+
const path11 = (own ?? forTeam(existing.orgId)[0])?.path;
|
|
13116
|
+
return { status: "identity_unusable", ...runner, problem, ...path11 ? { path: path11 } : {} };
|
|
13115
13117
|
}
|
|
13116
13118
|
async function connectWithCode({
|
|
13117
13119
|
code,
|
|
@@ -13183,20 +13185,20 @@ async function saveIdentity(origin, credential, { single, forTeam }, directory)
|
|
|
13183
13185
|
name: credential.name
|
|
13184
13186
|
});
|
|
13185
13187
|
const replaced = [];
|
|
13186
|
-
for (const { path:
|
|
13187
|
-
const aside = `${
|
|
13188
|
-
await rename(
|
|
13188
|
+
for (const { path: path12 } of forTeam(credential.orgId)) {
|
|
13189
|
+
const aside = `${path12}.replaced-${Date.now()}`;
|
|
13190
|
+
await rename(path12, aside);
|
|
13189
13191
|
replaced.push(aside);
|
|
13190
13192
|
}
|
|
13191
|
-
const
|
|
13193
|
+
const path11 = single ?? teamIdentityPath(origin, credential.orgId, directory);
|
|
13192
13194
|
try {
|
|
13193
|
-
await writeIdentityOnce(
|
|
13195
|
+
await writeIdentityOnce(path11, JSON.stringify(config, null, 2) + "\n");
|
|
13194
13196
|
} catch (error) {
|
|
13195
13197
|
if (error.code === "EEXIST")
|
|
13196
|
-
throw new Error(`Another Connect wrote a Runner identity for this Team at ${
|
|
13198
|
+
throw new Error(`Another Connect wrote a Runner identity for this Team at ${path11} meanwhile; it was left unchanged.`);
|
|
13197
13199
|
throw error;
|
|
13198
13200
|
}
|
|
13199
|
-
return { status: "connected", config, path:
|
|
13201
|
+
return { status: "connected", config, path: path11, replaced };
|
|
13200
13202
|
}
|
|
13201
13203
|
function pathSegment(value) {
|
|
13202
13204
|
const segment = encodeURIComponent(value);
|
|
@@ -13236,7 +13238,7 @@ async function refuseExisting(target) {
|
|
|
13236
13238
|
throw new Error(`This machine already has a Runner${name ? ` (${name})` : ""} configured at ${target}.`);
|
|
13237
13239
|
}
|
|
13238
13240
|
async function disconnectRunner({
|
|
13239
|
-
identity: { path:
|
|
13241
|
+
identity: { path: path11, config },
|
|
13240
13242
|
serviceManager,
|
|
13241
13243
|
othersRemain
|
|
13242
13244
|
}) {
|
|
@@ -13269,7 +13271,7 @@ async function disconnectRunner({
|
|
|
13269
13271
|
await restore();
|
|
13270
13272
|
throw new Error(`The Hub refused to disconnect ${name} (${body.error ?? response.status}); it is still connected.`);
|
|
13271
13273
|
}
|
|
13272
|
-
await forgetRunner(
|
|
13274
|
+
await forgetRunner(path11);
|
|
13273
13275
|
if (othersRemain) await restore();
|
|
13274
13276
|
else await serviceManager?.remove();
|
|
13275
13277
|
return result;
|
|
@@ -13422,18 +13424,18 @@ async function runRunnerCommandV2(input, options = {}) {
|
|
|
13422
13424
|
`This machine is already connected to this Team as ${outcome.name}, but ${why}. ` + (code ? `The code was not used: connect a new Runner in its place with ${retry}. ` : `Connect a new Runner in its place with a Connect code from Settings \u2192 Runners: ${retry}. `) + `The old ${outcome.name} stays listed in Settings \u2192 Runners, offline.`
|
|
13423
13425
|
);
|
|
13424
13426
|
}
|
|
13425
|
-
const { config, path:
|
|
13427
|
+
const { config, path: path11, replaced } = outcome;
|
|
13426
13428
|
for (const aside of replaced)
|
|
13427
13429
|
process.stdout.write(
|
|
13428
13430
|
`The Hub no longer recognised this machine's earlier identity for this Team; it was moved aside to ${aside}.
|
|
13429
13431
|
`
|
|
13430
13432
|
);
|
|
13431
13433
|
process.stdout.write(
|
|
13432
|
-
`Connected as ${config.name ?? config.runnerId}. Identity saved to ${
|
|
13434
|
+
`Connected as ${config.name ?? config.runnerId}. Identity saved to ${path11}.
|
|
13433
13435
|
`
|
|
13434
13436
|
);
|
|
13435
13437
|
if (services) {
|
|
13436
|
-
const service = await ensureService(services, config,
|
|
13438
|
+
const service = await ensureService(services, config, path11);
|
|
13437
13439
|
process.stdout.write(`${serviceStarted(service)}
|
|
13438
13440
|
`);
|
|
13439
13441
|
return 0;
|
|
@@ -13442,7 +13444,7 @@ async function runRunnerCommandV2(input, options = {}) {
|
|
|
13442
13444
|
process.stdout.write(
|
|
13443
13445
|
"No launchd or systemd here to run the Runner as a background service; running it in the foreground instead.\n"
|
|
13444
13446
|
);
|
|
13445
|
-
await runConfiguredRunner(
|
|
13447
|
+
await runConfiguredRunner(path11, options.signal);
|
|
13446
13448
|
return 0;
|
|
13447
13449
|
}
|
|
13448
13450
|
case "disconnect": {
|
|
@@ -13513,9 +13515,9 @@ async function runRunnerCommandV2(input, options = {}) {
|
|
|
13513
13515
|
configured: true,
|
|
13514
13516
|
// One entry per Team this machine serves; credentials are never printed.
|
|
13515
13517
|
teams: identities.map(
|
|
13516
|
-
({ path:
|
|
13518
|
+
({ path: path11, config: { token: _token, ...config } }) => ({
|
|
13517
13519
|
...config,
|
|
13518
|
-
path:
|
|
13520
|
+
path: path11
|
|
13519
13521
|
})
|
|
13520
13522
|
),
|
|
13521
13523
|
service: service ? {
|
|
@@ -13732,15 +13734,15 @@ function runBuildPlan(deps) {
|
|
|
13732
13734
|
slugId: input.project.slugId,
|
|
13733
13735
|
worktreesRoot: deps.worktreesRoot
|
|
13734
13736
|
});
|
|
13735
|
-
const
|
|
13737
|
+
const planDir = path6.join(
|
|
13736
13738
|
worktree.path,
|
|
13737
13739
|
".athena",
|
|
13738
13740
|
"workflows",
|
|
13739
13741
|
input.project.slugId
|
|
13740
13742
|
);
|
|
13741
|
-
writeFile(path6.join(
|
|
13743
|
+
writeFile(path6.join(planDir, "plan-input.json"), json(input));
|
|
13742
13744
|
const fixtureDir = fixtureInput ? path6.dirname(path6.resolve(fixtureInput)) : void 0;
|
|
13743
|
-
const fillPath = (identifier) => path6.join(
|
|
13745
|
+
const fillPath = (identifier) => path6.join(planDir, identifier, "fill.json");
|
|
13744
13746
|
const fills = Object.fromEntries(
|
|
13745
13747
|
input.issues.map((issue) => {
|
|
13746
13748
|
const fixture = fixtureDir ? path6.join(fixtureDir, "fills", `${issue.identifier}.json`) : void 0;
|
|
@@ -13780,27 +13782,27 @@ function runBuildPlan(deps) {
|
|
|
13780
13782
|
};
|
|
13781
13783
|
const host = deps.hostCapabilities();
|
|
13782
13784
|
for (const workflow of result.workflows) {
|
|
13783
|
-
const directory = path6.join(
|
|
13785
|
+
const directory = path6.join(planDir, workflow.identifier);
|
|
13784
13786
|
writeFile(path6.join(directory, "fill.json"), json(workflow.fill));
|
|
13785
13787
|
writeFile(path6.join(directory, "workflow.json"), workflow.workflowJson);
|
|
13786
13788
|
writeFile(path6.join(directory, "workflow.md"), workflow.workflowMd);
|
|
13787
13789
|
checkGenerated(directory, workflow, host, layout);
|
|
13788
13790
|
}
|
|
13789
|
-
const
|
|
13791
|
+
const relativePlanDir = path6.relative(worktree.path, planDir);
|
|
13790
13792
|
commitBuildFiles(
|
|
13791
13793
|
worktree.path,
|
|
13792
|
-
[
|
|
13794
|
+
[relativePlanDir],
|
|
13793
13795
|
`drisp build: Generated Workflows for ${input.project.slugId}`
|
|
13794
13796
|
);
|
|
13795
|
-
const commit = lastCommitTouching(worktree.path,
|
|
13796
|
-
path6.join(
|
|
13797
|
+
const commit = lastCommitTouching(worktree.path, relativePlanDir, [
|
|
13798
|
+
path6.join(relativePlanDir, "plan.json")
|
|
13797
13799
|
]);
|
|
13798
13800
|
const plan = finalizePlan(result.plan, commit);
|
|
13799
|
-
writeFile(path6.join(
|
|
13801
|
+
writeFile(path6.join(planDir, "plan.json"), json(plan));
|
|
13800
13802
|
commitBuildFiles(
|
|
13801
13803
|
worktree.path,
|
|
13802
|
-
[path6.join(
|
|
13803
|
-
`drisp build:
|
|
13804
|
+
[path6.join(relativePlanDir, "plan.json")],
|
|
13805
|
+
`drisp build: Build plan for ${input.project.slugId}`
|
|
13804
13806
|
);
|
|
13805
13807
|
writeFile(path6.join(artifacts, "build_plan.json"), json(plan));
|
|
13806
13808
|
return {
|
|
@@ -13860,9 +13862,9 @@ var DrispClient = class _DrispClient {
|
|
|
13860
13862
|
if (!match) throw new Error("invalid_hub_url");
|
|
13861
13863
|
return new _DrispClient(url.origin, decodeURIComponent(match[1]), async () => token);
|
|
13862
13864
|
}
|
|
13863
|
-
async request(
|
|
13865
|
+
async request(path11, body) {
|
|
13864
13866
|
const response = await fetch(
|
|
13865
|
-
`${this.baseUrl}/v2/orgs/${encodeURIComponent(this.orgId)}${
|
|
13867
|
+
`${this.baseUrl}/v2/orgs/${encodeURIComponent(this.orgId)}${path11}`,
|
|
13866
13868
|
{
|
|
13867
13869
|
method: body === void 0 ? "GET" : "POST",
|
|
13868
13870
|
headers: {
|
|
@@ -14458,15 +14460,15 @@ async function runBuildTick(deps) {
|
|
|
14458
14460
|
slugId: input.project.slugId,
|
|
14459
14461
|
worktreesRoot: deps.worktreesRoot
|
|
14460
14462
|
});
|
|
14461
|
-
const
|
|
14463
|
+
const planDir = path7.join(
|
|
14462
14464
|
worktree.path,
|
|
14463
14465
|
".athena",
|
|
14464
14466
|
"workflows",
|
|
14465
14467
|
input.project.slugId
|
|
14466
14468
|
);
|
|
14467
|
-
const
|
|
14468
|
-
const statePath = path7.join(
|
|
14469
|
-
const planPath = path7.join(
|
|
14469
|
+
const relativePlanDir = path7.relative(worktree.path, planDir);
|
|
14470
|
+
const statePath = path7.join(planDir, "build-state.json");
|
|
14471
|
+
const planPath = path7.join(planDir, "plan.json");
|
|
14470
14472
|
const parsedPlan = buildPlanSchema.safeParse(readJson(planPath));
|
|
14471
14473
|
if (!parsedPlan.success || parsedPlan.data.orchestratorRunId !== orchestratorRunId)
|
|
14472
14474
|
return notStarted();
|
|
@@ -14522,12 +14524,12 @@ async function runBuildTick(deps) {
|
|
|
14522
14524
|
let parkReason = assessment.parkReason;
|
|
14523
14525
|
const record = () => {
|
|
14524
14526
|
writeFile(statePath, json(state));
|
|
14525
|
-
const files = [path7.join(
|
|
14527
|
+
const files = [path7.join(relativePlanDir, "build-state.json")];
|
|
14526
14528
|
const emitted = json(currentPlan(plan, state));
|
|
14527
14529
|
if (emitted !== fs7.readFileSync(planPath, "utf-8")) {
|
|
14528
14530
|
writeFile(planPath, emitted);
|
|
14529
14531
|
writeFile(path7.join(artifacts, "build_plan.json"), emitted);
|
|
14530
|
-
files.push(path7.join(
|
|
14532
|
+
files.push(path7.join(relativePlanDir, "plan.json"));
|
|
14531
14533
|
}
|
|
14532
14534
|
if (commitBuildFiles(
|
|
14533
14535
|
worktree.path,
|
|
@@ -14566,7 +14568,7 @@ async function runBuildTick(deps) {
|
|
|
14566
14568
|
});
|
|
14567
14569
|
continue;
|
|
14568
14570
|
}
|
|
14569
|
-
const entryDir = path7.join(
|
|
14571
|
+
const entryDir = path7.join(relativePlanDir, entry.identifier);
|
|
14570
14572
|
git(worktree.path, ["checkout", plan.commit, "--", entryDir]);
|
|
14571
14573
|
installWorkflowFromSource(
|
|
14572
14574
|
{
|
|
@@ -14703,13 +14705,50 @@ function evaluateRemoteChecks(runs) {
|
|
|
14703
14705
|
return verdict;
|
|
14704
14706
|
}
|
|
14705
14707
|
|
|
14708
|
+
// src/core/build/step.ts
|
|
14709
|
+
import fs8 from "fs";
|
|
14710
|
+
import path8 from "path";
|
|
14711
|
+
var QA_KINDS = fillSchema.shape.qa.options;
|
|
14712
|
+
function runBuildStep(input) {
|
|
14713
|
+
const directory = requireEnv(input.env, "DRISP_RUN_ARTIFACTS");
|
|
14714
|
+
const qa = input.qa ?? "web";
|
|
14715
|
+
if (!QA_KINDS.includes(qa))
|
|
14716
|
+
throw new BuildUsageError(
|
|
14717
|
+
`--qa must be one of ${QA_KINDS.join(", ")}, not "${qa}".`
|
|
14718
|
+
);
|
|
14719
|
+
const titles = gateTitles({ qa });
|
|
14720
|
+
const index = /^[0-9]+$/.test(input.n ?? "") ? Number(input.n) : 0;
|
|
14721
|
+
if (index < 1 || index > titles.length)
|
|
14722
|
+
throw new BuildUsageError(
|
|
14723
|
+
`Step must be a whole number between 1 and ${titles.length}, not "${input.n ?? ""}".`
|
|
14724
|
+
);
|
|
14725
|
+
if (!fs8.statSync(directory, { throwIfNoEntry: false })?.isDirectory())
|
|
14726
|
+
throw new BuildUsageError(
|
|
14727
|
+
`DRISP_RUN_ARTIFACTS (${directory}) is not a directory.`
|
|
14728
|
+
);
|
|
14729
|
+
const artifact = {
|
|
14730
|
+
index,
|
|
14731
|
+
title: titles[index - 1],
|
|
14732
|
+
total: titles.length
|
|
14733
|
+
};
|
|
14734
|
+
fs8.writeFileSync(
|
|
14735
|
+
path8.join(directory, "step.json"),
|
|
14736
|
+
`${JSON.stringify(artifact)}
|
|
14737
|
+
`
|
|
14738
|
+
);
|
|
14739
|
+
return artifact;
|
|
14740
|
+
}
|
|
14741
|
+
|
|
14706
14742
|
// src/app/entry/buildCommand.ts
|
|
14707
14743
|
var USAGE3 = `Usage: drisp build plan --input <path>
|
|
14708
14744
|
drisp build tick --input <path> [--rebase-failed <IDENTIFIER>]...
|
|
14709
14745
|
drisp build checks
|
|
14746
|
+
drisp build step <n> [--qa none|web|macos]
|
|
14710
14747
|
plan and tick run inside an Orchestrator Run (DRISP_RUN_ID, DRISP_RUNNER_ID and DRISP_RUN_ARTIFACTS set; tick also
|
|
14711
14748
|
DRISP_RUN_TOKEN and DRISP_HUB_URL). DRISP_BUILD_PLAN_INPUT=<path> stands in for plan's --input, with
|
|
14712
|
-
fills/<IDENTIFIER>.json beside it. checks runs in a child's worktree: the merge gate's verdict on HEAD's GitHub runs
|
|
14749
|
+
fills/<IDENTIFIER>.json beside it. checks runs in a child's worktree: the merge gate's verdict on HEAD's GitHub runs.
|
|
14750
|
+
step runs in any Run with DRISP_RUN_ARTIFACTS set: it writes the step artifact {index, title, total} for gate <n> of the
|
|
14751
|
+
build-child template (QA is a gate unless --qa none) and refuses an index outside the list.`;
|
|
14713
14752
|
function githubPullRequests(folder, branch) {
|
|
14714
14753
|
const output = execFileSync(
|
|
14715
14754
|
"gh",
|
|
@@ -14827,6 +14866,13 @@ async function runBuildCommand(input) {
|
|
|
14827
14866
|
case "checks":
|
|
14828
14867
|
output = runBuildChecks(input.cwd, input.checks ?? defaultChecks);
|
|
14829
14868
|
break;
|
|
14869
|
+
case "step":
|
|
14870
|
+
output = runBuildStep({
|
|
14871
|
+
env: env2,
|
|
14872
|
+
n: input.positional?.[0],
|
|
14873
|
+
...input.flags.qa ? { qa: input.flags.qa } : {}
|
|
14874
|
+
});
|
|
14875
|
+
break;
|
|
14830
14876
|
default:
|
|
14831
14877
|
stderr.write(`${USAGE3}
|
|
14832
14878
|
`);
|
|
@@ -14849,9 +14895,9 @@ import process7 from "process";
|
|
|
14849
14895
|
|
|
14850
14896
|
// src/harnesses/claude/system/doctorEnvironment.ts
|
|
14851
14897
|
import { execFileSync as execFileSync2 } from "child_process";
|
|
14852
|
-
import * as
|
|
14898
|
+
import * as fs9 from "fs";
|
|
14853
14899
|
import * as os4 from "os";
|
|
14854
|
-
import * as
|
|
14900
|
+
import * as path9 from "path";
|
|
14855
14901
|
var MANAGED_POLICY_KEYS = [
|
|
14856
14902
|
"forceLoginMethod",
|
|
14857
14903
|
"forceLoginOrgUUID",
|
|
@@ -14955,8 +15001,8 @@ function collectEnvironment(options = {}) {
|
|
|
14955
15001
|
const detectVersion = options.detectClaudeVersionFn ?? detectClaudeVersion;
|
|
14956
15002
|
const runAuthStatus = options.runClaudeAuthStatusFn ?? runClaudeAuthStatus;
|
|
14957
15003
|
const resolveForwarder = options.resolveHookForwarderCommandFn ?? resolveHookForwarderCommand;
|
|
14958
|
-
const statFn = options.statFn ?? ((p) =>
|
|
14959
|
-
const readFileFn = options.readFileFn ?? ((p) =>
|
|
15004
|
+
const statFn = options.statFn ?? ((p) => fs9.statSync(p));
|
|
15005
|
+
const readFileFn = options.readFileFn ?? ((p) => fs9.readFileSync(p, "utf8"));
|
|
14960
15006
|
const settingsPaths = resolveClaudeSettingsSurfacePaths(
|
|
14961
15007
|
homeDir,
|
|
14962
15008
|
cwd,
|
|
@@ -15001,7 +15047,7 @@ function collectEnvironment(options = {}) {
|
|
|
15001
15047
|
});
|
|
15002
15048
|
let globalConfigPresent = false;
|
|
15003
15049
|
try {
|
|
15004
|
-
statFn(
|
|
15050
|
+
statFn(path9.join(homeDir, ".claude.json"));
|
|
15005
15051
|
globalConfigPresent = true;
|
|
15006
15052
|
} catch {
|
|
15007
15053
|
globalConfigPresent = false;
|
|
@@ -15481,13 +15527,13 @@ function runRunsCommand(input) {
|
|
|
15481
15527
|
// src/app/entry/cli.tsx
|
|
15482
15528
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
15483
15529
|
function resolvePackageJsonPath(entryUrl) {
|
|
15484
|
-
let currentDir =
|
|
15530
|
+
let currentDir = path10.dirname(fileURLToPath(entryUrl));
|
|
15485
15531
|
for (; ; ) {
|
|
15486
|
-
const candidatePath =
|
|
15487
|
-
if (
|
|
15532
|
+
const candidatePath = path10.join(currentDir, "package.json");
|
|
15533
|
+
if (fs10.existsSync(candidatePath)) {
|
|
15488
15534
|
return candidatePath;
|
|
15489
15535
|
}
|
|
15490
|
-
const parentDir =
|
|
15536
|
+
const parentDir = path10.dirname(currentDir);
|
|
15491
15537
|
if (parentDir === currentDir) {
|
|
15492
15538
|
throw new Error("Could not locate package.json for CLI metadata.");
|
|
15493
15539
|
}
|
|
@@ -15659,6 +15705,7 @@ var cli = meow(
|
|
|
15659
15705
|
build plan --input <path> Plan a Build inside an Orchestrator Run (prints one JSON object)
|
|
15660
15706
|
build tick --input <path> Run one step of a started Build (prints the next action; [--rebase-failed <ID>]...)
|
|
15661
15707
|
build checks The merge gate's verdict on HEAD's GitHub runs (in a child's worktree)
|
|
15708
|
+
build step <n> Report the Run's current step: writes the step run artifact ([--qa none|web|macos])
|
|
15662
15709
|
telemetry [action] Manage anonymous telemetry (enable/disable/status)
|
|
15663
15710
|
doctor Diagnose Claude headless setup (use with --harness=claude)
|
|
15664
15711
|
|
|
@@ -15796,6 +15843,9 @@ var cli = meow(
|
|
|
15796
15843
|
type: "string",
|
|
15797
15844
|
isMultiple: true
|
|
15798
15845
|
},
|
|
15846
|
+
qa: {
|
|
15847
|
+
type: "string"
|
|
15848
|
+
},
|
|
15799
15849
|
foreground: {
|
|
15800
15850
|
type: "boolean",
|
|
15801
15851
|
default: false
|
|
@@ -15835,7 +15885,7 @@ var cli = meow(
|
|
|
15835
15885
|
}
|
|
15836
15886
|
);
|
|
15837
15887
|
async function main() {
|
|
15838
|
-
const projectDir =
|
|
15888
|
+
const projectDir = path10.resolve(cli.flags.projectDir);
|
|
15839
15889
|
const [command, ...commandArgs] = cli.input;
|
|
15840
15890
|
const isRunCommand = command === "run" || command === "exec";
|
|
15841
15891
|
if (command && !KNOWN_COMMANDS.has(command)) {
|
|
@@ -15889,7 +15939,7 @@ Available commands: ${[...KNOWN_COMMANDS].join(", ")}`
|
|
|
15889
15939
|
await exitWith(1);
|
|
15890
15940
|
return;
|
|
15891
15941
|
}
|
|
15892
|
-
const { default: WorkflowInstallWizard } = await import("./WorkflowInstallWizard-
|
|
15942
|
+
const { default: WorkflowInstallWizard } = await import("./WorkflowInstallWizard-BVWAIVBH.js");
|
|
15893
15943
|
const { waitUntilExit } = render(
|
|
15894
15944
|
/* @__PURE__ */ jsx24(
|
|
15895
15945
|
WorkflowInstallWizard,
|
|
@@ -15968,11 +16018,13 @@ Available commands: ${[...KNOWN_COMMANDS].join(", ")}`
|
|
|
15968
16018
|
return;
|
|
15969
16019
|
}
|
|
15970
16020
|
if (command === "build") {
|
|
15971
|
-
const [subcommand = ""] = commandArgs;
|
|
16021
|
+
const [subcommand = "", ...buildArgs] = commandArgs;
|
|
15972
16022
|
await exitWith(
|
|
15973
16023
|
await runBuildCommand({
|
|
15974
16024
|
subcommand,
|
|
16025
|
+
positional: buildArgs,
|
|
15975
16026
|
flags: {
|
|
16027
|
+
...typeof cli.flags.qa === "string" ? { qa: cli.flags.qa } : {},
|
|
15976
16028
|
...typeof cli.flags.input === "string" ? { input: cli.flags.input } : {},
|
|
15977
16029
|
...cli.flags.rebaseFailed?.length ? { rebaseFailed: cli.flags.rebaseFailed } : {}
|
|
15978
16030
|
},
|
|
@@ -16054,8 +16106,8 @@ Available commands: ${[...KNOWN_COMMANDS].join(", ")}`
|
|
|
16054
16106
|
const showSetup = isRunCommand ? false : shouldShowSetup({
|
|
16055
16107
|
cliInput: cli.input,
|
|
16056
16108
|
setupComplete: globalConfig.setupComplete,
|
|
16057
|
-
globalConfigExists:
|
|
16058
|
-
|
|
16109
|
+
globalConfigExists: fs10.existsSync(
|
|
16110
|
+
path10.join(os5.homedir(), ".config", "athena", "config.json")
|
|
16059
16111
|
)
|
|
16060
16112
|
});
|
|
16061
16113
|
let runtimeConfig;
|
package/dist/dashboard-daemon.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./chunk-
|
|
2
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-LCT645C4.js";
|
|
2
|
+
import "./chunk-CPU4RLSW.js";
|
|
3
3
|
import "./chunk-PQIB66SG.js";
|
|
4
|
-
import "./chunk-
|
|
4
|
+
import "./chunk-TRNUPQQJ.js";
|
|
5
5
|
import "./chunk-G3PMV62Z.js";
|
|
6
6
|
//# sourceMappingURL=dashboard-daemon.js.map
|
package/dist/runner.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./chunk-
|
|
2
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-LCT645C4.js";
|
|
2
|
+
import "./chunk-CPU4RLSW.js";
|
|
3
3
|
import "./chunk-PQIB66SG.js";
|
|
4
|
-
import "./chunk-
|
|
4
|
+
import "./chunk-TRNUPQQJ.js";
|
|
5
5
|
import "./chunk-G3PMV62Z.js";
|
|
6
6
|
//# sourceMappingURL=runner.js.map
|