@mindfoldhq/trellis 0.6.0-beta.12 → 0.6.0-beta.13

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.
Files changed (54) hide show
  1. package/dist/commands/channel/context.d.ts +16 -0
  2. package/dist/commands/channel/context.d.ts.map +1 -0
  3. package/dist/commands/channel/context.js +83 -0
  4. package/dist/commands/channel/context.js.map +1 -0
  5. package/dist/commands/channel/create.d.ts +10 -8
  6. package/dist/commands/channel/create.d.ts.map +1 -1
  7. package/dist/commands/channel/create.js +22 -97
  8. package/dist/commands/channel/create.js.map +1 -1
  9. package/dist/commands/channel/index.d.ts.map +1 -1
  10. package/dist/commands/channel/index.js +117 -12
  11. package/dist/commands/channel/index.js.map +1 -1
  12. package/dist/commands/channel/list.js +14 -16
  13. package/dist/commands/channel/list.js.map +1 -1
  14. package/dist/commands/channel/messages.js +8 -10
  15. package/dist/commands/channel/messages.js.map +1 -1
  16. package/dist/commands/channel/send.d.ts.map +1 -1
  17. package/dist/commands/channel/send.js +15 -28
  18. package/dist/commands/channel/send.js.map +1 -1
  19. package/dist/commands/channel/store/events.d.ts +28 -64
  20. package/dist/commands/channel/store/events.d.ts.map +1 -1
  21. package/dist/commands/channel/store/events.js +27 -48
  22. package/dist/commands/channel/store/events.js.map +1 -1
  23. package/dist/commands/channel/store/filter.d.ts +2 -32
  24. package/dist/commands/channel/store/filter.d.ts.map +1 -1
  25. package/dist/commands/channel/store/filter.js +1 -62
  26. package/dist/commands/channel/store/filter.js.map +1 -1
  27. package/dist/commands/channel/store/schema.d.ts +25 -34
  28. package/dist/commands/channel/store/schema.d.ts.map +1 -1
  29. package/dist/commands/channel/store/schema.js +25 -82
  30. package/dist/commands/channel/store/schema.js.map +1 -1
  31. package/dist/commands/channel/store/thread-state.d.ts +3 -17
  32. package/dist/commands/channel/store/thread-state.d.ts.map +1 -1
  33. package/dist/commands/channel/store/thread-state.js +1 -66
  34. package/dist/commands/channel/store/thread-state.js.map +1 -1
  35. package/dist/commands/channel/text-body.d.ts +13 -0
  36. package/dist/commands/channel/text-body.d.ts.map +1 -0
  37. package/dist/commands/channel/text-body.js +47 -0
  38. package/dist/commands/channel/text-body.js.map +1 -0
  39. package/dist/commands/channel/threads.d.ts +11 -0
  40. package/dist/commands/channel/threads.d.ts.map +1 -1
  41. package/dist/commands/channel/threads.js +56 -46
  42. package/dist/commands/channel/threads.js.map +1 -1
  43. package/dist/commands/channel/title.d.ts +12 -0
  44. package/dist/commands/channel/title.d.ts.map +1 -0
  45. package/dist/commands/channel/title.js +24 -0
  46. package/dist/commands/channel/title.js.map +1 -0
  47. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  48. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +1 -2
  49. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +5 -5
  50. package/dist/utils/task-json.d.ts +9 -42
  51. package/dist/utils/task-json.d.ts.map +1 -1
  52. package/dist/utils/task-json.js +8 -45
  53. package/dist/utils/task-json.js.map +1 -1
  54. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAGd,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkC,IAAI,GAAG,CAAC;IAC3E,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,WAAW;IACX,MAAM;IACN,OAAO;CACc,CAAC,CAAC;AA2BzB,MAAM,UAAU,kBAAkB,CAChC,EAAgB,EAChB,MAA0B;IAE1B,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAEpE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAEzD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;IAChD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;IAChD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAK,EAAuB,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,GAAI,EAAiC,CAAC,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,EAAE,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC"}
