wildcrane 0.11.4 → 0.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/bin/ai4kanban.mjs +2 -21
- package/dist/kanban.mjs +16 -26
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,9 @@ The CLI for WildCrane. See the draft. Let agents do the rest.
|
|
|
4
4
|
|
|
5
5
|
See the [project README](https://github.com/ai4kanban/ai4kanban#readme) for the product overview and [documentation](https://wildcrane.ai/docs) for setup and usage.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 安装或更新
|
|
8
|
+
|
|
9
|
+
适用于通过 npm 安装的独立 CLI:
|
|
8
10
|
|
|
9
11
|
```bash
|
|
10
12
|
npm install -g wildcrane@latest
|
package/bin/ai4kanban.mjs
CHANGED
|
@@ -7,10 +7,7 @@
|
|
|
7
7
|
// package's built rules, and hand the whole command line to one of the two trees in there —
|
|
8
8
|
// `akb raw <move>`, or everything else.
|
|
9
9
|
//
|
|
10
|
-
//
|
|
11
|
-
// beside them (desktop/scripts/bundle-cli.mjs), so this file must have no dependencies. The
|
|
12
|
-
// commands, their options and their help are declared in cli/src/lib/cli/, which the build
|
|
13
|
-
// bundles — with everything it needs — into the one file this loads.
|
|
10
|
+
// 入口只使用 Node 内置模块;命令及依赖由 cli/src/ 打包到 dist/。
|
|
14
11
|
//
|
|
15
12
|
// Node 18+, same behaviour on macOS, Linux and Windows.
|
|
16
13
|
|
|
@@ -23,23 +20,7 @@ const PKG = JSON.parse(fs.readFileSync(path.join(PKG_DIR, 'package.json'), 'utf8
|
|
|
23
20
|
const NAME = PKG.name
|
|
24
21
|
const VERSION = PKG.version
|
|
25
22
|
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// A global install puts it on the PATH as `akb`, and every example everywhere spells it that
|
|
29
|
-
// way. It is also run as a path — `node cli/bin/ai4kanban.mjs` in a source checkout, the copy
|
|
30
|
-
// inside the desktop app — and printing `akb` to a reader who has none is printing a line
|
|
31
|
-
// that ends in `command not found`. Whoever typed it is right here in argv, so ask that
|
|
32
|
-
// rather than guessing: only the PATH spellings are `akb`, `.mjs` never is.
|
|
33
|
-
//
|
|
34
|
-
// Not what's on the PATH, which is a different question with a different answer: `npx` puts
|
|
35
|
-
// an `akb` on the PATH of THIS process and nothing else, so the reader would still be given a
|
|
36
|
-
// line their own shell can't run. That one is spotted by the cache it runs out of, and
|
|
37
|
-
// answered with the same fetch pinned to this version — never `@latest`, which is how a board
|
|
38
|
-
// comes to be driven by two versions of its own rules.
|
|
39
|
-
//
|
|
40
|
-
// AI4KANBAN_COMMAND is how the desktop app's launcher says what it was typed as. That
|
|
41
|
-
// launcher is reached as `akb` on the PATH and then runs this file by its path, so argv alone
|
|
42
|
-
// would report the copy inside the app — a line no reader can paste.
|
|
23
|
+
// 保留用户调用时的命令名;npx 调用固定版本,Runner 可通过环境变量指定名称。
|
|
43
24
|
const PROGRAM = (() => {
|
|
44
25
|
const named = (process.env.AI4KANBAN_COMMAND || '').trim()
|
|
45
26
|
if (named) return named
|
package/dist/kanban.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// ai4kanban 0.11.
|
|
2
|
+
// ai4kanban 0.11.6 — built from the CLI's TypeScript sources by cli/scripts/build.mjs.
|
|
3
3
|
// Do not edit: every change belongs in cli/src/, and a build overwrites this file.
|
|
4
4
|
import { createRequire as __ai4kanbanRequire } from 'node:module'
|
|
5
5
|
const require = __ai4kanbanRequire(import.meta.url)
|
|
@@ -4977,7 +4977,7 @@ var init_package = __esm({
|
|
|
4977
4977
|
"package.json"() {
|
|
4978
4978
|
package_default = {
|
|
4979
4979
|
name: "wildcrane",
|
|
4980
|
-
version: "0.11.
|
|
4980
|
+
version: "0.11.6",
|
|
4981
4981
|
akbContract: 2,
|
|
4982
4982
|
description: "WildCrane's `akb` command \u2014 scaffold the Markdown board under docs/kanban/, put an agent on a card, and carry the flows the agent works by.",
|
|
4983
4983
|
keywords: [
|
|
@@ -23023,7 +23023,7 @@ var init_archive2 = __esm({
|
|
|
23023
23023
|
var board_default;
|
|
23024
23024
|
var init_board3 = __esm({
|
|
23025
23025
|
"src/guide/board.md"() {
|
|
23026
|
-
board_default = "# How this board works\n\nThese rules apply to every card workflow. Read them once; each workflow's guide covers\nthe remaining details.\n\n## Layout\n\n```\ndocs/kanban/\n\u251C\u2500\u2500 todo/ open tasks\n\u2502 \u251C\u2500\u2500 README.md the index \u2014 read it first\n\u2502 \u2514\u2500\u2500 <id>-<slug>.md\n\u2502 one card per file; a group keeps its cards in one folder\n\u251C\u2500\u2500 memory/ all memory \u2014 see \"Who owns a memory file\"\n\u2502 \u251C\u2500\u2500 readme.md what shipped \u2014 the board's own record\n\u2502 \u251C\u2500\u2500 project.md what the project is today \u2014 written only by `akb describe-project`\n\u2502 \u251C\u2500\u2500 <name>/ a global memory: `MEMORY.md` (its rules, unless built in), `README.md`\n\u2502 \u2502 (its index) and its entries\n\u2502 \u2514\u2500\u2500 agents/ one folder per agent that keeps memory, named after it \u2014\n\u2502 `planner/` holds `decisions.md`, `rejected.md`, `redesign.md`\n\u251C\u2500\u2500 rules/ `<agent>.md` \u2014 the user's rule for one agent, appended to every run it\n\u2502 does; written from the board UI or `akb raw rule`\n\u251C\u2500\u2500 triage/ items waiting to be sorted, one file each \u2014 not cards. Only\n\u2502 \u2502 Cloud's sort or Refine idea on the web's Triage page turns one\n\u2502 \u2502 into a card; `akb triage check <source-id>` finds an existing one\n\u2502 \u251C\u2500\u2500 archived/ items a card was made of\n\u2502 \u251C\u2500\u2500 dismissed/ items ignored, with the reason \u2014 `akb triage restore` puts one back\n\u2502 \u2514\u2500\u2500 files/ dropped-in files\n\u2514\u2500\u2500 modules.md one line per module \u2014 `akb guide module-map` writes it\n```\n\n## Task ID\n\nEvery task's id is the number at the front of its filename (`04-plan-cap-enforcement.md` \u2192\nid 4): its Cloud task's number (`WC-4`). Only Cloud assigns one; `akb raw create` takes it.\n\n## Never hand-write a card's frontmatter\n\n`akb raw create`, `update`, and `update-questions` manage all of a card's frontmatter,\nincluding its `previews`. Edit only the card's **body** by hand. `akb raw help`\nlists all operations; `akb raw help <move>` explains one operation.\n\n## Inside a board run\n\nA board run carries `KANBAN_RUN` in its environment. Never unset or bypass it (for example\n`env -u KANBAN_RUN`): when a command only prints a flow, follow the printed flow.\n\n## Group task\n\nA group lives in `todo/<id>-<slug>/`: `root.md` tracks the whole job and each subtask is its\nown card beside it; `akb guide add-task` says how to build one. The root's `## Todo` lists the\nsubtasks, one line each ending in `#<subid>`: archiving a subtask ticks its line, rejecting\none strikes it through, and resolving the last line archives the root in the same run, with\nany open question or unticked todo of its own. A board a Runner keeps leaves that close to\nCloud, which waits for the root to be queued with no step on it. A root listing no subtasks is\nonly closed by hand.\n\n## Who owns a memory file\n\n**A memory file belongs to whoever reads and writes it.**\n\n- **`memory/readme.md`**: the board's record of shipped user-facing work.\n- **`memory/project.md`**: what the project is today, from its users' side, and the\n direction every judgement serves. Only `akb describe-project` writes it.\n- **`memory/agents/planner/`**: `decisions.md` holds user-facing answers that guide future\n planning and `redesign.md` design mistakes to avoid, both written by the memory review (`akb\n guide review-memory`); `rejected.md` holds what the user turned down and why, written only\n by the rejection and dismissal review (`akb guide review-rejections`). Other flows only read\n them, `akb prune-memory` aside.\n- **`memory/<name>/`**: a global memory, kept by every agent listing it under `akb.memory`\n by the rules each run is given. Only the user changes its `MEMORY.md`, from the board UI.\n- **`memory/agents/<agent>/`**: an agent keeps only the files and split paths its own AGENT.md\n declares. An agent whose instructions
|
|
23026
|
+
board_default = "# How this board works\n\nThese rules apply to every card workflow. Read them once; each workflow's guide covers\nthe remaining details.\n\n## Layout\n\n```\ndocs/kanban/\n\u251C\u2500\u2500 todo/ open tasks\n\u2502 \u251C\u2500\u2500 README.md the index \u2014 read it first\n\u2502 \u2514\u2500\u2500 <id>-<slug>.md\n\u2502 one card per file; a group keeps its cards in one folder\n\u251C\u2500\u2500 memory/ all memory \u2014 see \"Who owns a memory file\"\n\u2502 \u251C\u2500\u2500 readme.md what shipped \u2014 the board's own record\n\u2502 \u251C\u2500\u2500 project.md what the project is today \u2014 written only by `akb describe-project`\n\u2502 \u251C\u2500\u2500 <name>/ a global memory: `MEMORY.md` (its rules, unless built in), `README.md`\n\u2502 \u2502 (its index) and its entries\n\u2502 \u2514\u2500\u2500 agents/ one folder per agent that keeps memory, named after it \u2014\n\u2502 `planner/` holds `decisions.md`, `rejected.md`, `redesign.md`\n\u251C\u2500\u2500 rules/ `<agent>.md` \u2014 the user's rule for one agent, appended to every run it\n\u2502 does; written from the board UI or `akb raw rule`\n\u251C\u2500\u2500 triage/ items waiting to be sorted, one file each \u2014 not cards. Only\n\u2502 \u2502 Cloud's sort or Refine idea on the web's Triage page turns one\n\u2502 \u2502 into a card; `akb triage check <source-id>` finds an existing one\n\u2502 \u251C\u2500\u2500 archived/ items a card was made of\n\u2502 \u251C\u2500\u2500 dismissed/ items ignored, with the reason \u2014 `akb triage restore` puts one back\n\u2502 \u2514\u2500\u2500 files/ dropped-in files\n\u2514\u2500\u2500 modules.md one line per module \u2014 `akb guide module-map` writes it\n```\n\n## Task ID\n\nEvery task's id is the number at the front of its filename (`04-plan-cap-enforcement.md` \u2192\nid 4): its Cloud task's number (`WC-4`). Only Cloud assigns one; `akb raw create` takes it.\n\n## Never hand-write a card's frontmatter\n\n`akb raw create`, `update`, and `update-questions` manage all of a card's frontmatter,\nincluding its `previews`. Edit only the card's **body** by hand. `akb raw help`\nlists all operations; `akb raw help <move>` explains one operation.\n\n## Inside a board run\n\nA board run carries `KANBAN_RUN` in its environment. Never unset or bypass it (for example\n`env -u KANBAN_RUN`): when a command only prints a flow, follow the printed flow.\n\n## Group task\n\nA group lives in `todo/<id>-<slug>/`: `root.md` tracks the whole job and each subtask is its\nown card beside it; `akb guide add-task` says how to build one. The root's `## Todo` lists the\nsubtasks, one line each ending in `#<subid>`: archiving a subtask ticks its line, rejecting\none strikes it through, and resolving the last line archives the root in the same run, with\nany open question or unticked todo of its own. A board a Runner keeps leaves that close to\nCloud, which waits for the root to be queued with no step on it. A root listing no subtasks is\nonly closed by hand.\n\n## Who owns a memory file\n\n**A memory file belongs to whoever reads and writes it.**\n\n- **`memory/readme.md`**: the board's record of shipped user-facing work.\n- **`memory/project.md`**: what the project is today, from its users' side, and the\n direction every judgement serves. Only `akb describe-project` writes it.\n- **`memory/agents/planner/`**: `decisions.md` holds user-facing answers that guide future\n planning and `redesign.md` design mistakes to avoid, both written by the memory review (`akb\n guide review-memory`); `rejected.md` holds what the user turned down and why, written only\n by the rejection and dismissal review (`akb guide review-rejections`). Other flows only read\n them, `akb prune-memory` aside.\n- **`memory/<name>/`**: a global memory, kept by every agent listing it under `akb.memory`\n by the rules each run is given. Only the user changes its `MEMORY.md`, from the board UI.\n- **`memory/agents/<agent>/`**: an agent keeps only the files and split paths its own AGENT.md\n declares, plus the `redesign.md` the memory review writes there. An agent whose instructions\n name none keeps none.\n\nFile a planning note about one module in that module's folder,\n`memory/agents/planner/<module>/`, under the same file name, creating it if missing. A note\nspanning modules, or from a card with none, stays in `memory/agents/planner/`.\n\n### What earns a note\n\nOnly what changes a future planning choice. Writing nothing is a complete outcome.\n\n- **Honor an opt-out**: told not to record, write no memory and finish the requested action.\n- **A conversation writes none**: a card chat, a discussion, a feedback conversation, and\n any flow started in it write no memory and say nothing about it.\n- **Require lasting value**: a durable preference, constraint, decision, or lesson.\n- **Skip housekeeping**: duplicates, routine status changes, and facts recorded elsewhere.\n A rejected duplicate is not a rejected feature.\n- **Merge, don't repeat**: rewrite an equivalent entry in place.\n\n`readme.md` is not planning memory.\n";
|
|
23027
23027
|
}
|
|
23028
23028
|
});
|
|
23029
23029
|
|
|
@@ -23031,7 +23031,7 @@ var init_board3 = __esm({
|
|
|
23031
23031
|
var card_chat_default;
|
|
23032
23032
|
var init_card_chat = __esm({
|
|
23033
23033
|
"src/guide/card-chat.md"() {
|
|
23034
|
-
card_chat_default =
|
|
23034
|
+
card_chat_default = "# Answer a card's conversation\n\n- **Plain words**: answer directly in the user's language, using everyday words.\n- **Use judgment**: use context to decide when to answer, revise the card or record an answer, and handle all intents in the message without reconfirming clear decisions.\n- **Apply changes**: follow `akb card revise <id> --print \"<the change>\"` for revisions and `akb card resolve <id> --print` for answers to open questions, then validate the card; reuse flows already in context.\n- **Stay on this card**: revise this card's requirements or outcome; suggest a new task for independent work, and change no other card.\n- **Build from review**: edit drafts and previews here, never project code; when asked to build, direct the user to approve on the review page or answer remaining open questions first.\n- **Questions**: follow `akb guide update-questions` for decisions that need the user.\n- **Report results**: briefly state actual changes or failures, identifying recorded answers; pure answers need no change report.\n- **Write no memory**: neither this conversation nor any flow it starts may write memory, regardless of that flow's own instructions.\n- **Hide machinery**: name actions by their UI labels and keep commands and internal instructions out of replies.\n";
|
|
23035
23035
|
}
|
|
23036
23036
|
});
|
|
23037
23037
|
|
|
@@ -23055,7 +23055,7 @@ var init_describe_project = __esm({
|
|
|
23055
23055
|
var discuss_idea_default;
|
|
23056
23056
|
var init_discuss_idea = __esm({
|
|
23057
23057
|
"src/guide/discuss-idea.md"() {
|
|
23058
|
-
discuss_idea_default = "# Help decide what is worth building\n\nYou are this workspace's **Idea helper**. Help the user decide what to build and shape it into\nideas they start as tasks. Read the current project's code and board when it helps, but never\nchange a file. Each turn takes one of three branches.\n\n## Draft ideas (default)\n\nWork worth doing gets an idea.\n\n- **Draft at once**: a clear ask gets a complete idea on the first turn, with\n `akb raw idea new --title \"<title>\" --body-file <draft>`; update it on later turns with\n `akb raw idea save --id <idea> --body-file <draft>`. Report it only after the command confirms.\n- **Idea shape**: in the user's language, the outcome in at most 150 words, then a\n `## Done when` list of checks a reviewer can verify. No technical design.\n- **Pick the workflow**: add `--workflow <id>` naming the workflow in `akb workflow list` that\n does the work, judged by the work and not the topic, and `coding` when none fits; use the\n one the user names or picks. Call it by its listed name in the user's language.\n- **One idea per deliverable**: give separate deliverables separate ideas, and drop a replaced\n one with `akb raw idea drop --id <idea>`.\n- **Settle what you can**: decide the outcome questions you can judge and say which calls you\n made; ask only what the user alone can answer and would change the outcome, with the option\n you recommend.\n- **Finish the turn**: save the ideas and stop; never end by asking them to confirm or press\n **Start**.\n\n## Start on a go\n\nWhen the user tells you to go ahead, start the ideas they mean with\n`akb raw idea start --id <idea>`, drafting them first when needed, and say which tasks started.\n\n## Just answer\n\nA question, an idea not yet clear enough to draft, or a doubt about whether it is worth doing\ngets an answer, with no idea.\n\n- **Answer first**: say whether it is worth doing and why; disagreeing, advising a pause, or\n asking for evidence is a complete answer. Read a reliable source before stating an external\n fact.\n\n## Always\n\n- **Hide machinery**: never mention plans, files, paths, commands, or the tools and connectors\n you run with, and refer to actions by their button labels.\n";
|
|
23058
|
+
discuss_idea_default = "# Help decide what is worth building\n\nYou are this workspace's **Idea helper**. Help the user decide what to build and shape it into\nideas they start as tasks. Read the current project's code and board when it helps, but never\nchange a file. Each turn takes one of three branches.\n\n## Draft ideas (default)\n\nWork worth doing gets an idea.\n\n- **Draft at once**: a clear ask gets a complete idea on the first turn, with\n `akb raw idea new --title \"<title>\" --body-file <draft>`; update it on later turns with\n `akb raw idea save --id <idea> --body-file <draft>`. Report it only after the command confirms.\n- **Idea shape**: in the user's language, the outcome in at most 150 words, then a\n `## Done when` list of checks a reviewer can verify. No technical design.\n- **Pick the workflow**: add `--workflow <id>` naming the workflow in `akb workflow list` that\n does the work, judged by the work and not the topic, and `coding` when none fits; use the\n one the user names or picks. Call it by its listed name in the user's language.\n- **One idea per deliverable**: give separate deliverables separate ideas, and drop a replaced\n one with `akb raw idea drop --id <idea>`.\n- **Settle what you can**: decide the outcome questions you can judge and say which calls you\n made; ask only what the user alone can answer and would change the outcome, with the option\n you recommend.\n- **Finish the turn**: save the ideas and stop; never end by asking them to confirm or press\n **Start**.\n\n## Start on a go\n\nWhen the user tells you to go ahead, start the ideas they mean with\n`akb raw idea start --id <idea>`, drafting them first when needed, and say which tasks started.\n\n## Just answer\n\nA question, an idea not yet clear enough to draft, or a doubt about whether it is worth doing\ngets an answer, with no idea.\n\n- **Answer first**: say whether it is worth doing and why; disagreeing, advising a pause, or\n asking for evidence is a complete answer. Read a reliable source before stating an external\n fact.\n\n## Always\n\n- **Plain words**: answer directly in the user's language, using everyday words.\n\n- **Hide machinery**: never mention plans, files, paths, commands, or the tools and connectors\n you run with, and refer to actions by their button labels.\n";
|
|
23059
23059
|
}
|
|
23060
23060
|
});
|
|
23061
23061
|
|
|
@@ -23071,7 +23071,7 @@ var init_evaluate_task = __esm({
|
|
|
23071
23071
|
var follow_up_default;
|
|
23072
23072
|
var init_follow_up = __esm({
|
|
23073
23073
|
"src/guide/follow-up.md"() {
|
|
23074
|
-
follow_up_default = '# Handle follow-up work\n\nUse when planning or implementation discovers additional work.\n\n- **Current task**: finish required work on this card; queue independent follow-ups in triage, then resume the original task.\n- **Existing card**: when only another open card needs changing, run `akb card revise <id> "<the change and why>"`.\n- **Queue it**: use the command below; skip an item the command reports as already there.\n- **Workflow**: use the source card\'s `workflow:`, or the board default shown by `akb workflow` when it has none.\n\n```text\nakb triage add --title "<one line>" --slug <short-english-slug> --source "#<id>" --workflow <workflow> --text "<body>"\n```\n\n## Write the item\n\n- **Reader**: someone who has read neither the original card nor the code can decide in ten seconds whether the work is worth doing.\n- **Order**: first explain what happened and what the user runs into, then say what the work would do.\n- **Plain words**: keep file, function and field names, card ids, agent names and evidence trails out of the title and body.\n';
|
|
23074
|
+
follow_up_default = '# Handle follow-up work\n\nUse when planning or implementation discovers additional work.\n\n- **Current task**: finish required work on this card; queue independent follow-ups in triage, then resume the original task.\n- **Drop what was turned down**: queue nothing that\n `docs/kanban/memory/agents/planner/rejected.md` or\n `docs/kanban/memory/agents/planner/*/rejected.md` turns down.\n- **Existing card**: when only another open card needs changing, run `akb card revise <id> "<the change and why>"`.\n- **Queue it**: use the command below; skip an item the command reports as already there.\n- **Workflow**: use the source card\'s `workflow:`, or the board default shown by `akb workflow` when it has none.\n\n```text\nakb triage add --title "<one line>" --slug <short-english-slug> --source "#<id>" --workflow <workflow> --text "<body>"\n```\n\n## Write the item\n\n- **Reader**: someone who has read neither the original card nor the code can decide in ten seconds whether the work is worth doing.\n- **Order**: first explain what happened and what the user runs into, then say what the work would do.\n- **Plain words**: keep file, function and field names, card ids, agent names and evidence trails out of the title and body.\n';
|
|
23075
23075
|
}
|
|
23076
23076
|
});
|
|
23077
23077
|
|
|
@@ -23079,7 +23079,7 @@ var init_follow_up = __esm({
|
|
|
23079
23079
|
var implement_default;
|
|
23080
23080
|
var init_implement = __esm({
|
|
23081
23081
|
"src/guide/implement.md"() {
|
|
23082
|
-
implement_default = "# Implement a settled card\n\nBuild the approved card. Preserve settled decisions and unrelated questions.\n\n- **Unchecked card**: a card with `triage:` set and an empty `## Scope` skipped planning; do\n what \"Unchecked card\" in `akb guide refine` says before building.\n- **User-action blockers**: follow `akb guide update-questions` and append a\n question describing the obstacle and action needed. Stop only dependent work; resume it\n after the user resolves the question. Settle routine technical choices yourself.\n- Do not replace or contradict what the card says.\n- **Approved mockups**: build each screen a card's mockup shows to match it, then compare\n your result with the mockup at desktop and phone widths and fix any difference.\n- **Approved API previews**: build each surface a card's API preview shows to match it,\n and write its documentation from it.\n- **Approved schema preview**: write the migration so the resulting schema matches the\n card's approved schema preview.\n- **Building is not shipping**: unless the card's outcome is itself a deploy, release, or\n publish, finish once the change lands and the checks pass; do not push, deploy, release,\n or publish to complete it.\n- **
|
|
23082
|
+
implement_default = "# Implement a settled card\n\nBuild the approved card. Preserve settled decisions and unrelated questions.\n\n- **Unchecked card**: a card with `triage:` set and an empty `## Scope` skipped planning; do\n what \"Unchecked card\" in `akb guide refine` says before building.\n- **User-action blockers**: follow `akb guide update-questions` and append a\n question describing the obstacle and action needed. Stop only dependent work; resume it\n after the user resolves the question. Settle routine technical choices yourself.\n- Do not replace or contradict what the card says.\n- **Approved mockups**: build each screen a card's mockup shows to match it, then compare\n your result with the mockup at desktop and phone widths and fix any difference.\n- **Approved API previews**: build each surface a card's API preview shows to match it,\n and write its documentation from it.\n- **Approved schema preview**: write the migration so the resulting schema matches the\n card's approved schema preview.\n- **Building is not shipping**: unless the card's outcome is itself a deploy, release, or\n publish, finish once the change lands and the checks pass; do not push, deploy, release,\n or publish to complete it.\n- **What needs it live**: leave any verification or step that needs the change live to the\n user. Name it in your final message; queue no follow-up and ask no question about it.\n- **Defer what can wait**: queue as a follow-up any other work this card does not require;\n never hold the card with a question about it.\n- **Follow-ups**: follow `akb guide follow-up` for additional work.\n- **Decisions made while building**: record an answered material decision the user could\n reasonably reverse under `## Worth noting after implementation`.\n- A printed, interactive implementation may stay uncommitted in the target checkout only\n when the card already supplies a concrete outcome, boundaries, and build steps.\n Otherwise use the tracked implementation path. Background runs always keep their delivery\n path.\n- **Checks**: nothing reviews the build after you; run focused checks for the affected path\n plus every repository-required check.\n\n## A build that writes its own card\n\n**Start now** sends a requirement with no card behind it \u2014 a typed sentence, the plan a\ndiscussion settled, or a triage item. Write the card first, in the same run, then build it. The board points\nthe run and its delivery at the card as the create lands, so from there it is an ordinary\nbuild.\n\n- **Read the plan first**: given a plan's path or a triage item's file, that file is the\n requirement \u2014 read it, and everything below reads \"the plan\" for \"the sentence\".\n- **Create it first**: `akb raw create --title \"..\"`. The title is one short line read off\n the sentence, or the plan's own title, in its own language \u2014 add\n `--slug <short-english-slug>` when that is not English, because filenames are ASCII. No `--modules`, no `--question` \u2014 nothing has evaluated this idea.\n- **The requirement is the summary**: replace the scaffold's opening paragraph with the\n sentence, or the plan's whole text, verbatim, in a fenced code block. Open the fence with\n more backticks than the longest run inside it, or the card fails validation on an unclosed\n fence.\n- **From a plan, name it**: pass `--source <plan path>` to the create.\n- **From a triage item, file it**: pass `--triage <source-id>` to the create, and run\n `akb triage archive <source-id> --card <id>` straight after, before any build work.\n- **Leave the rest of the scaffold**: `## Worth noting`, `## Scope`, `## Todo` and\n `## Decided by the agent` stay exactly as `raw create` wrote them.\n- **Then build that card**: the code block is the whole requirement \u2014 build exactly it and\n widen it no further. `akb card implement <id> --print` is the flow from here.\n";
|
|
23083
23083
|
}
|
|
23084
23084
|
});
|
|
23085
23085
|
|
|
@@ -23095,7 +23095,7 @@ var init_module_map = __esm({
|
|
|
23095
23095
|
var prune_memory_default;
|
|
23096
23096
|
var init_prune_memory = __esm({
|
|
23097
23097
|
"src/guide/prune-memory.md"() {
|
|
23098
|
-
prune_memory_default = "# Prune the memory\n\nPrune the board's own record in `docs/kanban/memory/` and every agent's memory beside it in\n`docs/kanban/memory/agents/<agent>/` \u2014 the planner's files and module folders among them (see\n\"Who owns a memory file\" in `akb guide board`). `project.md` is rewritten on its own schedule:\nleave it alone.\n\nOne principle for all files: they exist to stop us re-proposing work, re-making a\ndesign mistake, or re-asking a settled question. Rewrite each as **topics** (h2 title) with\nplain-language takeaways under each section. Keep only what helps\nfuture planning; drop code detail, dates, task ids, step-by-step stories.\n\nDrop every entry that fails \"What earns a note\" in `akb guide board` \u2014 the bar that governs a\nwrite governs what stays. Merge lines that say the same thing. Rewrite, don't just cut.\n\nOn top of that, per file:\n\n- `agents/planner/rejected.md` \u2014 one line per thing the user does not want, and why. Keep\n every source id in parentheses: they are how a restored item withdraws its line. \"Already\n done\" is a shipped fact, not a rejection \u2014 it belongs in the published doc (with a\n `readme.md` line pointing at it), not here; drop it from `rejected.md`.\n- `agents/planner/redesign.md` \u2014 one line per entry: the mistake, then the design to use.\n Drop an entry once that design is the obvious default.\n- `readme.md` \u2014 the board's own record, one line per shipped user-facing behavior. Where a\n published doc covers it, the line is just a link to that doc's path. **Replace a prose\n entry with a link only after you have confirmed the doc covers that behavior** \u2014 search the\n docs first; no doc yet means the prose line stays: `readme.md` is the only record until we\n document it. Anything else \u2014 watermarks, a last focus, open gaps, internal detail \u2014\n doesn't belong here; drop it.\n- `agents/planner/decisions.md` \u2014 one line per live decision, in plain user-facing words.\n Drop anything that fails its bar in `akb guide board` (\"Who owns a memory file\"): a call\n about code detail, or one the published docs now cover. Drop a decision once the question\n no longer arises or `redesign.md` states it as a rule.\n- `agents/<agent>/` \u2014 the files that agent's own AGENT.md defines, each pruned to what it says\n the file holds. Drop an entry once that
|
|
23098
|
+
prune_memory_default = "# Prune the memory\n\nPrune the board's own record in `docs/kanban/memory/` and every agent's memory beside it in\n`docs/kanban/memory/agents/<agent>/` \u2014 the planner's files and module folders among them (see\n\"Who owns a memory file\" in `akb guide board`). `project.md` is rewritten on its own schedule:\nleave it alone.\n\nOne principle for all files: they exist to stop us re-proposing work, re-making a\ndesign mistake, or re-asking a settled question. Rewrite each as **topics** (h2 title) with\nplain-language takeaways under each section. Keep only what helps\nfuture planning; drop code detail, dates, task ids, step-by-step stories.\n\nDrop every entry that fails \"What earns a note\" in `akb guide board` \u2014 the bar that governs a\nwrite governs what stays. Merge lines that say the same thing. Rewrite, don't just cut.\n\nOn top of that, per file:\n\n- `agents/planner/rejected.md` \u2014 one line per thing the user does not want, and why. Keep\n every source id in parentheses: they are how a restored item withdraws its line. \"Already\n done\" is a shipped fact, not a rejection \u2014 it belongs in the published doc (with a\n `readme.md` line pointing at it), not here; drop it from `rejected.md`.\n- `agents/planner/redesign.md` \u2014 one line per entry: the mistake, then the design to use.\n Drop an entry once that design is the obvious default.\n- `readme.md` \u2014 the board's own record, one line per shipped user-facing behavior. Where a\n published doc covers it, the line is just a link to that doc's path. **Replace a prose\n entry with a link only after you have confirmed the doc covers that behavior** \u2014 search the\n docs first; no doc yet means the prose line stays: `readme.md` is the only record until we\n document it. Anything else \u2014 watermarks, a last focus, open gaps, internal detail \u2014\n doesn't belong here; drop it.\n- `agents/planner/decisions.md` \u2014 one line per live decision, in plain user-facing words.\n Drop anything that fails its bar in `akb guide board` (\"Who owns a memory file\"): a call\n about code detail, or one the published docs now cover. Drop a decision once the question\n no longer arises or `redesign.md` states it as a rule.\n- `agents/<agent>/` \u2014 the files that agent's own AGENT.md defines, each pruned to what it says\n the file holds, and its `redesign.md`, pruned as the planner's is. Drop an entry once that\n agent's instructions or the design docs say it, and drop any other file its instructions no\n longer name.\n\nPrune a preview agent's files together, and drop the whole folder when its agent is gone from `akb\nspec`. Drop anything a file says about how the product looks \u2014 colours, dimensions,\ncomponent detail belong in the app's `design.md`, not here \u2014 and fold a product fact worth\nkeeping into the lesson or the decision it supports.\n";
|
|
23099
23099
|
}
|
|
23100
23100
|
});
|
|
23101
23101
|
|
|
@@ -23103,7 +23103,7 @@ var init_prune_memory = __esm({
|
|
|
23103
23103
|
var review_memory_default;
|
|
23104
23104
|
var init_review_memory = __esm({
|
|
23105
23105
|
"src/guide/review-memory.md"() {
|
|
23106
|
-
review_memory_default = "# Review what the conversations settled\n\nRead each conversation given to you right through, then write what it settled into memory.\n\nChats and planning flows write no memory themselves. One turn cannot see where an exchange\nis going, so a \"what if\" thrown out and taken back three turns later used to land as a\ndecision. You read the whole exchange, so you can tell a decision from a passing thought \u2014\nand that judgement is the whole job.\n\n- **Read what you are given**: each card comes in its own `<conversation>` block: its summary,\n its `Worth noting` and `Overruled by the user` lines, then its chat and the comments the user\n left reviewing it, when it had any, the user's words as written and the agent's replies,\n oldest first. The card is archived, so it is complete and reviewed this once; open no card or\n transcript file.\n- **Keep them apart**: judge each block by itself; what one conversation settled never\n becomes a note for another's card or agents.\n- **Hold to the same bar**: \"What earns a note\" in `akb guide board` governs what you write,\n exactly as it governs a flow that writes one. A conversation that settled nothing earns no\n note, and most do not \u2014 writing nothing is a complete result.\n- **Only what the user settled**: a durable preference, constraint, decision or correction\n they stated. Your own proposal is not their decision, and neither is a question, a \"what\n if\", or a direction the conversation then moved off.\n- **Take the last word**: where they said one thing and then another, the later one stands.\n Where a note already in the file says what they have since overturned, rewrite that note in\n place \u2014 never leave both and never add a second.\n- **Honour \"don't record this\"**: told in the conversation not to record something, write no\n note for it. If one is already there from an earlier review, delete it now.\n- **Where it goes**: a durable choice goes in the planner's `decisions.md` as one\n `**<key>**: <call>` line under the topic that fits, without its rationale; a design lesson\n goes in its `redesign.md` under the relevant topic as\n `- \u274C **<mistake>** \u2192 \u2705 <what the design should be instead, one line>.`, written as guidance\n for future tasks, not a history of the fix. Both go in the folder of the module each\n conversation is listed with (`akb guide board`). Each conversation also lists the agents\n whose sections its card holds and the memory files each keeps: where what was settled lands\n on one agent's own work, it goes in that agent's memory instead. Read that agent's AGENT.md\n (`akb raw agent-file <agent> AGENT.md`) only then, and keep its memory the way it says.\n Distill settled feedback into reusable preferences (dos) and corrections (don'ts), retaining\n their scope; never copy raw reviews. An agent whose instructions name no memory gets no new file.\n- **What the card settled**: the summary says what the card was about and earns no note. A\n `Worth noting` line is a decision the user approved, by answering it or letting it stand, so\n it can be a choice but never a correction, and it earns a planner note only where the user's\n own words in the conversation back it; a line under\n `Overruled by the user` is a call the user reversed, so it goes in `redesign.md`: that of\n the agent whose section it came from, or the planner's when none did.\n- **Change nothing else**: no card, no open question, no code. The memory\n files are the whole of what this run writes.\n- **Say what you wrote**: finish by reporting each conversation you read, and for each the\n notes you added, rewrote, deleted, or that you wrote none.\n";
|
|
23106
|
+
review_memory_default = "# Review what the conversations settled\n\nRead each conversation given to you right through, then write what it settled into memory.\n\nChats and planning flows write no memory themselves. One turn cannot see where an exchange\nis going, so a \"what if\" thrown out and taken back three turns later used to land as a\ndecision. You read the whole exchange, so you can tell a decision from a passing thought \u2014\nand that judgement is the whole job.\n\n- **Read what you are given**: each card comes in its own `<conversation>` block: its summary,\n its `Worth noting` and `Overruled by the user` lines, then its chat and the comments the user\n left reviewing it, when it had any, the user's words as written and the agent's replies,\n oldest first. The card is archived, so it is complete and reviewed this once; open no card or\n transcript file.\n- **Keep them apart**: judge each block by itself; what one conversation settled never\n becomes a note for another's card or agents.\n- **Hold to the same bar**: \"What earns a note\" in `akb guide board` governs what you write,\n exactly as it governs a flow that writes one. A conversation that settled nothing earns no\n note, and most do not \u2014 writing nothing is a complete result.\n- **Only what the user settled**: a durable preference, constraint, decision or correction\n they stated. Your own proposal is not their decision, and neither is a question, a \"what\n if\", or a direction the conversation then moved off.\n- **Take the last word**: where they said one thing and then another, the later one stands.\n Where a note already in the file says what they have since overturned, rewrite that note in\n place \u2014 never leave both and never add a second.\n- **Honour \"don't record this\"**: told in the conversation not to record something, write no\n note for it. If one is already there from an earlier review, delete it now.\n- **Where it goes**: a durable choice goes in the planner's `decisions.md` as one\n `**<key>**: <call>` line under the topic that fits, without its rationale; a design lesson\n goes in its `redesign.md` under the relevant topic as\n `- \u274C **<mistake>** \u2192 \u2705 <what the design should be instead, one line>.`, written as guidance\n for future tasks, not a history of the fix. Both go in the folder of the module each\n conversation is listed with (`akb guide board`). Each conversation also lists the agents\n whose sections its card holds and the memory files each keeps: where what was settled lands\n on one agent's own work, it goes in that agent's memory instead. Read that agent's AGENT.md\n (`akb raw agent-file <agent> AGENT.md`) only then, and keep its memory the way it says.\n Distill settled feedback into reusable preferences (dos) and corrections (don'ts), retaining\n their scope; never copy raw reviews. An agent whose instructions name no memory gets no new file.\n- **What the card settled**: the summary says what the card was about and earns no note. A\n `Worth noting` line is a decision the user approved, by answering it or letting it stand, so\n it can be a choice but never a correction, and it earns a planner note only where the user's\n own words in the conversation back it; a line under\n `Overruled by the user` is a call the user reversed, so it goes in `redesign.md`: that of\n the agent whose section it came from, created there even if its instructions name other\n files, or the planner's when none did or its instructions name no memory.\n- **Change nothing else**: no card, no open question, no code. The memory\n files are the whole of what this run writes.\n- **Say what you wrote**: finish by reporting each conversation you read, and for each the\n notes you added, rewrote, deleted, or that you wrote none.\n";
|
|
23107
23107
|
}
|
|
23108
23108
|
});
|
|
23109
23109
|
|
|
@@ -23127,7 +23127,7 @@ var init_refine = __esm({
|
|
|
23127
23127
|
var reflect_default;
|
|
23128
23128
|
var init_reflect = __esm({
|
|
23129
23129
|
"src/guide/reflect.md"() {
|
|
23130
|
-
reflect_default = '# Reflect on completed cards\n\n## Read\n\nRead each given `<card>` in full and check its own `shipped` content; keep cards separate.\nFind needs the work left behind or revealed, and verify them in the project. Proposing nothing is fine.\n\n## Filter\n\n- **Duplicates**: check `akb raw list` and `akb triage check <source-id>`; propose shared work only once.\n- **Exclude**: skip unsupported guesses, work covered by `<scheduled-agents>`, work rejected in `docs/kanban/memory/agents/planner/rejected.md` or its module folders, and calls the user reversed, in
|
|
23130
|
+
reflect_default = '# Reflect on completed cards\n\n## Read\n\nRead each given `<card>` in full and check its own `shipped` content; keep cards separate.\nFind needs the work left behind or revealed, and verify them in the project. Proposing nothing is fine.\n\n## Filter\n\n- **Duplicates**: check `akb raw list` and `akb triage check <source-id>`; propose shared work only once.\n- **Exclude**: skip unsupported guesses, work covered by `<scheduled-agents>`, work rejected in `docs/kanban/memory/agents/planner/rejected.md` or its module folders, and calls the user reversed, in any `redesign.md` under `docs/kanban/memory/agents/` or under a card\'s `Overruled by the user`.\n- **Existing cards**: when shipped work invalidates an open card\'s plan, run `akb card revise <id> "<the change and why>"` instead of proposing an item.\n\n## Write\n\n- **Reader**: someone who has read neither the original card nor the code can decide in ten seconds whether the work is worth doing.\n- **Order**: first explain what happened and what the user runs into, then say what the work would do.\n- **Plain words**: keep file, function and field names, card ids, agent names and evidence trails out of the title and body.\n\nWrite the body to a temporary Markdown file and end with the source card\'s archive path.\nWrite one triage item per proposal. Exploratory ideas are welcome; identify small chores as such.\nUse the source card\'s `workflow:`, or the board default shown by `akb workflow` when it has none.\n\n```text\nakb triage add --title "<one line>" --slug <short-english-slug> --source "#<id>" --workflow <workflow> --file <body.md>\n```\n\nBriefly report what you proposed and what you skipped, with reasons.\n';
|
|
23131
23131
|
}
|
|
23132
23132
|
});
|
|
23133
23133
|
|
|
@@ -23155,14 +23155,6 @@ var init_preview_agent = __esm({
|
|
|
23155
23155
|
}
|
|
23156
23156
|
});
|
|
23157
23157
|
|
|
23158
|
-
// src/guide/update.md
|
|
23159
|
-
var update_default;
|
|
23160
|
-
var init_update = __esm({
|
|
23161
|
-
"src/guide/update.md"() {
|
|
23162
|
-
update_default = "# Updating the board\n\nUpdating is two things, and nothing else: **a newer `akb`, then a repaired board.** There\nis no third step where the skill is re-installed to pick up a fixed flow \u2014 the flows ship\ninside the command, so a newer command is a newer set of flows everywhere at once.\n\n## 1. A newer command\n\n```\nnpm install -g wildcrane@latest\n```\n\n`akb update` can't do this one to itself \u2014 replacing the file that is running is how you\nget half a command \u2014 so it checks npm and names this line when it is behind.\n\nStill on the old `ai4kanban` package? Run `npm uninstall -g ai4kanban` first; both install `akb`.\n\n## 2. A repaired board\n\n```\nakb update\n```\n\nRun it from the project root. It does the whole mechanical part:\n\n- rewrites the installed `SKILL.md` (the note) in whichever of `.claude/skills/kanban/`\n (Claude Code) and `.agents/skills/kanban/` (Codex) is already there, wholesale, which also\n clears out what older versions left beside it: the `references/` folder of copied flows,\n a skill-folder `config.md`, and the command's own `kanban.mjs`. The note is the whole\n skill now \u2014 the command comes from npm, so the update is two deletions to commit. It never\n adds a folder that isn't there: the skill is an extra a project opts into, so a project\n without one is not broken, and `akb skill install` is how it is added,\n- adds what an older version never wrote: `config.md`, `modules.md`, the planner's memory folder,\n an empty `docs/kanban/memory/project.md`,\n- deletes `releases.md` and every card's `release` field, keeping\n `.release-summaries/` as a record,\n- renames `docs/kanban/memory/product.md` to `project.md`,\n- moves a goal the user wrote in `docs/kanban/memory/goal.md` to the top of the planner's\n `decisions.md` and deletes the file,\n- moves a memory set still sitting at the board root into `docs/kanban/memory/`,\n- moves the memory onto whoever writes it: `decisions.md`, `rejected.md` and `redesign.md`\n merge into `docs/kanban/memory/agents/planner/<module>/` (the board's own copy into\n `planner/`), each module's `readme.md` merges into `docs/kanban/memory/readme.md`, and a\n `## <module>` topic in a planner file moves into that module's folder \u2014 merged, never\n overwritten, and only once,\n- rescues a filled-in `config.md` left inside an old skill folder to\n `docs/kanban/config.md`,\n- prints which version you moved from and to, with a link to everything that changed\n between those two releases.\n\n**The one rule: `docs/kanban/` is yours; the two installed files are upstream's and get\noverwritten wholesale. Never merge the two.** It is safe to run twice, and it never edits\nyour cards, your config, or your memory.\n\n## Then read what it printed\n\nAnything the command can't decide comes back under **Needs your attention**. Each line is\nyours to finish:\n\n- **A new config setting.** Add that one line to `docs/kanban/config.md` and ask the user\n only for the new value. Leave the rest of the config alone.\n- **A blank `docs/kanban/modules.md`.** Write it per `akb guide module-map`, then run\n `akb update` again so every module gets a memory path.\n- **A per-module `goal.md`.** Fold what it says into that module's `decisions.md` in\n `docs/kanban/memory/agents/planner/<module>/`, then delete it.\n- **A `docs/kanban/config.from-skill.md`.** An old skill folder held a config that differs\n from the board's. Fold anything worth keeping into `docs/kanban/config.md`, then delete it.\n- **A missing agent folder.** Only one of the two is here, or neither. `akb skill install`\n writes them if you want that agent to see the board too \u2014 it is never added behind the\n user's back.\n\nLeave the project-wide notes and the cards alone \u2014 don't move notes into the module paths,\nand don't hand-add `modules:` lines to cards.\n\n## Plugin install (the note lives in the plugin cache)\n\nThe plugin cache is read-only, so the note comes from the marketplace instead:\n\n```\n/plugin marketplace update kanban\n/plugin install kanban@kanban\n```\n\nThen run `akb update` anyway \u2014 it repairs the board, which the plugin never touches.\n\n## Verify\n\n```\nakb raw version\n```\n\nTell the user to review `git diff` before committing. The board app updates separately \u2014\nit says when a newer one is out and installs it from that notice.\n";
|
|
23163
|
-
}
|
|
23164
|
-
});
|
|
23165
|
-
|
|
23166
23158
|
// src/guide/update-questions.md
|
|
23167
23159
|
var update_questions_default;
|
|
23168
23160
|
var init_update_questions = __esm({
|
|
@@ -23232,7 +23224,6 @@ var init_guide = __esm({
|
|
|
23232
23224
|
init_resolve2();
|
|
23233
23225
|
init_revise();
|
|
23234
23226
|
init_preview_agent();
|
|
23235
|
-
init_update();
|
|
23236
23227
|
init_update_questions();
|
|
23237
23228
|
init_write_agent();
|
|
23238
23229
|
init_writing();
|
|
@@ -23259,8 +23250,7 @@ var init_guide = __esm({
|
|
|
23259
23250
|
{ name: "reflect", when: "propose the work just-completed cards leave behind", text: reflect_default },
|
|
23260
23251
|
{ name: "preview-agent", when: "be a preview agent: write your one section of a card", text: preview_agent_default },
|
|
23261
23252
|
{ name: "write-agent", when: "create or change an agent, including one built from a skill \u2014 its AGENT.md, files, memory, and how to check it", text: write_agent_default },
|
|
23262
|
-
{ name: "module-map", when: "write or rebuild docs/kanban/modules.md", text: module_map_default }
|
|
23263
|
-
{ name: "update", when: "pull a newer version into a project that already has one", text: update_default }
|
|
23253
|
+
{ name: "module-map", when: "write or rebuild docs/kanban/modules.md", text: module_map_default }
|
|
23264
23254
|
];
|
|
23265
23255
|
guideNames = () => GUIDES.map((g) => g.name);
|
|
23266
23256
|
RENAMED = {
|
|
@@ -24008,7 +23998,7 @@ function buildFlow(req, program2) {
|
|
|
24008
23998
|
facts.push(
|
|
24009
23999
|
...field("memory", [
|
|
24010
24000
|
`${rel(agentMemoryDir(PLANNER))}/<module>/ \u2014 decisions.md, rejected.md, redesign.md: where a planning note goes, the planner's own files for one spanning modules`,
|
|
24011
|
-
`${rel(AGENT_MEMORY)}/<agent>/ \u2014 an agent's own files, which its AGENT.md names`
|
|
24001
|
+
`${rel(AGENT_MEMORY)}/<agent>/ \u2014 an agent's own files, which its AGENT.md names, and its redesign.md`
|
|
24012
24002
|
])
|
|
24013
24003
|
);
|
|
24014
24004
|
for (const chat of chats) facts.push("", ...conversationBlock(chat));
|
|
@@ -25802,12 +25792,12 @@ var SAID = {
|
|
|
25802
25792
|
en: "Could not reach WildCrane Cloud. Check your connection and try again."
|
|
25803
25793
|
},
|
|
25804
25794
|
credits_used_up: {
|
|
25805
|
-
zh: "\u672C\u6708\u79EF\u5206\u5DF2\u7528\u5B8C\uFF0C\u4E0B\u6708 1 \u65E5\uFF08UTC\uFF09\u91CD\u7F6E\uFF1B\u53EF\u5728\
|
|
25806
|
-
en: "This month\u2019s AI credits are used up. They reset on the 1st of next month (UTC); check your balance
|
|
25795
|
+
zh: "\u672C\u6708\u79EF\u5206\u5DF2\u7528\u5B8C\uFF0C\u4E0B\u6708 1 \u65E5\uFF08UTC\uFF09\u91CD\u7F6E\uFF1B\u53EF\u5728 WildCrane \u7F51\u9875\u8BBE\u7F6E\u4E2D\u67E5\u770B\u4F59\u989D\u3002",
|
|
25796
|
+
en: "This month\u2019s AI credits are used up. They reset on the 1st of next month (UTC); check your balance in WildCrane web settings."
|
|
25807
25797
|
},
|
|
25808
25798
|
trial_credits_used_up: {
|
|
25809
|
-
zh: "\u8BD5\u7528\u671F\u7684 AI \u79EF\u5206\u5DF2\u7528\u5B8C\u3002\u8BD5\u7528\u7ED3\u675F\u540E\u53EF\u5728\
|
|
25810
|
-
en: "Your trial\u2019s AI credits are used up. Get Pro from
|
|
25799
|
+
zh: "\u8BD5\u7528\u671F\u7684 AI \u79EF\u5206\u5DF2\u7528\u5B8C\u3002\u8BD5\u7528\u7ED3\u675F\u540E\u53EF\u5728 WildCrane \u7F51\u9875\u8BBE\u7F6E\u4E2D\u8D2D\u4E70 Pro\u3002",
|
|
25800
|
+
en: "Your trial\u2019s AI credits are used up. Get Pro from WildCrane web settings once the trial ends."
|
|
25811
25801
|
}
|
|
25812
25802
|
};
|
|
25813
25803
|
var REF_TYPES = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wildcrane",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.6",
|
|
4
4
|
"akbContract": 2,
|
|
5
5
|
"description": "WildCrane's `akb` command \u2014 scaffold the Markdown board under docs/kanban/, put an agent on a card, and carry the flows the agent works by.",
|
|
6
6
|
"keywords": [
|