@creativeintelligence/abbie 0.1.6 → 0.1.7

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 (141) hide show
  1. package/bin/dev.js +1 -49
  2. package/bin/run.js +42 -49
  3. package/dist/cli/commands/project/add.d.ts +0 -1
  4. package/dist/cli/commands/project/add.js +16 -52
  5. package/dist/cli/commands/project/list.js +13 -93
  6. package/dist/cli/commands/project/remove.d.ts +0 -2
  7. package/dist/cli/commands/project/remove.js +11 -28
  8. package/dist/cli/commands/session/list.js +3 -12
  9. package/dist/cli/commands/session/mark-done.js +1 -7
  10. package/dist/cli/commands/session/start.d.ts +0 -1
  11. package/dist/cli/commands/session/start.js +5 -7
  12. package/dist/lib/active-sessions.d.ts +0 -12
  13. package/dist/lib/active-sessions.js +6 -175
  14. package/dist/lib/project-path.d.ts +6 -0
  15. package/dist/lib/project-path.js +21 -0
  16. package/dist/lib.d.ts +1 -2
  17. package/dist/lib.js +2 -4
  18. package/oclif.manifest.json +2569 -6368
  19. package/package.json +1 -1
  20. package/dist/cli/commands/backlog/add.d.ts +0 -22
  21. package/dist/cli/commands/backlog/add.js +0 -65
  22. package/dist/cli/commands/backlog/claim.d.ts +0 -19
  23. package/dist/cli/commands/backlog/claim.js +0 -45
  24. package/dist/cli/commands/backlog/complete.d.ts +0 -18
  25. package/dist/cli/commands/backlog/complete.js +0 -42
  26. package/dist/cli/commands/backlog/list.d.ts +0 -20
  27. package/dist/cli/commands/backlog/list.js +0 -91
  28. package/dist/cli/commands/backlog/pick.d.ts +0 -18
  29. package/dist/cli/commands/backlog/pick.js +0 -42
  30. package/dist/cli/commands/backlog/sync.d.ts +0 -24
  31. package/dist/cli/commands/backlog/sync.js +0 -109
  32. package/dist/cli/commands/daemon.d.ts +0 -56
  33. package/dist/cli/commands/daemon.js +0 -1465
  34. package/dist/cli/commands/docs/lint.d.ts +0 -18
  35. package/dist/cli/commands/docs/lint.js +0 -82
  36. package/dist/cli/commands/docs/sync.d.ts +0 -19
  37. package/dist/cli/commands/docs/sync.js +0 -76
  38. package/dist/cli/commands/gc.d.ts +0 -29
  39. package/dist/cli/commands/gc.js +0 -211
  40. package/dist/cli/commands/index.d.ts +0 -36
  41. package/dist/cli/commands/index.js +0 -228
  42. package/dist/cli/commands/panes/broker.d.ts +0 -17
  43. package/dist/cli/commands/panes/broker.js +0 -57
  44. package/dist/cli/commands/panes/pipe-sink.d.ts +0 -17
  45. package/dist/cli/commands/panes/pipe-sink.js +0 -90
  46. package/dist/cli/commands/panes/snapshot.d.ts +0 -20
  47. package/dist/cli/commands/panes/snapshot.js +0 -125
  48. package/dist/cli/commands/preview/init.d.ts +0 -25
  49. package/dist/cli/commands/preview/init.js +0 -159
  50. package/dist/cli/commands/preview/sync.d.ts +0 -23
  51. package/dist/cli/commands/preview/sync.js +0 -144
  52. package/dist/cli/commands/preview/watch.d.ts +0 -24
  53. package/dist/cli/commands/preview/watch.js +0 -153
  54. package/dist/cli/commands/resource/acquire.d.ts +0 -21
  55. package/dist/cli/commands/resource/acquire.js +0 -90
  56. package/dist/cli/commands/resource/list.d.ts +0 -15
  57. package/dist/cli/commands/resource/list.js +0 -61
  58. package/dist/cli/commands/resource/release.d.ts +0 -18
  59. package/dist/cli/commands/resource/release.js +0 -50
  60. package/dist/cli/commands/resource/wait.d.ts +0 -21
  61. package/dist/cli/commands/resource/wait.js +0 -73
  62. package/dist/cli/commands/session/view.d.ts +0 -24
  63. package/dist/cli/commands/session/view.js +0 -145
  64. package/dist/cli/commands/start.d.ts +0 -37
  65. package/dist/cli/commands/start.js +0 -234
  66. package/dist/cli/commands/triage/claim.d.ts +0 -23
  67. package/dist/cli/commands/triage/claim.js +0 -186
  68. package/dist/cli/commands/triage/list.d.ts +0 -22
  69. package/dist/cli/commands/triage/list.js +0 -112
  70. package/dist/cli/commands/triage/next.d.ts +0 -18
  71. package/dist/cli/commands/triage/next.js +0 -63
  72. package/dist/cli/commands/triage/pull.d.ts +0 -19
  73. package/dist/cli/commands/triage/pull.js +0 -82
  74. package/dist/cli/commands/triage/stats.d.ts +0 -16
  75. package/dist/cli/commands/triage/stats.js +0 -69
  76. package/dist/cli/commands/tunnel/list.d.ts +0 -16
  77. package/dist/cli/commands/tunnel/list.js +0 -98
  78. package/dist/cli/commands/tunnel/start.d.ts +0 -24
  79. package/dist/cli/commands/tunnel/start.js +0 -107
  80. package/dist/cli/commands/tunnel/stop.d.ts +0 -20
  81. package/dist/cli/commands/tunnel/stop.js +0 -90
  82. package/dist/cli/commands/tunnel/url.d.ts +0 -21
  83. package/dist/cli/commands/tunnel/url.js +0 -70
  84. package/dist/cli/commands/windows/context.d.ts +0 -18
  85. package/dist/cli/commands/windows/context.js +0 -326
  86. package/dist/cli/commands/windows/focus.d.ts +0 -17
  87. package/dist/cli/commands/windows/focus.js +0 -103
  88. package/dist/cli/commands/windows/list.d.ts +0 -21
  89. package/dist/cli/commands/windows/list.js +0 -172
  90. package/dist/cli/commands/windows/map.d.ts +0 -17
  91. package/dist/cli/commands/windows/map.js +0 -168
  92. package/dist/cli/commands/windows/read.d.ts +0 -21
  93. package/dist/cli/commands/windows/read.js +0 -241
  94. package/dist/cli/commands/windows/search.d.ts +0 -24
  95. package/dist/cli/commands/windows/search.js +0 -171
  96. package/dist/cli/commands/windows/show.d.ts +0 -19
  97. package/dist/cli/commands/windows/show.js +0 -165
  98. package/dist/cli/commands/windows/watch.d.ts +0 -19
  99. package/dist/cli/commands/windows/watch.js +0 -241
  100. package/dist/lib/managed-session.d.ts +0 -27
  101. package/dist/lib/managed-session.js +0 -105
  102. package/dist/lib/panes/broker.d.ts +0 -130
  103. package/dist/lib/panes/broker.js +0 -97
  104. package/dist/lib/panes/index.d.ts +0 -2
  105. package/dist/lib/panes/index.js +0 -1
  106. package/dist/lib/panes/server.d.ts +0 -17
  107. package/dist/lib/panes/server.js +0 -308
  108. package/dist/lib/preview/manager.d.ts +0 -77
  109. package/dist/lib/preview/manager.js +0 -369
  110. package/dist/lib/preview/schema.d.ts +0 -2
  111. package/dist/lib/preview/schema.js +0 -32
  112. package/dist/lib/preview/sprite.d.ts +0 -85
  113. package/dist/lib/preview/sprite.js +0 -321
  114. package/dist/lib/preview/watcher.d.ts +0 -63
  115. package/dist/lib/preview/watcher.js +0 -185
  116. package/dist/lib/project-identity.d.ts +0 -16
  117. package/dist/lib/project-identity.js +0 -75
  118. package/dist/lib/tmux/bridge.d.ts +0 -133
  119. package/dist/lib/tmux/bridge.js +0 -315
  120. package/dist/lib/tmux/context.d.ts +0 -82
  121. package/dist/lib/tmux/context.js +0 -239
  122. package/dist/lib/tmux/index.d.ts +0 -8
  123. package/dist/lib/tmux/index.js +0 -11
  124. package/dist/lib/tmux/map.d.ts +0 -57
  125. package/dist/lib/tmux/map.js +0 -198
  126. package/dist/lib/tmux/panes.d.ts +0 -27
  127. package/dist/lib/tmux/panes.js +0 -151
  128. package/dist/lib/tmux/redaction.d.ts +0 -57
  129. package/dist/lib/tmux/redaction.js +0 -152
  130. package/dist/lib/web/analytics.d.ts +0 -63
  131. package/dist/lib/web/analytics.js +0 -168
  132. package/dist/lib/web/server.d.ts +0 -26
  133. package/dist/lib/web/server.js +0 -697
  134. package/dist/lib/web/tmux-bridge.d.ts +0 -7
  135. package/dist/lib/web/tmux-bridge.js +0 -7
  136. package/dist/lib/windows/index.d.ts +0 -3
  137. package/dist/lib/windows/index.js +0 -2
  138. package/dist/lib/windows/inventory.d.ts +0 -21
  139. package/dist/lib/windows/inventory.js +0 -263
  140. package/dist/lib/windows/types.d.ts +0 -46
  141. package/dist/lib/windows/types.js +0 -1
