@creativeintelligence/abbie 0.1.5 → 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 (142) hide show
  1. package/bin/dev.js +1 -49
  2. package/bin/run.js +42 -49
  3. package/dist/cli/commands/login.js +26 -0
  4. package/dist/cli/commands/project/add.d.ts +0 -1
  5. package/dist/cli/commands/project/add.js +16 -52
  6. package/dist/cli/commands/project/list.js +13 -93
  7. package/dist/cli/commands/project/remove.d.ts +0 -2
  8. package/dist/cli/commands/project/remove.js +11 -28
  9. package/dist/cli/commands/session/list.js +3 -12
  10. package/dist/cli/commands/session/mark-done.js +1 -7
  11. package/dist/cli/commands/session/start.d.ts +0 -1
  12. package/dist/cli/commands/session/start.js +5 -7
  13. package/dist/lib/active-sessions.d.ts +0 -12
  14. package/dist/lib/active-sessions.js +6 -175
  15. package/dist/lib/project-path.d.ts +6 -0
  16. package/dist/lib/project-path.js +21 -0
  17. package/dist/lib.d.ts +1 -2
  18. package/dist/lib.js +2 -4
  19. package/oclif.manifest.json +2569 -6368
  20. package/package.json +1 -1
  21. package/dist/cli/commands/backlog/add.d.ts +0 -22
  22. package/dist/cli/commands/backlog/add.js +0 -65
  23. package/dist/cli/commands/backlog/claim.d.ts +0 -19
  24. package/dist/cli/commands/backlog/claim.js +0 -45
  25. package/dist/cli/commands/backlog/complete.d.ts +0 -18
  26. package/dist/cli/commands/backlog/complete.js +0 -42
  27. package/dist/cli/commands/backlog/list.d.ts +0 -20
  28. package/dist/cli/commands/backlog/list.js +0 -91
  29. package/dist/cli/commands/backlog/pick.d.ts +0 -18
  30. package/dist/cli/commands/backlog/pick.js +0 -42
  31. package/dist/cli/commands/backlog/sync.d.ts +0 -24
  32. package/dist/cli/commands/backlog/sync.js +0 -109
  33. package/dist/cli/commands/daemon.d.ts +0 -56
  34. package/dist/cli/commands/daemon.js +0 -1465
  35. package/dist/cli/commands/docs/lint.d.ts +0 -18
  36. package/dist/cli/commands/docs/lint.js +0 -82
  37. package/dist/cli/commands/docs/sync.d.ts +0 -19
  38. package/dist/cli/commands/docs/sync.js +0 -76
  39. package/dist/cli/commands/gc.d.ts +0 -29
  40. package/dist/cli/commands/gc.js +0 -211
  41. package/dist/cli/commands/index.d.ts +0 -36
  42. package/dist/cli/commands/index.js +0 -228
  43. package/dist/cli/commands/panes/broker.d.ts +0 -17
  44. package/dist/cli/commands/panes/broker.js +0 -57
  45. package/dist/cli/commands/panes/pipe-sink.d.ts +0 -17
  46. package/dist/cli/commands/panes/pipe-sink.js +0 -90
  47. package/dist/cli/commands/panes/snapshot.d.ts +0 -20
  48. package/dist/cli/commands/panes/snapshot.js +0 -125
  49. package/dist/cli/commands/preview/init.d.ts +0 -25
  50. package/dist/cli/commands/preview/init.js +0 -159
  51. package/dist/cli/commands/preview/sync.d.ts +0 -23
  52. package/dist/cli/commands/preview/sync.js +0 -144
  53. package/dist/cli/commands/preview/watch.d.ts +0 -24
  54. package/dist/cli/commands/preview/watch.js +0 -153
  55. package/dist/cli/commands/resource/acquire.d.ts +0 -21
  56. package/dist/cli/commands/resource/acquire.js +0 -90
  57. package/dist/cli/commands/resource/list.d.ts +0 -15
  58. package/dist/cli/commands/resource/list.js +0 -61
  59. package/dist/cli/commands/resource/release.d.ts +0 -18
  60. package/dist/cli/commands/resource/release.js +0 -50
  61. package/dist/cli/commands/resource/wait.d.ts +0 -21
  62. package/dist/cli/commands/resource/wait.js +0 -73
  63. package/dist/cli/commands/session/view.d.ts +0 -24
  64. package/dist/cli/commands/session/view.js +0 -145
  65. package/dist/cli/commands/start.d.ts +0 -37
  66. package/dist/cli/commands/start.js +0 -234
  67. package/dist/cli/commands/triage/claim.d.ts +0 -23
  68. package/dist/cli/commands/triage/claim.js +0 -186
  69. package/dist/cli/commands/triage/list.d.ts +0 -22
  70. package/dist/cli/commands/triage/list.js +0 -112
  71. package/dist/cli/commands/triage/next.d.ts +0 -18
  72. package/dist/cli/commands/triage/next.js +0 -63
  73. package/dist/cli/commands/triage/pull.d.ts +0 -19
  74. package/dist/cli/commands/triage/pull.js +0 -82
  75. package/dist/cli/commands/triage/stats.d.ts +0 -16
  76. package/dist/cli/commands/triage/stats.js +0 -69
  77. package/dist/cli/commands/tunnel/list.d.ts +0 -16
  78. package/dist/cli/commands/tunnel/list.js +0 -98
  79. package/dist/cli/commands/tunnel/start.d.ts +0 -24
  80. package/dist/cli/commands/tunnel/start.js +0 -107
  81. package/dist/cli/commands/tunnel/stop.d.ts +0 -20
  82. package/dist/cli/commands/tunnel/stop.js +0 -90
  83. package/dist/cli/commands/tunnel/url.d.ts +0 -21
  84. package/dist/cli/commands/tunnel/url.js +0 -70
  85. package/dist/cli/commands/windows/context.d.ts +0 -18
  86. package/dist/cli/commands/windows/context.js +0 -326
  87. package/dist/cli/commands/windows/focus.d.ts +0 -17
  88. package/dist/cli/commands/windows/focus.js +0 -103
  89. package/dist/cli/commands/windows/list.d.ts +0 -21
  90. package/dist/cli/commands/windows/list.js +0 -172
  91. package/dist/cli/commands/windows/map.d.ts +0 -17
  92. package/dist/cli/commands/windows/map.js +0 -168
  93. package/dist/cli/commands/windows/read.d.ts +0 -21
  94. package/dist/cli/commands/windows/read.js +0 -241
  95. package/dist/cli/commands/windows/search.d.ts +0 -24
  96. package/dist/cli/commands/windows/search.js +0 -171
  97. package/dist/cli/commands/windows/show.d.ts +0 -19
  98. package/dist/cli/commands/windows/show.js +0 -165
  99. package/dist/cli/commands/windows/watch.d.ts +0 -19
  100. package/dist/cli/commands/windows/watch.js +0 -241
  101. package/dist/lib/managed-session.d.ts +0 -27
  102. package/dist/lib/managed-session.js +0 -105
  103. package/dist/lib/panes/broker.d.ts +0 -130
  104. package/dist/lib/panes/broker.js +0 -97
  105. package/dist/lib/panes/index.d.ts +0 -2
  106. package/dist/lib/panes/index.js +0 -1
  107. package/dist/lib/panes/server.d.ts +0 -17
  108. package/dist/lib/panes/server.js +0 -308
  109. package/dist/lib/preview/manager.d.ts +0 -77
  110. package/dist/lib/preview/manager.js +0 -369
  111. package/dist/lib/preview/schema.d.ts +0 -2
  112. package/dist/lib/preview/schema.js +0 -32
  113. package/dist/lib/preview/sprite.d.ts +0 -85
  114. package/dist/lib/preview/sprite.js +0 -321
  115. package/dist/lib/preview/watcher.d.ts +0 -63
  116. package/dist/lib/preview/watcher.js +0 -185
  117. package/dist/lib/project-identity.d.ts +0 -16
  118. package/dist/lib/project-identity.js +0 -75
  119. package/dist/lib/tmux/bridge.d.ts +0 -133
  120. package/dist/lib/tmux/bridge.js +0 -315
  121. package/dist/lib/tmux/context.d.ts +0 -82
  122. package/dist/lib/tmux/context.js +0 -239
  123. package/dist/lib/tmux/index.d.ts +0 -8
  124. package/dist/lib/tmux/index.js +0 -11
  125. package/dist/lib/tmux/map.d.ts +0 -57
  126. package/dist/lib/tmux/map.js +0 -198
  127. package/dist/lib/tmux/panes.d.ts +0 -27
  128. package/dist/lib/tmux/panes.js +0 -151
  129. package/dist/lib/tmux/redaction.d.ts +0 -57
  130. package/dist/lib/tmux/redaction.js +0 -152
  131. package/dist/lib/web/analytics.d.ts +0 -63
  132. package/dist/lib/web/analytics.js +0 -168
  133. package/dist/lib/web/server.d.ts +0 -26
  134. package/dist/lib/web/server.js +0 -697
  135. package/dist/lib/web/tmux-bridge.d.ts +0 -7
  136. package/dist/lib/web/tmux-bridge.js +0 -7
  137. package/dist/lib/windows/index.d.ts +0 -3
  138. package/dist/lib/windows/index.js +0 -2
  139. package/dist/lib/windows/inventory.d.ts +0 -21
  140. package/dist/lib/windows/inventory.js +0 -263
  141. package/dist/lib/windows/types.d.ts +0 -46
  142. 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