@drisp/cli 0.6.10 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ import {
8
8
  installWorkflowPlugins,
9
9
  resolveWorkflow,
10
10
  writeGlobalConfig
11
- } from "./chunk-YUVMVYUF.js";
11
+ } from "./chunk-HVMTDYND.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-NZFBSBLY.js.map
96
+ //# sourceMappingURL=WorkflowInstallWizard-OJAB2Z2X.js.map
@@ -55,7 +55,7 @@ import {
55
55
  verifyRendered,
56
56
  wakesFreshAfterHandover,
57
57
  workflowRegistryDir
58
- } from "./chunk-YUVMVYUF.js";
58
+ } from "./chunk-HVMTDYND.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.6.10" : JSON.parse(readFileSync2(new URL("../../../apps/cli/package.json", import.meta.url), "utf8")).version;
14871
+ var runnerSoftwareVersion = true ? "0.7.0" : 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 {
@@ -19915,6 +19915,7 @@ var CAP_BY_BOUND = {
19915
19915
  "handover cap": "handover",
19916
19916
  "token budget": "tokens"
19917
19917
  };
19918
+ var AGENT_QUESTION = /^agent asked a question with no human attached to answer(?::\s*(.*))?$/s;
19918
19919
  function group(match, index) {
19919
19920
  return match[index];
19920
19921
  }
@@ -19927,9 +19928,7 @@ function interruptionFromSuspension(stopReason) {
19927
19928
  const reason = group(blocked, 1)?.trim();
19928
19929
  return { kind: "blocked", message, ...reason ? { reason } : {} };
19929
19930
  }
19930
- const question = /^agent asked a question with no human attached to answer(?::\s*(.*))?$/s.exec(
19931
- message
19932
- );
19931
+ const question = AGENT_QUESTION.exec(message);
19933
19932
  if (question) {
19934
19933
  const text = group(question, 1)?.trim();
19935
19934
  return { kind: "question", message, ...text ? { question: text } : {} };
@@ -19977,6 +19976,12 @@ function interruptionFromSuspension(stopReason) {
19977
19976
  }
19978
19977
  return { kind: "blocked", message, reason: message };
19979
19978
  }
19979
+ function agentQuestion(interruption) {
19980
+ if (interruption.kind !== "question" || interruption.requestId)
19981
+ return void 0;
19982
+ if (!AGENT_QUESTION.test(interruption.message)) return void 0;
19983
+ return interruption.question?.trim() || void 0;
19984
+ }
19980
19985
 
19981
19986
  // ../../modules/runtime/src/session-store.ts
19982
19987
  import { resolve as resolve4 } from "path";
@@ -20231,9 +20236,9 @@ var issueEntrySchema = external_exports.strictObject({
20231
20236
  workflowName: external_exports.string().max(128)
20232
20237
  });
20233
20238
  var buildPlanSchema = external_exports.strictObject({
20234
- version: external_exports.literal(1),
20239
+ version: external_exports.literal(2),
20235
20240
  orchestratorRunId: external_exports.string().min(1),
20236
- designKey: external_exports.string().regex(/^design:.+$/),
20241
+ planKey: external_exports.string().regex(/^plan:.+$/),
20237
20242
  projectId: external_exports.string().min(1),
20238
20243
  folder: external_exports.string().min(1),
20239
20244
  runnerId: external_exports.string().min(1),
@@ -20589,9 +20594,9 @@ function planBuild(context) {
20589
20594
  status: "planned",
20590
20595
  workflows,
20591
20596
  plan: {
20592
- version: 1,
20597
+ version: 2,
20593
20598
  orchestratorRunId: context.orchestratorRunId,
20594
- designKey: `design:${input.project.id}`,
20599
+ planKey: `plan:${input.project.id}`,
20595
20600
  projectId: input.project.id,
20596
20601
  folder: context.folder,
20597
20602
  runnerId: context.runnerId,
@@ -21482,9 +21487,10 @@ ${prompt2}`;
21482
21487
  ...interruption ? {
21483
21488
  interruption: {
21484
21489
  kind: interruption.kind === "question" ? interruption.requestId ? "permission" : "question" : "guidance",
21485
- // A `NEEDS_HUMAN` park says why in the agent's own words; the Runner's stop sentence around them
21486
- // is for its logs, not the person the Run waits on (apps/macos ADR-0006).
21487
- message: interruption.kind === "blocked" && interruption.reason || interruption.message,
21490
+ // A `NEEDS_HUMAN` park says why in the agent's own words, and a parked question is just the
21491
+ // question (DRI-186); the Runner's stop sentence around them is for its logs, not the person
21492
+ // the Run waits on (apps/macos ADR-0006). Permission requests keep the sentence.
21493
+ message: interruption.kind === "blocked" && interruption.reason || agentQuestion(interruption) || interruption.message,
21488
21494
  ...interruption.kind === "question" && interruption.requestId ? { requestId: interruption.requestId } : {}
21489
21495
  }
21490
21496
  } : {}
@@ -21880,4 +21886,4 @@ export {
21880
21886
  runMachineRunners,
21881
21887
  writeIdentityOnce
21882
21888
  };
21883
- //# sourceMappingURL=chunk-BTHLAJV7.js.map
21889
+ //# sourceMappingURL=chunk-36375KNH.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runMachineRunners
3
- } from "./chunk-BTHLAJV7.js";
3
+ } from "./chunk-36375KNH.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-LRMKGH2R.js.map
16
+ //# sourceMappingURL=chunk-DRPOYSOH.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 Design: the open issues of one Linear project. The Run\'s prompt names the\nLinear project, the Design 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 Run 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';
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 Design's open Linear issues into a Run plan, one Generated Workflow per issue, then builds them as child Runs in dependency order once the member starts it",
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",
@@ -24242,4 +24242,4 @@ export {
24242
24242
  compileWorkflowPlan,
24243
24243
  collectMcpServersWithOptions
24244
24244
  };
24245
- //# sourceMappingURL=chunk-YUVMVYUF.js.map
24245
+ //# sourceMappingURL=chunk-HVMTDYND.js.map
package/dist/cli.js CHANGED
@@ -137,7 +137,7 @@ import {
137
137
  visualPositionToOffset,
138
138
  wrapText,
139
139
  writeIdentityOnce
140
- } from "./chunk-BTHLAJV7.js";
140
+ } from "./chunk-36375KNH.js";
141
141
  import {
142
142
  generateId as generateId2
143
143
  } from "./chunk-PQIB66SG.js";
@@ -194,7 +194,7 @@ import {
194
194
  workflowRegistryDir,
195
195
  writeGlobalConfig,
196
196
  writeProjectConfig
197
- } from "./chunk-YUVMVYUF.js";
197
+ } from "./chunk-HVMTDYND.js";
198
198
  import {
199
199
  __toESM
200
200
  } from "./chunk-G3PMV62Z.js";
@@ -13732,15 +13732,15 @@ function runBuildPlan(deps) {
13732
13732
  slugId: input.project.slugId,
13733
13733
  worktreesRoot: deps.worktreesRoot
13734
13734
  });
13735
- const designDir = path6.join(
13735
+ const planDir = path6.join(
13736
13736
  worktree.path,
13737
13737
  ".athena",
13738
13738
  "workflows",
13739
13739
  input.project.slugId
13740
13740
  );
13741
- writeFile(path6.join(designDir, "plan-input.json"), json(input));
13741
+ writeFile(path6.join(planDir, "plan-input.json"), json(input));
13742
13742
  const fixtureDir = fixtureInput ? path6.dirname(path6.resolve(fixtureInput)) : void 0;
13743
- const fillPath = (identifier) => path6.join(designDir, identifier, "fill.json");
13743
+ const fillPath = (identifier) => path6.join(planDir, identifier, "fill.json");
13744
13744
  const fills = Object.fromEntries(
13745
13745
  input.issues.map((issue) => {
13746
13746
  const fixture = fixtureDir ? path6.join(fixtureDir, "fills", `${issue.identifier}.json`) : void 0;
@@ -13780,27 +13780,27 @@ function runBuildPlan(deps) {
13780
13780
  };
13781
13781
  const host = deps.hostCapabilities();
13782
13782
  for (const workflow of result.workflows) {
13783
- const directory = path6.join(designDir, workflow.identifier);
13783
+ const directory = path6.join(planDir, workflow.identifier);
13784
13784
  writeFile(path6.join(directory, "fill.json"), json(workflow.fill));
13785
13785
  writeFile(path6.join(directory, "workflow.json"), workflow.workflowJson);
13786
13786
  writeFile(path6.join(directory, "workflow.md"), workflow.workflowMd);
13787
13787
  checkGenerated(directory, workflow, host, layout);
13788
13788
  }
13789
- const relativeDesignDir = path6.relative(worktree.path, designDir);
13789
+ const relativePlanDir = path6.relative(worktree.path, planDir);
13790
13790
  commitBuildFiles(
13791
13791
  worktree.path,
13792
- [relativeDesignDir],
13792
+ [relativePlanDir],
13793
13793
  `drisp build: Generated Workflows for ${input.project.slugId}`
13794
13794
  );
13795
- const commit = lastCommitTouching(worktree.path, relativeDesignDir, [
13796
- path6.join(relativeDesignDir, "plan.json")
13795
+ const commit = lastCommitTouching(worktree.path, relativePlanDir, [
13796
+ path6.join(relativePlanDir, "plan.json")
13797
13797
  ]);
13798
13798
  const plan = finalizePlan(result.plan, commit);
13799
- writeFile(path6.join(designDir, "plan.json"), json(plan));
13799
+ writeFile(path6.join(planDir, "plan.json"), json(plan));
13800
13800
  commitBuildFiles(
13801
13801
  worktree.path,
13802
- [path6.join(relativeDesignDir, "plan.json")],
13803
- `drisp build: Run plan for ${input.project.slugId}`
13802
+ [path6.join(relativePlanDir, "plan.json")],
13803
+ `drisp build: Build plan for ${input.project.slugId}`
13804
13804
  );
13805
13805
  writeFile(path6.join(artifacts, "build_plan.json"), json(plan));
13806
13806
  return {
@@ -14458,15 +14458,15 @@ async function runBuildTick(deps) {
14458
14458
  slugId: input.project.slugId,
14459
14459
  worktreesRoot: deps.worktreesRoot
14460
14460
  });
14461
- const designDir = path7.join(
14461
+ const planDir = path7.join(
14462
14462
  worktree.path,
14463
14463
  ".athena",
14464
14464
  "workflows",
14465
14465
  input.project.slugId
14466
14466
  );
14467
- const relativeDesignDir = path7.relative(worktree.path, designDir);
14468
- const statePath = path7.join(designDir, "build-state.json");
14469
- const planPath = path7.join(designDir, "plan.json");
14467
+ const relativePlanDir = path7.relative(worktree.path, planDir);
14468
+ const statePath = path7.join(planDir, "build-state.json");
14469
+ const planPath = path7.join(planDir, "plan.json");
14470
14470
  const parsedPlan = buildPlanSchema.safeParse(readJson(planPath));
14471
14471
  if (!parsedPlan.success || parsedPlan.data.orchestratorRunId !== orchestratorRunId)
14472
14472
  return notStarted();
@@ -14522,12 +14522,12 @@ async function runBuildTick(deps) {
14522
14522
  let parkReason = assessment.parkReason;
14523
14523
  const record = () => {
14524
14524
  writeFile(statePath, json(state));
14525
- const files = [path7.join(relativeDesignDir, "build-state.json")];
14525
+ const files = [path7.join(relativePlanDir, "build-state.json")];
14526
14526
  const emitted = json(currentPlan(plan, state));
14527
14527
  if (emitted !== fs7.readFileSync(planPath, "utf-8")) {
14528
14528
  writeFile(planPath, emitted);
14529
14529
  writeFile(path7.join(artifacts, "build_plan.json"), emitted);
14530
- files.push(path7.join(relativeDesignDir, "plan.json"));
14530
+ files.push(path7.join(relativePlanDir, "plan.json"));
14531
14531
  }
14532
14532
  if (commitBuildFiles(
14533
14533
  worktree.path,
@@ -14566,7 +14566,7 @@ async function runBuildTick(deps) {
14566
14566
  });
14567
14567
  continue;
14568
14568
  }
14569
- const entryDir = path7.join(relativeDesignDir, entry.identifier);
14569
+ const entryDir = path7.join(relativePlanDir, entry.identifier);
14570
14570
  git(worktree.path, ["checkout", plan.commit, "--", entryDir]);
14571
14571
  installWorkflowFromSource(
14572
14572
  {
@@ -15889,7 +15889,7 @@ Available commands: ${[...KNOWN_COMMANDS].join(", ")}`
15889
15889
  await exitWith(1);
15890
15890
  return;
15891
15891
  }
15892
- const { default: WorkflowInstallWizard } = await import("./WorkflowInstallWizard-NZFBSBLY.js");
15892
+ const { default: WorkflowInstallWizard } = await import("./WorkflowInstallWizard-OJAB2Z2X.js");
15893
15893
  const { waitUntilExit } = render(
15894
15894
  /* @__PURE__ */ jsx24(
15895
15895
  WorkflowInstallWizard,
@@ -1,6 +1,6 @@
1
- import "./chunk-LRMKGH2R.js";
2
- import "./chunk-BTHLAJV7.js";
1
+ import "./chunk-DRPOYSOH.js";
2
+ import "./chunk-36375KNH.js";
3
3
  import "./chunk-PQIB66SG.js";
4
- import "./chunk-YUVMVYUF.js";
4
+ import "./chunk-HVMTDYND.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-LRMKGH2R.js";
2
- import "./chunk-BTHLAJV7.js";
1
+ import "./chunk-DRPOYSOH.js";
2
+ import "./chunk-36375KNH.js";
3
3
  import "./chunk-PQIB66SG.js";
4
- import "./chunk-YUVMVYUF.js";
4
+ import "./chunk-HVMTDYND.js";
5
5
  import "./chunk-G3PMV62Z.js";
6
6
  //# sourceMappingURL=runner.js.map
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "hooks",
18
18
  "dashboard"
19
19
  ],
20
- "version": "0.6.10",
20
+ "version": "0.7.0",
21
21
  "license": "MIT",
22
22
  "bin": {
23
23
  "athena": "dist/cli.js",