@@ -1,36 +1,27 @@
1
- export declare const GLOBAL_PROJECT_KEY = "_global";
2
- export type ChannelScope = "project" | "global";
3
- export type ChannelType = "chat" | "thread";
4
- export type ThreadAction = "opened" | "comment" | "status" | "labels" | "assignees" | "summary" | "processed";
5
- export declare const CHANNEL_TYPES: ReadonlySet<ChannelType>;
6
- export declare const THREAD_ACTIONS: ReadonlySet<ThreadAction>;
7
- export interface FileLinkedContext {
8
- type: "file";
9
- path: string;
10
- }
11
- export interface RawLinkedContext {
12
- type: "raw";
13
- text: string;
14
- }
15
- export type LinkedContextEntry = FileLinkedContext | RawLinkedContext;
16
- export interface ChannelRef {
17
- name: string;
18
- scope: ChannelScope;
19
- project: string;
20
- dir: string;
21
- }
22
- export interface ChannelMetadata {
23
- type: ChannelType;
24
- description?: string;
25
- linkedContext?: LinkedContextEntry[];
26
- labels?: string[];
27
- }
28
- export declare function parseChannelScope(v: string | undefined): ChannelScope | undefined;
29
- export declare function parseChannelType(v: string | undefined): ChannelType;
30
- export declare function parseThreadAction(v: string): ThreadAction;
31
- export declare function normalizeThreadKey(v: string): string;
32
- export declare function parseLinkedContext(files: string[] | undefined, raw: string[] | undefined): LinkedContextEntry[] | undefined;
1
+ /**
2
+ * Channel schema re-exports.
3
+ *
4
+ * Canonical source: `@mindfoldhq/trellis-core/channel`. This module is
5
+ * kept as a thin pass-through during the supervisor/wait migration so
6
+ * CLI runtime code (supervisor, spawn, kill, wait) can continue to
7
+ * import from a stable local path while command files migrate to the
8
+ * core public API directly.
9
+ */
10
+ export { GLOBAL_PROJECT_KEY, CHANNEL_TYPES, THREAD_ACTIONS, parseChannelScope, parseChannelType, parseThreadAction, normalizeThreadKey, asStringArray, asContextEntries, buildContextEntries, } from "@mindfoldhq/trellis-core/channel";
11
+ export type { ChannelScope, ChannelType, ChannelRef, ChannelMetadata, ContextEntry, FileContextEntry, RawContextEntry, ThreadAction, EventOrigin, } from "@mindfoldhq/trellis-core/channel";
12
+ import type { ContextEntry } from "@mindfoldhq/trellis-core/channel";
13
+ /**
14
+ * CSV parser kept colocated with the schema for CLI command files that
15
+ * trim comma-separated label / target lists. Pure helper — does not
16
+ * touch the channel store.
17
+ */
33
18
  export declare function parseCsv(value: string | undefined): string[] | undefined;
