@chinhae/atw-cli 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/channel/store/filter.d.ts +1 -1
- package/dist/commands/channel/store/filter.d.ts.map +1 -1
- package/dist/commands/channel/store/filter.js +1 -1
- package/dist/commands/channel/store/filter.js.map +1 -1
- package/dist/commands/channel/store/schema.d.ts +2 -11
- package/dist/commands/channel/store/schema.d.ts.map +1 -1
- package/dist/commands/channel/store/schema.js +1 -12
- package/dist/commands/channel/store/schema.js.map +1 -1
- package/dist/commands/channel/store/thread-state.d.ts +2 -2
- package/dist/commands/channel/store/thread-state.d.ts.map +1 -1
- package/dist/commands/channel/store/thread-state.js +1 -1
- package/dist/commands/channel/store/thread-state.js.map +1 -1
- package/dist/migrations/manifests/0.2.4.json +9 -0
- package/dist/templates/atw/workflow.md +17 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { matchesEventFilter } from "@chinhae/atw-core/channel";
|
|
2
2
|
//# sourceMappingURL=filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -7,21 +7,12 @@
|
|
|
7
7
|
* import from a stable local path while command files migrate to the
|
|
8
8
|
* core public API directly.
|
|
9
9
|
*/
|
|
10
|
-
export { GLOBAL_PROJECT_KEY,
|
|
11
|
-
export type { ChannelScope,
|
|
12
|
-
import type { ContextEntry } from "@chinhae/atw-core/channel";
|
|
10
|
+
export { GLOBAL_PROJECT_KEY, parseChannelScope, parseChannelType, parseThreadAction, normalizeThreadKey, } from "@chinhae/atw-core/channel";
|
|
11
|
+
export type { ChannelScope, ChannelRef, ContextEntry, ThreadAction, } from "@chinhae/atw-core/channel";
|
|
13
12
|
/**
|
|
14
13
|
* CSV parser kept colocated with the schema for CLI command files that
|
|
15
14
|
* trim comma-separated label / target lists. Pure helper — does not
|
|
16
15
|
* touch the channel store.
|
|
17
16
|
*/
|
|
18
17
|
export declare function parseCsv(value: string | undefined): string[] | undefined;
|
|
19
|
-
/**
|
|
20
|
-
* Legacy alias accepted by CLI flag parsers — old code calls this when
|
|
21
|
-
* processing `--linked-context-file` / `--linked-context-raw`. New code
|
|
22
|
-
* uses {@link buildContextEntries} directly.
|
|
23
|
-
*
|
|
24
|
-
* @deprecated Use buildContextEntries.
|
|
25
|
-
*/
|
|
26
|
-
export declare function parseLinkedContext(files: string[] | undefined, raw: string[] | undefined): ContextEntry[] | undefined;
|
|
27
18
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAMxE"}
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
* import from a stable local path while command files migrate to the
|
|
8
8
|
* core public API directly.
|
|
9
9
|
*/
|
|
10
|
-
export { GLOBAL_PROJECT_KEY,
|
|
11
|
-
import { buildContextEntries } from "@chinhae/atw-core/channel";
|
|
10
|
+
export { GLOBAL_PROJECT_KEY, parseChannelScope, parseChannelType, parseThreadAction, normalizeThreadKey, } from "@chinhae/atw-core/channel";
|
|
12
11
|
/**
|
|
13
12
|
* CSV parser kept colocated with the schema for CLI command files that
|
|
14
13
|
* trim comma-separated label / target lists. Pure helper — does not
|
|
@@ -21,14 +20,4 @@ export function parseCsv(value) {
|
|
|
21
20
|
.filter(Boolean);
|
|
22
21
|
return out && out.length > 0 ? out : undefined;
|
|
23
22
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Legacy alias accepted by CLI flag parsers — old code calls this when
|
|
26
|
-
* processing `--linked-context-file` / `--linked-context-raw`. New code
|
|
27
|
-
* uses {@link buildContextEntries} directly.
|
|
28
|
-
*
|
|
29
|
-
* @deprecated Use buildContextEntries.
|
|
30
|
-
*/
|
|
31
|
-
export function parseLinkedContext(files, raw) {
|
|
32
|
-
return buildContextEntries(files, raw);
|
|
33
|
-
}
|
|
34
23
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AASnC;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAyB;IAChD,MAAM,GAAG,GAAG,KAAK;QACf,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { reduceThreads
|
|
2
|
-
export type { ThreadState
|
|
1
|
+
export { reduceThreads } from "@chinhae/atw-core/channel";
|
|
2
|
+
export type { ThreadState } from "@chinhae/atw-core/channel";
|
|
3
3
|
import type { ThreadState } from "@chinhae/atw-core/channel";
|
|
4
4
|
export declare function formatThreadBoard(states: ThreadState[]): string[];
|
|
5
5
|
//# sourceMappingURL=thread-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"thread-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAcjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-state.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"thread-state.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM1D,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD,OAAO;QACL,uBAAuB;QACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QACvF,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.4",
|
|
3
|
+
"description": "Request Triage grades a request on what it asserts rather than what it estimates, and the routing table names the six skills the AI cannot invoke.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "Two changes to the workflow.md template, both measured before they landed. Request Triage gained a paragraph telling the AI to separate a request's checkable assertions from the requester's estimates of size, and to grade the path on the former — including the estimate a requester makes by naming a path outright. Three rounds of A/B on a 25-item fixture found the failure it fixes: told to \"just run map\", the model ran map on a two-file change, and its first stated reason was that the user had named it. The paragraph fixed that case and regressed none; it has a measured side effect, which is that borderline items drift one path up toward the ATW flow. Separately, Active Task Routing now names all six user-triggered skills — /atw-askme, /atw-askme-with-docs, /atw-map, /atw-spec, /atw-tickets, /atw-implement — instead of only /atw-implement. The other five read as callable, so the model would call one, get \"cannot be used with Skill tool\", and only then route to the user. Also in this release: the npm token fallback is gone from the publish workflow, leaving trusted publishing as the only authentication route, and release-preflight now reads the registry directly when deciding whether a version is already published, which fixes a false negative that could trigger a duplicate publish.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "No migration required. The only template file that changed is .atw/workflow.md, and nothing under src/templates/ was deleted or renamed: `git diff --name-status -M v0.2.3..main -- packages/cli/src/templates/` reports one M and zero D/R, and config.yaml gained no top-level key. Installed projects pick the change up through `atw update`.\n\nOne consequence worth stating: any project whose workflow.md still matches the 0.2.3 hash updates silently, but a project that edited workflow.md will hit the standard modified-file prompt on `atw update`. That is the designed path, not a regression — update.ts keeps workflow.md on the normal template path precisely because partial tag-block merging would be unsafe."
|
|
9
|
+
}
|
|
@@ -208,6 +208,18 @@ Three complexity paths. The AI proposes, the user decides whether a task gets cr
|
|
|
208
208
|
|
|
209
209
|
The threshold is deliberately not a file count. Changing two files can be a typo fix or an auth rewrite. **When unsure, go one path up** — the cost of going up is one more `prd.md`; the cost of going down is discovering mid-build that there is no record, no spec, and no review baseline.
|
|
210
210
|
|
|
211
|
+
**Before picking a path, separate what the request *asserts* from what it *estimates*.**
|
|
212
|
+
|
|
213
|
+
Assertions are checkable: an error message, a reproduction, a decision already
|
|
214
|
+
made, a line of code. Estimates are the requester's guesses about size — "should
|
|
215
|
+
be quick", "just a small flag", "this one's complex, run map". **A path the
|
|
216
|
+
requester names is an estimate too, not an instruction.**
|
|
217
|
+
|
|
218
|
+
Grade on the assertions. Then check the estimates the grade depends on: if an
|
|
219
|
+
estimate is checkable from the repo or from the request itself, check it now
|
|
220
|
+
rather than noting it as an assumption. When a check moves the path, say so and
|
|
221
|
+
say which way — then the call is the user's.
|
|
222
|
+
|
|
211
223
|
Map is worth running when the work is both **large** and **the route is unclear**. Large but well-understood goes straight to slicing. When unsure, run it: it scans breadth-first and stops itself if it finds no fog, at a cost of two turns.
|
|
212
224
|
|
|
213
225
|
### The Four Stops
|
|
@@ -354,6 +366,11 @@ When a user request matches one of these intents inside an active task, route fi
|
|
|
354
366
|
- Same bug fixed more than once → `/atw-diagnosing-bugs`
|
|
355
367
|
- Knowledge worth keeping outside a ticket → `/atw-update-spec`
|
|
356
368
|
|
|
369
|
+
Six of these are user-triggered and the AI cannot invoke them: `/atw-askme`,
|
|
370
|
+
`/atw-askme-with-docs`, `/atw-map`, `/atw-spec`, `/atw-tickets`, `/atw-implement`.
|
|
371
|
+
Name the one that fits and let the user run it — calling the Skill tool on one
|
|
372
|
+
returns an error and nothing else.
|
|
373
|
+
|
|
357
374
|
### Guardrails
|
|
358
375
|
|
|
359
376
|
- Consent to create a task is not consent to implement. Implementation starts at `task.py start`, after the user confirms `prd.md`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chinhae/atw-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A Team Workflow — an AI coding workflow framework that encodes your team's conventions into the process",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"inquirer": "^9.3.7",
|
|
34
34
|
"undici": "^6.21.0",
|
|
35
35
|
"zod": "^4.4.2",
|
|
36
|
-
"@chinhae/atw-core": "0.2.
|
|
36
|
+
"@chinhae/atw-core": "0.2.4"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@eslint/js": "^9.18.0",
|