@@ -1,23 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TriageClaim extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- "source-workspace": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- "source-team": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
- "tracking-workspace": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
- "tracking-team": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
- agent: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- assignee: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
- state: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
14
- "dry-run": import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
16
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
- };
21
- protected execute(): Promise<unknown>;
22
- }
23
- //# sourceMappingURL=claim.d.ts.map
@@ -1,186 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import { fetchLinearIssues } from "../../../lib/triage.js";
3
- import { classifyWithLLM } from "../../../lib/triage-llm.js";
4
- import { createTrackingIssue, isTracked } from "../../../lib/triage-tracker.js";
5
- import { BaseCommand } from "../../base-command.js";
6
- export default class TriageClaim extends BaseCommand {
7
- static description = "Claim next issue: LLM classifies from source workspace, creates tracking issue in luke-labs";
8
- static hidden = false;
9
- static examples = [
10
- "<%= config.bin %> triage claim",
11
- "<%= config.bin %> triage claim --source-workspace zocomputer --source-team ZO",
12
- "<%= config.bin %> triage claim --agent copilot",
13
- "<%= config.bin %> triage claim --dry-run",
14
- ];
15
- static flags = {
16
- ...BaseCommand.baseFlags,
17
- "source-workspace": Flags.string({
18
- char: "s",
19
- description: "Source workspace (where real issues live)",
20
- default: "zocomputer",
21
- }),
22
- "source-team": Flags.string({
23
- char: "t",
24
- description: "Source team",
25
- default: "ZO",
26
- }),
27
- "tracking-workspace": Flags.string({
28
- description: "Tracking workspace (for agent work)",
29
- default: "luke-labs",
30
- }),
31
- "tracking-team": Flags.string({
32
- description: "Tracking team",
33
- default: "ZO",
34
- }),
35
- agent: Flags.string({
36
- char: "a",
37
- description: "Filter by agent capability after classification",
38
- options: ["copilot", "claude", "codex", "human"],
39
- }),
40
- assignee: Flags.string({
41
- description: "Filter source issues by assignee",
42
- default: "luke",
43
- }),
44
- state: Flags.string({
45
- description: "Filter source issues by state",
46
- multiple: true,
47
- default: ["Todo", "Backlog"],
48
- }),
49
- "dry-run": Flags.boolean({
50
- char: "n",
51
- description: "Classify but do not create tracking issue",
52
- default: false,
53
- }),
54
- limit: Flags.integer({
55
- char: "l",
56
- description: "Max issues to consider from source",
57
- default: 20,
58
- }),
59
- };
60
- async execute() {
61
- const { flags } = await this.parse(TriageClaim);
62
- this.parsedFlags = flags;
63
- // Fetch source issues
64
- this.logInfo(`Fetching issues from ${flags["source-workspace"]}/${flags["source-team"]}...`);
65
- const issues = await fetchLinearIssues({
66
- workspace: flags["source-workspace"],
67
- team: flags["source-team"],
68
- assignee: flags.assignee,
69
- states: flags.state,
70
- limit: flags.limit,
71
- });
72
- if (issues.length === 0) {
73
- if (flags.json || flags.format === "json") {
74
- return { status: "no_issues", message: "No issues found in source" };
75
- }
76
- this.logInfo("No issues found in source workspace");
77
- return { status: "no_issues" };
78
- }
79
- // Find first untracked issue
80
- let targetIssue = null;
81
- for (const issue of issues) {
82
- const tracked = isTracked(issue.identifier);
83
- if (!tracked || tracked.status === "done") {
84
- targetIssue = issue;
85
- break;
86
- }
87
- }
88
- if (!targetIssue) {
89
- if (flags.json || flags.format === "json") {
90
- return { status: "all_tracked", message: "All source issues are already tracked" };
91
- }
92
- this.logInfo("All source issues are already tracked");
93
- return { status: "all_tracked" };
94
- }
95
- // LLM classification
96
- this.logInfo(`Classifying ${targetIssue.identifier}: ${targetIssue.title}`);
97
- const classification = await classifyWithLLM(targetIssue);
98
- // Filter by agent if specified
99
- if (flags.agent && classification.agent !== flags.agent) {
100
- // Find another issue that matches the agent filter
101
- for (const issue of issues) {
102
- if (issue.identifier === targetIssue.identifier)
103
- continue;
104
- const tracked = isTracked(issue.identifier);
105
- if (tracked && tracked.status !== "done")
106
- continue;
107
- const cls = await classifyWithLLM(issue);
108
- if (cls.agent === flags.agent) {
109
- targetIssue = issue;
110
- Object.assign(classification, cls);
111
- break;
112
- }
113
- }
114
- if (classification.agent !== flags.agent) {
115
- if (flags.json || flags.format === "json") {
116
- return {
117
- status: "no_match",
118
- message: `No issues found suitable for ${flags.agent} agent`,
119
- };
120
- }
121
- this.logInfo(`No issues found suitable for ${flags.agent} agent`);
122
- return { status: "no_match" };
123
- }
124
- }
125
- // Create tracking issue
126
- const tracking = await createTrackingIssue(targetIssue, classification, {
127
- sourceWorkspace: flags["source-workspace"],
128
- sourceTeam: flags["source-team"],
129
- trackingWorkspace: flags["tracking-workspace"],
130
- trackingTeam: flags["tracking-team"],
131
- dryRun: flags["dry-run"],
132
- });
133
- if (flags.json || flags.format === "json") {
134
- return {
135
- status: "claimed",
136
- source: {
137
- identifier: targetIssue.identifier,
138
- title: targetIssue.title,
139
- url: tracking.source_url,
140
- },
141
- classification: {
142
- type: classification.type,
143
- complexity: classification.complexity,
144
- agent: classification.agent,
145
- confidence: classification.confidence,
146
- reasoning: classification.reasoning,
147
- suggested_prompt: classification.suggested_prompt,
148
- tags: classification.tags,
149
- },
150
- tracking: {
151
- identifier: tracking.tracking_identifier,
152
- url: tracking.tracking_url,
153
- workspace: flags["tracking-workspace"],
154
- team: flags["tracking-team"],
155
- },
156
- dry_run: flags["dry-run"],
157
- };
158
- }
159
- // Human-readable output
160
- this.log("");
161
- this.log(`${flags["dry-run"] ? "[DRY RUN] " : ""}Claimed: ${targetIssue.identifier}`);
162
- this.log(`Title: ${targetIssue.title}`);
163
- this.log("");
164
- this.log("Classification:");
165
- this.log(` Type: ${classification.type}`);
166
- this.log(` Complexity: ${classification.complexity}`);
167
- this.log(` Agent: ${classification.agent}`);
168
- this.log(` Confidence: ${classification.confidence}/10`);
169
- this.log("");
170
- this.log("Reasoning:");
171
- this.log(` ${classification.reasoning}`);
172
- this.log("");
173
- this.log("Suggested Prompt:");
174
- this.log(` ${classification.suggested_prompt}`);
175
- this.log("");
176
- if (!flags["dry-run"] && tracking.tracking_identifier) {
177
- this.log(`Tracking: ${tracking.tracking_identifier}`);
178
- this.log(`URL: ${tracking.tracking_url}`);
179
- }
180
- return {
181
- status: "claimed",
182
- source: targetIssue.identifier,
183
- tracking: tracking.tracking_identifier,
184
- };
185
- }
186
- }
@@ -1,22 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TriageList extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- workspace: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- team: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
- agent: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- complexity: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- pending: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- ids: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
15
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
- };
20
- protected execute(): Promise<unknown>;
21
- }
22
- //# sourceMappingURL=list.d.ts.map
@@ -1,112 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import { createTriageManager, } from "../../../lib/triage.js";
3
- import { BaseCommand } from "../../base-command.js";
4
- export default class TriageList extends BaseCommand {
5
- static description = "List triaged issues with optional filters";
6
- static hidden = false;
7
- static examples = [
8
- "<%= config.bin %> triage list --workspace zocomputer --team ZO",
9
- "<%= config.bin %> triage list -w zocomputer -t ZO --agent claude",
10
- "<%= config.bin %> triage list -w zocomputer -t ZO --type bug --complexity simple",
11
- "<%= config.bin %> triage list -w zocomputer -t ZO --ids",
12
- ];
13
- static flags = {
14
- ...BaseCommand.baseFlags,
15
- workspace: Flags.string({
16
- char: "w",
17
- description: "Linear workspace",
18
- required: true,
19
- }),
20
- team: Flags.string({
21
- char: "t",
22
- description: "Linear team",
23
- required: true,
24
- }),
25
- agent: Flags.string({
26
- char: "a",
27
- description: "Filter by agent",
28
- options: ["claude", "codex", "copilot", "human"],
29
- }),
30
- type: Flags.string({
31
- description: "Filter by issue type",
32
- options: ["bug", "feature", "refactor", "improvement", "chore", "unknown"],
33
- }),
34
- complexity: Flags.string({
35
- char: "c",
36
- description: "Filter by complexity",
37
- options: ["trivial", "simple", "medium", "complex", "epic"],
38
- }),
39
- pending: Flags.boolean({
40
- char: "p",
41
- description: "Only show pending (not queued) issues",
42
- default: false,
43
- }),
44
- ids: Flags.boolean({
45
- description: "Output only issue identifiers (for piping)",
46
- default: false,
47
- }),
48
- limit: Flags.integer({
49
- char: "l",
50
- description: "Limit output",
51
- default: 20,
52
- }),
53
- };
54
- async execute() {
55
- const { flags } = await this.parse(TriageList);
56
- this.parsedFlags = flags;
57
- const manager = createTriageManager();
58
- const queue = manager.load(flags.workspace, flags.team);
59
- if (!queue) {
60
- if (flags.json || flags.format === "json") {
61
- return { issues: [] };
62
- }
63
- this.error(`No queue found for ${flags.workspace}/${flags.team}. Run 'triage pull' first.`);
64
- }
65
- // Filter issues
66
- let issues = queue.issues;
67
- if (flags.agent) {
68
- issues = issues.filter((i) => i.agent === flags.agent);
69
- }
70
- if (flags.type) {
71
- issues = issues.filter((i) => i.type === flags.type);
72
- }
73
- if (flags.complexity) {
74
- issues = issues.filter((i) => i.complexity === flags.complexity);
75
- }
76
- if (flags.pending) {
77
- issues = issues.filter((i) => !i.queued_at);
78
- }
79
- // Apply limit
80
- issues = issues.slice(0, flags.limit);
81
- if (flags.json || flags.format === "json") {
82
- return { issues };
83
- }
84
- // NDJSON: one issue per line
85
- if (this.ndjsonEnabled()) {
86
- this.outputNdjson(issues);
87
- return { issues };
88
- }
89
- // IDs only (for piping)
90
- if (flags.ids) {
91
- for (const issue of issues) {
92
- this.log(issue.issue.identifier);
93
- }
94
- return { issues };
95
- }
96
- // Human-readable output
97
- if (issues.length === 0) {
98
- this.logInfo("No matching issues");
99
- return { issues: [] };
100
- }
101
- this.log("");
102
- for (const issue of issues) {
103
- const status = issue.queued_at ? "✓" : "○";
104
- const tags = issue.tags.length > 0 ? ` [${issue.tags.slice(0, 3).join(", ")}]` : "";
105
- this.log(`${status} ${issue.issue.identifier} ${issue.agent}/${issue.type}/${issue.complexity}`);
106
- this.log(` ${issue.issue.title}${tags}`);
107
- this.log(` confidence: ${issue.confidence} | ${issue.reason}`);
108
- this.log("");
109
- }
110
- return { issues };
111
- }
112
- }
@@ -1,18 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TriageNext extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- workspace: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- team: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
- agent: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
- mark: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- };
16
- protected execute(): Promise<unknown>;
17
- }
18
- //# sourceMappingURL=next.d.ts.map
@@ -1,63 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import { createTriageManager } from "../../../lib/triage.js";
3
- import { BaseCommand } from "../../base-command.js";
4
- export default class TriageNext extends BaseCommand {
5
- static description = "Get next issue for an agent from triage queue";
6
- static hidden = false;
7
- static examples = [
8
- "<%= config.bin %> triage next --workspace zocomputer --team ZO --agent claude",
9
- "<%= config.bin %> triage next -w zocomputer -t ZO -a codex --json",
10
- "<%= config.bin %> triage next -w zocomputer -t ZO -a copilot | xargs linear issue view",
11
- ];
12
- static flags = {
13
- ...BaseCommand.baseFlags,
14
- workspace: Flags.string({
15
- char: "w",
16
- description: "Linear workspace",
17
- required: true,
18
- }),
19
- team: Flags.string({
20
- char: "t",
21
- description: "Linear team",
22
- required: true,
23
- }),
24
- agent: Flags.string({
25
- char: "a",
26
- description: "Agent type (claude, codex, copilot, human)",
27
- required: true,
28
- options: ["claude", "codex", "copilot", "human"],
29
- }),
30
- mark: Flags.boolean({
31
- char: "m",
32
- description: "Mark issue as queued",
33
- default: false,
34
- }),
35
- };
36
- async execute() {
37
- const { flags } = await this.parse(TriageNext);
38
- this.parsedFlags = flags;
39
- const manager = createTriageManager();
40
- const agent = flags.agent;
41
- const issue = manager.next(flags.workspace, flags.team, agent);
42
- if (!issue) {
43
- if (flags.json || flags.format === "json") {
44
- return { found: false };
45
- }
46
- this.logInfo(`No issues available for ${agent}`);
47
- return { found: false };
48
- }
49
- // Mark as queued if requested
50
- if (flags.mark) {
51
- manager.markQueued(flags.workspace, flags.team, issue.issue.identifier);
52
- }
53
- if (flags.json || flags.format === "json") {
54
- return {
55
- found: true,
56
- ...issue,
57
- };
58
- }
59
- // Unix pipe output: just the identifier
60
- this.log(issue.issue.identifier);
61
- return { found: true, identifier: issue.issue.identifier };
62
- }
63
- }
@@ -1,19 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TriagePull extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- workspace: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- team: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
- assignee: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- state: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- };
17
- protected execute(): Promise<unknown>;
18
- }
19
- //# sourceMappingURL=pull.d.ts.map
@@ -1,82 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import { createTriageManager } from "../../../lib/triage.js";
3
- import { BaseCommand } from "../../base-command.js";
4
- export default class TriagePull extends BaseCommand {
5
- static description = "Pull and triage issues from Linear workspace";
6
- static hidden = false;
7
- static examples = [
8
- "<%= config.bin %> triage pull --workspace zocomputer --team ZO",
9
- "<%= config.bin %> triage pull --workspace zocomputer --team ZO --assignee luke",
10
- "<%= config.bin %> triage pull --workspace zocomputer --team ZO --json",
11
- '<%= config.bin %> triage pull -w zocomputer -t ZO | jq ".issues[] | .issue.identifier"',
12
- ];
13
- static flags = {
14
- ...BaseCommand.baseFlags,
15
- workspace: Flags.string({
16
- char: "w",
17
- description: "Linear workspace",
18
- required: true,
19
- }),
20
- team: Flags.string({
21
- char: "t",
22
- description: "Linear team",
23
- required: true,
24
- }),
25
- assignee: Flags.string({
26
- char: "a",
27
- description: "Filter by assignee",
28
- }),
29
- state: Flags.string({
30
- char: "s",
31
- description: "Filter by state (can be repeated)",
32
- multiple: true,
33
- }),
34
- limit: Flags.integer({
35
- char: "l",
36
- description: "Maximum issues to pull",
37
- default: 50,
38
- }),
39
- };
40
- async execute() {
41
- const { flags } = await this.parse(TriagePull);
42
- this.parsedFlags = flags;
43
- const manager = createTriageManager();
44
- const queue = manager.refresh({
45
- workspace: flags.workspace,
46
- team: flags.team,
47
- assignee: flags.assignee,
48
- states: flags.state,
49
- limit: flags.limit,
50
- });
51
- if (flags.json || flags.format === "json") {
52
- return queue;
53
- }
54
- // Human-readable output
55
- this.log(`\nTriaged ${queue.issues.length} issues from ${flags.workspace}/${flags.team}\n`);
56
- const stats = manager.stats(flags.workspace, flags.team);
57
- if (stats) {
58
- this.log("By Agent:");
59
- for (const [agent, count] of Object.entries(stats.byAgent)) {
60
- this.log(` ${agent}: ${count}`);
61
- }
62
- this.log("");
63
- this.log("By Type:");
64
- for (const [type, count] of Object.entries(stats.byType)) {
65
- this.log(` ${type}: ${count}`);
66
- }
67
- this.log("");
68
- this.log("By Complexity:");
69
- for (const [complexity, count] of Object.entries(stats.byComplexity)) {
70
- this.log(` ${complexity}: ${count}`);
71
- }
72
- this.log("");
73
- }
74
- // Show top 5 issues
75
- this.log("Top Issues:");
76
- for (const issue of queue.issues.slice(0, 5)) {
77
- const tags = issue.tags.length > 0 ? ` [${issue.tags.join(", ")}]` : "";
78
- this.log(` ${issue.issue.identifier} (${issue.agent}/${issue.complexity}): ${issue.issue.title}${tags}`);
79
- }
80
- return queue;
81
- }
82
- }
@@ -1,16 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TriageStats extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- workspace: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- team: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- };
14
- protected execute(): Promise<unknown>;
15
- }
16
- //# sourceMappingURL=stats.d.ts.map
@@ -1,69 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import { createTriageManager } from "../../../lib/triage.js";
3
- import { BaseCommand } from "../../base-command.js";
4
- export default class TriageStats extends BaseCommand {
5
- static description = "Show triage queue statistics";
6
- static hidden = false;
7
- static examples = [
8
- "<%= config.bin %> triage stats --workspace zocomputer --team ZO",
9
- "<%= config.bin %> triage stats -w zocomputer -t ZO --json",
10
- ];
11
- static flags = {
12
- ...BaseCommand.baseFlags,
13
- workspace: Flags.string({
14
- char: "w",
15
- description: "Linear workspace",
16
- required: true,
17
- }),
18
- team: Flags.string({
19
- char: "t",
20
- description: "Linear team",
21
- required: true,
22
- }),
23
- };
24
- async execute() {
25
- const { flags } = await this.parse(TriageStats);
26
- this.parsedFlags = flags;
27
- const manager = createTriageManager();
28
- const stats = manager.stats(flags.workspace, flags.team);
29
- if (!stats) {
30
- if (flags.json || flags.format === "json") {
31
- return { found: false };
32
- }
33
- this.error(`No queue found for ${flags.workspace}/${flags.team}. Run 'triage pull' first.`);
34
- }
35
- if (flags.json || flags.format === "json") {
36
- return stats;
37
- }
38
- // Human-readable output
39
- this.log(`\nTriage Queue: ${flags.workspace}/${flags.team}\n`);
40
- this.log(`Total: ${stats.total}`);
41
- this.log(`Pending: ${stats.pending}`);
42
- this.log(`Queued: ${stats.queued}`);
43
- this.log("");
44
- this.log("By Agent:");
45
- for (const [agent, count] of Object.entries(stats.byAgent)) {
46
- const pct = ((count / stats.total) * 100).toFixed(0);
47
- this.log(` ${agent.padEnd(8)} ${String(count).padStart(3)} (${pct}%)`);
48
- }
49
- this.log("");
50
- this.log("By Type:");
51
- for (const [type, count] of Object.entries(stats.byType)) {
52
- const pct = ((count / stats.total) * 100).toFixed(0);
53
- this.log(` ${type.padEnd(12)} ${String(count).padStart(3)} (${pct}%)`);
54
- }
55
- this.log("");
56
- this.log("By Complexity:");
57
- for (const [complexity, count] of Object.entries(stats.byComplexity)) {
58
- const pct = ((count / stats.total) * 100).toFixed(0);
59
- this.log(` ${complexity.padEnd(8)} ${String(count).padStart(3)} (${pct}%)`);
60
- }
61
- this.log("");
62
- this.log("By Priority:");
63
- for (const [priority, count] of Object.entries(stats.byPriority)) {
64
- const pct = ((count / stats.total) * 100).toFixed(0);
65
- this.log(` ${priority.padEnd(12)} ${String(count).padStart(3)} (${pct}%)`);
66
- }
67
- return stats;
68
- }
69
- }
@@ -1,16 +0,0 @@
1
- import { BaseCommand } from "../../base-command.js";
2
- export default class TunnelList extends BaseCommand {
3
- static description: string;
4
- static hidden: boolean;
5
- static examples: string[];
6
- static flags: {
7
- urls: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- status: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
- format: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- "json-errors": import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- ndjson: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- };
14
- protected execute(): Promise<unknown>;
15
- }
16
- //# sourceMappingURL=list.d.ts.map