34
- export declare function asStringArray(value: unknown): string[] | undefined;
35
- export declare function asLinkedContextEntries(value: unknown): LinkedContextEntry[] | 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;
36
27
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5C,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,CAAC;AAEhB,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,WAAW,CAGjD,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,YAAY,CAQnD,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEtE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,YAAY,GAAG,SAAS,CAM1B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAMnE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAOzD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CASpD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAC3B,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,GACxB,kBAAkB,EAAE,GAAG,SAAS,CAgBlC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAMxE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAGlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,kBAAkB,EAAE,GAAG,SAAS,CAUlC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAMxE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAC3B,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,GACxB,YAAY,EAAE,GAAG,SAAS,CAE5B"}
@@ -1,66 +1,19 @@
1
- import path from "node:path";
2
- export const GLOBAL_PROJECT_KEY = "_global";
3
- export const CHANNEL_TYPES = new Set([
4
- "chat",
5
- "thread",
6
- ]);
7
- export const THREAD_ACTIONS = new Set([
8
- "opened",
9
- "comment",
10
- "status",
11
- "labels",
12
- "assignees",
13
- "summary",
14
- "processed",
15
- ]);
16
- export function parseChannelScope(v) {
17
- if (v === undefined)
18
- return undefined;
19
- if (v !== "project" && v !== "global") {
20
- throw new Error("Invalid --scope. Must be one of: project, global");
21
- }
22
- return v;
23
- }
24
- export function parseChannelType(v) {
25
- if (v === undefined)
26
- return "chat";
27
- if (!CHANNEL_TYPES.has(v)) {
28
- throw new Error("Invalid --type. Must be one of: chat, thread");
29
- }
30
- return v;
31
- }
32
- export function parseThreadAction(v) {
33
- if (!THREAD_ACTIONS.has(v)) {
34
- throw new Error(`Invalid thread action '${v}'. Must be one of: ${[...THREAD_ACTIONS].join(", ")}`);
35
- }
36
- return v;
37
- }
38
- export function normalizeThreadKey(v) {
39
- const trimmed = v.trim();
40
- if (!trimmed)
41
- throw new Error("Thread key must not be empty");
42
- if (!/^[A-Za-z0-9._-]+$/.test(trimmed)) {
43
- throw new Error("Thread key may only contain letters, numbers, '.', '_' and '-'");
44
- }
45
- return trimmed;
46
- }
47
- export function parseLinkedContext(files, raw) {
48
- const entries = [];
49
- for (const file of files ?? []) {
50
- const value = file.trim();
51
- if (!path.isAbsolute(value)) {
52
- throw new Error(`--linked-context-file must be absolute: ${file}`);
53
- }
54
- entries.push({ type: "file", path: value });
55
- }
56
- for (const text of raw ?? []) {
57
- if (!text.trim()) {
58
- throw new Error("--linked-context-raw must not be empty");
59
- }
60
- entries.push({ type: "raw", text });
61
- }
62
- return entries.length > 0 ? entries : undefined;
63
- }
1
+ /**
2
+ * Channel schema re-exports.
3
+ *
4
+ * Canonical source: `@mindfoldhq/trellis-core/channel`. This module is
5
+ * kept as a thin pass-through during the supervisor/wait migration so
6
+ * CLI runtime code (supervisor, spawn, kill, wait) can continue to
7
+ * import from a stable local path while command files migrate to the
8
+ * core public API directly.
9
+ */
10
+ export { GLOBAL_PROJECT_KEY, CHANNEL_TYPES, THREAD_ACTIONS, parseChannelScope, parseChannelType, parseThreadAction, normalizeThreadKey, asStringArray, asContextEntries, buildContextEntries, } from "@mindfoldhq/trellis-core/channel";
11
+ import { buildContextEntries } from "@mindfoldhq/trellis-core/channel";
12
+ /**
13
+ * CSV parser kept colocated with the schema for CLI command files that
14
+ * trim comma-separated label / target lists. Pure helper — does not
15
+ * touch the channel store.
16
+ */
64
17
  export function parseCsv(value) {
65
18
  const out = value
66
19
  ?.split(",")
@@ -68,24 +21,14 @@ export function parseCsv(value) {
68
21
  .filter(Boolean);
69
22
  return out && out.length > 0 ? out : undefined;
70
23
  }
71
- export function asStringArray(value) {
72
- if (!Array.isArray(value))
73
- return undefined;
74
- return value.filter((item) => typeof item === "string");
75
- }
76
- export function asLinkedContextEntries(value) {
77
- if (!Array.isArray(value))
78
- return undefined;
79
- const entries = value.filter((entry) => {
80
- if (!entry || typeof entry !== "object")
81
- return false;
82
- const candidate = entry;
83
- if (candidate.type === "file")
84
- return typeof candidate.path === "string";
85
- if (candidate.type === "raw")
86
- return typeof candidate.text === "string";
87
- return false;
88
- });
89
- return entries.length > 0 ? entries : undefined;
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);
90
33
  }
91
34
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAc1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE;;;;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;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA2B,EAC3B,GAAyB;IAEzB,OAAO,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
@@ -1,19 +1,5 @@
1
- import { type ChannelEvent } from "./events.js";
2
- import { type LinkedContextEntry } from "./schema.js";
3
- export interface ThreadState {
4
- thread: string;
5
- title?: string;
6
- status: string;
7
- labels: string[];
8
- assignees: string[];
9
- description?: string;
10
- linkedContext?: LinkedContextEntry[];
11
- summary?: string;
12
- openedAt?: string;
13
- updatedAt?: string;
14
- lastSeq: number;
15
- comments: number;
16
- }
17
- export declare function reduceThreads(events: ChannelEvent[]): ThreadState[];
1
+ export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@mindfoldhq/trellis-core/channel";
2
+ export type { ThreadState, ThreadAliasResolver, } from "@mindfoldhq/trellis-core/channel";
3
+ import type { ThreadState } from "@mindfoldhq/trellis-core/channel";
18
4
  export declare function formatThreadBoard(states: ThreadState[]): string[];
19
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,EAEL,KAAK,YAAY,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CA4BnE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAcjE"}
1
+ {"version":3,"file":"thread-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,WAAW,EACX,mBAAmB,GACpB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAcjE"}
@@ -1,31 +1,4 @@
1
- import { isThreadEvent, } from "./events.js";
2
- import { asLinkedContextEntries, asStringArray, } from "./schema.js";
3
- export function reduceThreads(events) {
4
- const states = new Map();
5
- for (const ev of events) {
6
- if (!isThreadEvent(ev))
7
- continue;
8
- const key = ev.thread;
9
- const current = states.get(key) ??
10
- {
11
- thread: key,
12
- status: "open",
13
- labels: [],
14
- assignees: [],
15
- lastSeq: ev.seq,
16
- comments: 0,
17
- };
18
- if (typeof ev.ts === "string")
19
- current.updatedAt = ev.ts;
20
- if (!current.openedAt && typeof ev.ts === "string") {
21
- current.openedAt = ev.ts;
22
- }
23
- current.lastSeq = ev.seq;
24
- applyThreadAction(current, ev);
25
- states.set(key, current);
26
- }
27
- return [...states.values()].sort((a, b) => (b.updatedAt ?? "").localeCompare(a.updatedAt ?? ""));
28
- }
1
+ export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@mindfoldhq/trellis-core/channel";
29
2
  export function formatThreadBoard(states) {
30
3
  if (states.length === 0)
31
4
  return ["(no threads)"];
@@ -40,42 +13,4 @@ export function formatThreadBoard(states) {
40
13
  }),
41
14
  ];
42
15
  }
43
- function applyThreadAction(current, ev) {
44
- switch (ev.action) {
45
- case "opened":
46
- current.status = typeof ev.status === "string" ? ev.status : "open";
47
- if (typeof ev.title === "string")
48
- current.title = ev.title;
49
- if (typeof ev.description === "string") {
50
- current.description = ev.description;
51
- }
52
- current.linkedContext =
53
- asLinkedContextEntries(ev.linkedContext) ?? current.linkedContext;
54
- current.labels = asStringArray(ev.labels) ?? current.labels;
55
- current.assignees = asStringArray(ev.assignees) ?? current.assignees;
56
- return;
57
- case "comment":
58
- current.comments += 1;
59
- return;
60
- case "status":
61
- if (typeof ev.status === "string")
62
- current.status = ev.status;
63
- return;
64
- case "labels":
65
- current.labels = asStringArray(ev.labels) ?? current.labels;
66
- return;
67
- case "assignees":
68
- current.assignees = asStringArray(ev.assignees) ?? current.assignees;
69
- return;
70
- case "summary":
71
- if (typeof ev.summary === "string")
72
- current.summary = ev.summary;
73
- return;
74
- case "processed":
75
- current.status = typeof ev.status === "string" ? ev.status : "processed";
76
- return;
77
- default:
78
- return;
79
- }
80
- }
81
16
  //# sourceMappingURL=thread-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-state.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-state.js","sourceRoot":"","sources":["../../../../src/commands/channel/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAS1C,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,13 @@
1
+ export interface ChannelTextBodyOptions {
2
+ text?: string;
3
+ stdin?: boolean;
4
+ textFile?: string;
5
+ }
6
+ interface ResolveChannelTextBodyOptions {
7
+ required: boolean;
8
+ missingMessage: string;
9
+ emptyMessage: string;
10
+ }
11
+ export declare function resolveChannelTextBody(opts: ChannelTextBodyOptions, resolveOpts: ResolveChannelTextBodyOptions): Promise<string | undefined>;
12
+ export {};
13
+ //# sourceMappingURL=text-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-body.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/text-body.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,6BAA6B;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,sBAAsB,EAC5B,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B"}
@@ -0,0 +1,47 @@
1
+ import fs from "node:fs";
2
+ export async function resolveChannelTextBody(opts, resolveOpts) {
3
+ const raw = await readChannelTextBody(opts);
4
+ if (raw === undefined) {
5
+ if (resolveOpts.required)
6
+ throw new Error(resolveOpts.missingMessage);
7
+ return undefined;
8
+ }
9
+ const text = raw.trimEnd();
10
+ if (!text)
11
+ throw new Error(resolveOpts.emptyMessage);
12
+ return text;
13
+ }
14
+ async function readChannelTextBody(opts) {
15
+ if (opts.text !== undefined && opts.text !== "")
16
+ return opts.text;
17
+ if (opts.textFile)
18
+ return fs.readFileSync(opts.textFile, "utf-8");
19
+ if (opts.stdin)
20
+ return await readStdin();
21
+ return undefined;
22
+ }
23
+ async function readStdin() {
24
+ return await new Promise((resolve, reject) => {
25
+ let buf = "";
26
+ const onData = (chunk) => {
27
+ buf += chunk.toString("utf-8");
28
+ };
29
+ const cleanup = () => {
30
+ process.stdin.off("data", onData);
31
+ process.stdin.off("end", onEnd);
32
+ process.stdin.off("error", onError);
33
+ };
34
+ const onEnd = () => {
35
+ cleanup();
36
+ resolve(buf);
37
+ };
38
+ const onError = (err) => {
39
+ cleanup();
40
+ reject(err);
41
+ };
42
+ process.stdin.on("data", onData);
43
+ process.stdin.once("end", onEnd);
44
+ process.stdin.once("error", onError);
45
+ });
46
+ }
47
+ //# sourceMappingURL=text-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-body.js","sourceRoot":"","sources":["../../../src/commands/channel/text-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAczB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA4B,EAC5B,WAA0C;IAE1C,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAA4B;IAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,SAAS,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;YACrC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,GAAU,EAAQ,EAAE;YACnC,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -4,12 +4,18 @@ export interface ThreadPostOptions {
4
4
  thread?: string;
5
5
  title?: string;
6
6
  text?: string;
7
+ stdin?: boolean;
8
+ textFile?: string;
7
9
  description?: string;
8
10
  status?: string;
9
11
  labels?: string;
10
12
  assignees?: string;
11
13
  summary?: string;
12
14
  scope?: string;
15
+ /** New canonical flag list. */
16
+ contextFile?: string[];
17
+ contextRaw?: string[];
18
+ /** Legacy aliases accepted while users migrate scripts. */
13
19
  linkedContextFile?: string[];
14
20
  linkedContextRaw?: string[];
15
21
  }
@@ -22,7 +28,12 @@ export interface ThreadShowOptions {
22
28
  scope?: string;
23
29
  raw?: boolean;
24
30
  }
31
+ export interface ThreadRenameOptions {
32
+ as: string;
33
+ scope?: string;
34
+ }
25
35
  export declare function channelThreadPost(channelName: string, opts: ThreadPostOptions): Promise<void>;
26
36
  export declare function channelThreadsList(channelName: string, opts: ThreadsOptions): Promise<void>;
27
37
  export declare function channelThreadShow(channelName: string, threadKey: string, opts: ThreadShowOptions): Promise<void>;
38
+ export declare function channelThreadRename(channelName: string, oldThread: string, newThread: string, opts: ThreadRenameOptions): Promise<void>;
28
39
  //# sourceMappingURL=threads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/threads.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/threads.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -1,45 +1,47 @@
1
- import { appendEvent, isThreadEvent, readChannelEvents, readChannelMetadata, } from "./store/events.js";
2
- import { resolveExistingChannelRef } from "./store/paths.js";
3
- import { normalizeThreadKey, parseCsv, parseChannelScope, parseLinkedContext, parseThreadAction, } from "./store/schema.js";
4
- import { formatThreadBoard, reduceThreads } from "./store/thread-state.js";
1
+ import { buildContextEntries, listThreads as coreListThreads, showThread as coreShowThread, postThread as corePostThread, reduceThreads, renameThread as coreRenameThread, } from "@mindfoldhq/trellis-core/channel";
2
+ import { parseChannelScope, parseThreadAction, } from "./store/schema.js";
3
+ import { parseCsv } from "./store/schema.js";
4
+ import { formatThreadBoard } from "./store/thread-state.js";
5
+ import { resolveChannelTextBody } from "./text-body.js";
5
6
  export async function channelThreadPost(channelName, opts) {
6
- const ref = resolveExistingChannelRef(channelName, {
7
- scope: parseChannelScope(opts.scope),
8
- });
9
- const metadata = await readChannelMetadata(channelName, ref.project);
10
- if (metadata.type !== "thread") {
11
- throw new Error(`Channel '${channelName}' is type '${metadata.type}'. 'post' requires a thread channel.`);
7
+ const parsed = parseThreadAction(opts.action);
8
+ if (parsed === "rename") {
9
+ throw new Error("Use `trellis channel thread rename <channel> <old> <new>` instead of `post rename`.");
12
10
  }
13
- const action = parseThreadAction(opts.action);
14
- const thread = resolveThreadKey(action, opts.thread);
15
- const linkedContext = parseLinkedContext(opts.linkedContextFile, opts.linkedContextRaw);
11
+ const action = parsed;
12
+ const context = buildContextEntries([...(opts.contextFile ?? []), ...(opts.linkedContextFile ?? [])], [...(opts.contextRaw ?? []), ...(opts.linkedContextRaw ?? [])]);
16
13
  const labels = parseCsv(opts.labels);
17
14
  const assignees = parseCsv(opts.assignees);
18
- const event = await appendEvent(channelName, {
19
- kind: "thread",
15
+ const text = await resolveChannelTextBody(opts, {
16
+ required: false,
17
+ missingMessage: "No text provided (use --text, --stdin, or --text-file)",
18
+ emptyMessage: "Empty thread event text",
19
+ });
20
+ const scope = parseChannelScope(opts.scope);
21
+ const event = await corePostThread({
22
+ channel: channelName,
20
23
  by: opts.as,
21
24
  action,
22
- thread,
25
+ thread: opts.thread ?? "",
26
+ ...(scope !== undefined ? { scope } : {}),
23
27
  ...(opts.title ? { title: opts.title } : {}),
24
- ...(opts.text ? { text: opts.text } : {}),
28
+ ...(text !== undefined ? { text } : {}),
25
29
  ...(opts.description ? { description: opts.description } : {}),
26
30
  ...(opts.status ? { status: opts.status } : {}),
27
31
  ...(labels ? { labels } : {}),
28
32
  ...(assignees ? { assignees } : {}),
29
33
  ...(opts.summary ? { summary: opts.summary } : {}),
30
- ...(linkedContext ? { linkedContext } : {}),
31
- }, ref.project);
34
+ ...(context ? { context } : {}),
35
+ origin: "cli",
36
+ });
32
37
  console.log(JSON.stringify(event));
33
38
  }
34
39
  export async function channelThreadsList(channelName, opts) {
35
- const ref = resolveExistingChannelRef(channelName, {
36
- scope: parseChannelScope(opts.scope),
37
- });
38
- const metadata = await readChannelMetadata(channelName, ref.project);
39
- if (metadata.type !== "thread") {
40
- throw new Error(`Channel '${channelName}' is type '${metadata.type}'. 'threads' requires a thread channel.`);
41
- }
42
- const states = reduceThreads(await readChannelEvents(channelName, ref.project)).filter((state) => (opts.status ? state.status === opts.status : true));
40
+ const scope = parseChannelScope(opts.scope);
41
+ const states = (await coreListThreads({
42
+ channel: channelName,
43
+ ...(scope !== undefined ? { scope } : {}),
44
+ })).filter((state) => (opts.status ? state.status === opts.status : true));
43
45
  if (opts.raw) {
44
46
  for (const state of states)
45
47
  console.log(JSON.stringify(state));
@@ -49,22 +51,19 @@ export async function channelThreadsList(channelName, opts) {
49
51
  console.log(line);
50
52
  }
51
53
  export async function channelThreadShow(channelName, threadKey, opts) {
52
- const ref = resolveExistingChannelRef(channelName, {
53
- scope: parseChannelScope(opts.scope),
54
+ const scope = parseChannelScope(opts.scope);
55
+ const events = await coreShowThread({
56
+ channel: channelName,
57
+ thread: threadKey,
58
+ ...(scope !== undefined ? { scope } : {}),
54
59
  });
55
- const metadata = await readChannelMetadata(channelName, ref.project);
56
- if (metadata.type !== "thread") {
57
- throw new Error(`Channel '${channelName}' is type '${metadata.type}'. 'thread' requires a thread channel.`);
58
- }
59
- const thread = normalizeThreadKey(threadKey);
60
- const events = (await readChannelEvents(channelName, ref.project)).filter((ev) => isThreadEvent(ev) && ev.thread === thread);
61
60
  if (opts.raw) {
62
61
  for (const ev of events)
63
62
  console.log(JSON.stringify(ev));
64
63
  return;
65
64
  }
66
65
  if (events.length === 0) {
67
- throw new Error(`Thread '${thread}' not found in channel '${channelName}'`);
66
+ throw new Error(`Thread '${threadKey}' not found in channel '${channelName}'`);
68
67
  }
69
68
  const state = reduceThreads(events)[0];
70
69
  console.log(`${state.thread} [${state.status}] ${state.title ?? ""}`.trimEnd());
@@ -78,19 +77,30 @@ export async function channelThreadShow(channelName, threadKey, opts) {
78
77
  if (state.summary)
79
78
  console.log(`summary: ${state.summary}`);
80
79
  for (const ev of events)
81
- printThreadEvent(ev);
80
+ printTimelineEvent(ev);
82
81
  }
83
- function resolveThreadKey(action, value) {
84
- if (value)
85
- return normalizeThreadKey(value);
86
- if (action === "opened")
87
- return `thread-${Date.now().toString(36)}`;
88
- throw new Error("--thread is required unless action is 'opened'");
82
+ export async function channelThreadRename(channelName, oldThread, newThread, opts) {
83
+ const scope = parseChannelScope(opts.scope);
84
+ const event = await coreRenameThread({
85
+ channel: channelName,
86
+ by: opts.as,
87
+ thread: oldThread,
88
+ newThread,
89
+ ...(scope !== undefined ? { scope } : {}),
90
+ origin: "cli",
91
+ });
92
+ console.log(JSON.stringify(event));
89
93
  }
90
- function printThreadEvent(ev) {
94
+ function printTimelineEvent(ev) {
91
95
  const ts = ev.ts.slice(0, 19).replace("T", " ");
96
+ if (ev.kind === "thread") {
97
+ const action = ev.action ?? "?";
98
+ const text = ev.text ? ` ${ev.text}` : "";
99
+ console.log(` ${ts} ${action} by=${ev.by}${text}`);
100
+ return;
101
+ }
102
+ // context event
92
103
  const action = ev.action ?? "?";
93
- const text = ev.text ? ` ${ev.text}` : "";
94
- console.log(` ${ts} ${action} by=${ev.by}${text}`);
104
+ console.log(` ${ts} context-${action} by=${ev.by}`);
95
105
  }
96
106
  //# sourceMappingURL=threads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/commands/channel/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/commands/channel/threads.ts"],"names":[],"mappings":"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"}