@elnora-ai/linear 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +7 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +13 -1
- package/README.md +116 -26
- package/agents/linear-issue-creator.md +129 -17
- package/agents/linear-issue-reviewer.md +122 -23
- package/agents/linear-issue-updater.md +137 -25
- package/agents/linear-state-curator.md +173 -0
- package/agents/linear-url-to-issues.md +189 -26
- package/commands/linear-cleanup.md +64 -29
- package/dist/cli.js +64 -1
- package/dist/cli.js.map +1 -1
- package/dist/client/auth.d.ts.map +1 -1
- package/dist/client/auth.js +13 -2
- package/dist/client/auth.js.map +1 -1
- package/dist/client/linear-client.d.ts +7 -0
- package/dist/client/linear-client.d.ts.map +1 -1
- package/dist/client/linear-client.js +13 -1
- package/dist/client/linear-client.js.map +1 -1
- package/dist/commands/agent-activities.d.ts +3 -0
- package/dist/commands/agent-activities.d.ts.map +1 -0
- package/dist/commands/agent-activities.js +144 -0
- package/dist/commands/agent-activities.js.map +1 -0
- package/dist/commands/agent-sessions.d.ts +3 -0
- package/dist/commands/agent-sessions.d.ts.map +1 -0
- package/dist/commands/agent-sessions.js +132 -0
- package/dist/commands/agent-sessions.js.map +1 -0
- package/dist/commands/attachments.d.ts +3 -0
- package/dist/commands/attachments.d.ts.map +1 -0
- package/dist/commands/attachments.js +265 -0
- package/dist/commands/attachments.js.map +1 -0
- package/dist/commands/audit.d.ts +3 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +73 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/comments.d.ts +3 -0
- package/dist/commands/comments.d.ts.map +1 -0
- package/dist/commands/comments.js +107 -0
- package/dist/commands/comments.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +62 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/context.d.ts +3 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +94 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/curator.d.ts +14 -0
- package/dist/commands/curator.d.ts.map +1 -1
- package/dist/commands/curator.js +97 -19
- package/dist/commands/curator.js.map +1 -1
- package/dist/commands/customer-needs.d.ts +3 -0
- package/dist/commands/customer-needs.d.ts.map +1 -0
- package/dist/commands/customer-needs.js +198 -0
- package/dist/commands/customer-needs.js.map +1 -0
- package/dist/commands/customers.d.ts +5 -0
- package/dist/commands/customers.d.ts.map +1 -0
- package/dist/commands/customers.js +201 -0
- package/dist/commands/customers.js.map +1 -0
- package/dist/commands/cycles.d.ts +3 -0
- package/dist/commands/cycles.d.ts.map +1 -0
- package/dist/commands/cycles.js +67 -0
- package/dist/commands/cycles.js.map +1 -0
- package/dist/commands/documents.d.ts +3 -0
- package/dist/commands/documents.d.ts.map +1 -0
- package/dist/commands/documents.js +105 -0
- package/dist/commands/documents.js.map +1 -0
- package/dist/commands/favorites.d.ts +3 -0
- package/dist/commands/favorites.d.ts.map +1 -0
- package/dist/commands/favorites.js +101 -0
- package/dist/commands/favorites.js.map +1 -0
- package/dist/commands/index.d.ts +30 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +30 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/initiatives.d.ts +3 -0
- package/dist/commands/initiatives.d.ts.map +1 -0
- package/dist/commands/initiatives.js +106 -0
- package/dist/commands/initiatives.js.map +1 -0
- package/dist/commands/issues.d.ts +21 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +993 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/commands/labels.d.ts +3 -0
- package/dist/commands/labels.d.ts.map +1 -0
- package/dist/commands/labels.js +111 -0
- package/dist/commands/labels.js.map +1 -0
- package/dist/commands/milestones.d.ts +3 -0
- package/dist/commands/milestones.d.ts.map +1 -0
- package/dist/commands/milestones.js +94 -0
- package/dist/commands/milestones.js.map +1 -0
- package/dist/commands/notifications.d.ts +3 -0
- package/dist/commands/notifications.d.ts.map +1 -0
- package/dist/commands/notifications.js +130 -0
- package/dist/commands/notifications.js.map +1 -0
- package/dist/commands/project-labels.d.ts +3 -0
- package/dist/commands/project-labels.d.ts.map +1 -0
- package/dist/commands/project-labels.js +80 -0
- package/dist/commands/project-labels.js.map +1 -0
- package/dist/commands/project-relations.d.ts +3 -0
- package/dist/commands/project-relations.d.ts.map +1 -0
- package/dist/commands/project-relations.js +96 -0
- package/dist/commands/project-relations.js.map +1 -0
- package/dist/commands/projects.d.ts +3 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +263 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/quota.d.ts +3 -0
- package/dist/commands/quota.d.ts.map +1 -0
- package/dist/commands/quota.js +28 -0
- package/dist/commands/quota.js.map +1 -0
- package/dist/commands/reactions.d.ts +7 -0
- package/dist/commands/reactions.d.ts.map +1 -0
- package/dist/commands/reactions.js +53 -0
- package/dist/commands/reactions.js.map +1 -0
- package/dist/commands/relations.d.ts +3 -0
- package/dist/commands/relations.d.ts.map +1 -0
- package/dist/commands/relations.js +73 -0
- package/dist/commands/relations.js.map +1 -0
- package/dist/commands/states.d.ts +3 -0
- package/dist/commands/states.d.ts.map +1 -0
- package/dist/commands/states.js +52 -0
- package/dist/commands/states.js.map +1 -0
- package/dist/commands/status-updates.d.ts +3 -0
- package/dist/commands/status-updates.d.ts.map +1 -0
- package/dist/commands/status-updates.js +117 -0
- package/dist/commands/status-updates.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +58 -18
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/teams.d.ts +3 -0
- package/dist/commands/teams.d.ts.map +1 -0
- package/dist/commands/teams.js +135 -0
- package/dist/commands/teams.js.map +1 -0
- package/dist/commands/templates.d.ts +3 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +76 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/commands/users.d.ts +3 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +40 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/views.d.ts +3 -0
- package/dist/commands/views.d.ts.map +1 -0
- package/dist/commands/views.js +177 -0
- package/dist/commands/views.js.map +1 -0
- package/dist/commands/webhooks.d.ts +3 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +234 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +15 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/curator/dispatch.d.ts +52 -0
- package/dist/curator/dispatch.d.ts.map +1 -0
- package/dist/curator/dispatch.js +144 -0
- package/dist/curator/dispatch.js.map +1 -0
- package/dist/curator/index.d.ts +5 -0
- package/dist/curator/index.d.ts.map +1 -0
- package/dist/curator/index.js +5 -0
- package/dist/curator/index.js.map +1 -0
- package/dist/curator/llm.d.ts +70 -0
- package/dist/curator/llm.d.ts.map +1 -0
- package/dist/curator/llm.js +107 -0
- package/dist/curator/llm.js.map +1 -0
- package/dist/curator/snapshot.d.ts +34 -0
- package/dist/curator/snapshot.d.ts.map +1 -0
- package/dist/curator/snapshot.js +127 -0
- package/dist/curator/snapshot.js.map +1 -0
- package/dist/curator/state.d.ts +50 -0
- package/dist/curator/state.d.ts.map +1 -0
- package/dist/curator/state.js +125 -0
- package/dist/curator/state.js.map +1 -0
- package/dist/lib/bulk-graphql.d.ts +144 -0
- package/dist/lib/bulk-graphql.d.ts.map +1 -0
- package/dist/lib/bulk-graphql.js +380 -0
- package/dist/lib/bulk-graphql.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/output/cli.d.ts +17 -0
- package/dist/output/cli.d.ts.map +1 -0
- package/dist/output/cli.js +252 -0
- package/dist/output/cli.js.map +1 -0
- package/dist/output/formatter.d.ts +6 -0
- package/dist/output/formatter.d.ts.map +1 -1
- package/dist/output/formatter.js +10 -0
- package/dist/output/formatter.js.map +1 -1
- package/dist/output/index.d.ts +1 -0
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +1 -0
- package/dist/output/index.js.map +1 -1
- package/dist/scripts/sync-linear-templates.d.ts +26 -0
- package/dist/scripts/sync-linear-templates.d.ts.map +1 -0
- package/dist/scripts/sync-linear-templates.js +115 -0
- package/dist/scripts/sync-linear-templates.js.map +1 -0
- package/dist/signals/github-commits.d.ts +31 -0
- package/dist/signals/github-commits.d.ts.map +1 -0
- package/dist/signals/github-commits.js +127 -0
- package/dist/signals/github-commits.js.map +1 -0
- package/dist/signals/github-pr.d.ts +16 -0
- package/dist/signals/github-pr.d.ts.map +1 -0
- package/dist/signals/github-pr.js +98 -0
- package/dist/signals/github-pr.js.map +1 -0
- package/dist/signals/index.d.ts +4 -0
- package/dist/signals/index.d.ts.map +1 -1
- package/dist/signals/index.js +4 -0
- package/dist/signals/index.js.map +1 -1
- package/dist/signals/linear-issues.d.ts +20 -0
- package/dist/signals/linear-issues.d.ts.map +1 -0
- package/dist/signals/linear-issues.js +115 -0
- package/dist/signals/linear-issues.js.map +1 -0
- package/dist/signals/registry.d.ts +4 -3
- package/dist/signals/registry.d.ts.map +1 -1
- package/dist/signals/registry.js +33 -11
- package/dist/signals/registry.js.map +1 -1
- package/dist/signals/slack-messages.d.ts +20 -0
- package/dist/signals/slack-messages.d.ts.map +1 -0
- package/dist/signals/slack-messages.js +129 -0
- package/dist/signals/slack-messages.js.map +1 -0
- package/dist/utils/errors.d.ts +63 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +94 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/label-policy.d.ts +53 -0
- package/dist/utils/label-policy.d.ts.map +1 -0
- package/dist/utils/label-policy.js +93 -0
- package/dist/utils/label-policy.js.map +1 -0
- package/dist/utils/parse.d.ts +48 -0
- package/dist/utils/parse.d.ts.map +1 -0
- package/dist/utils/parse.js +133 -0
- package/dist/utils/parse.js.map +1 -0
- package/dist/utils/project-status.d.ts +6 -0
- package/dist/utils/project-status.d.ts.map +1 -0
- package/dist/utils/project-status.js +33 -0
- package/dist/utils/project-status.js.map +1 -0
- package/dist/utils/rate-limit.d.ts +24 -0
- package/dist/utils/rate-limit.d.ts.map +1 -0
- package/dist/utils/rate-limit.js +89 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/resolve.d.ts +84 -0
- package/dist/utils/resolve.d.ts.map +1 -0
- package/dist/utils/resolve.js +172 -0
- package/dist/utils/resolve.js.map +1 -0
- package/dist/utils/sleep.d.ts +2 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +4 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/webhook-verify.d.ts +42 -0
- package/dist/utils/webhook-verify.d.ts.map +1 -0
- package/dist/utils/webhook-verify.js +65 -0
- package/dist/utils/webhook-verify.js.map +1 -0
- package/package.json +4 -1
- package/references/agent-description-template.md +31 -0
- package/references/cli-reference.md +227 -0
- package/references/curator-tiering-rules.md +76 -0
- package/references/label-policy.example.json +37 -0
- package/references/label-policy.placeholder.json +6 -0
- package/references/settings-template.md +30 -0
- package/references/sla-reference.md +70 -0
- package/references/template-index.md +34 -0
- package/references/workspace-labels.md +124 -0
- package/references/workspace-projects.md +56 -0
- package/references/workspace-routing.md +58 -0
- package/schemas/label-policy.json +72 -0
- package/skills/linear-workspace/SKILL.md +65 -4
- package/templates/ACC-PRO-provision.md +74 -0
- package/templates/ACC-PRV-privileged.md +66 -0
- package/templates/ACC-QTR-review.md +77 -0
- package/templates/ACC-REV-revoke.md +67 -0
- package/templates/AI-USE-capability.md +111 -0
- package/templates/AUD-CAP-corrective.md +89 -0
- package/templates/AUD-INT-internal.md +92 -0
- package/templates/AUD-MGT-management.md +110 -0
- package/templates/CHG-MAJ-major.md +110 -0
- package/templates/CHG-SIG-significant.md +83 -0
- package/templates/CHG-STD-standard.md +47 -0
- package/templates/LRN-DOC-lessons.md +75 -0
- package/templates/OPS-BCK-backup.md +99 -0
- package/templates/OPS-DAT-data-mod.md +98 -0
- package/templates/RCA-DOC-root-cause.md +105 -0
- package/templates/RSK-ASS-assessment.md +87 -0
- package/templates/RSK-VND-vendor.md +113 -0
- package/templates/SEC-INC-incident.md +76 -0
- package/templates/SEC-PEN-pentest.md +58 -0
- package/templates/SEC-VLN-vulnerability.md +69 -0
- package/templates/SLA-AVL-availability.md +86 -0
- package/templates/SLA-OPS-operational.md +70 -0
- package/templates/agent-server-template/README.md +88 -0
- package/templates/agent-server-template/server.example.ts +185 -0
|
@@ -1,45 +1,80 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: linear-cleanup
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: Audit Linear issues for problems (missing labels, stale, duplicates, wrong state, orphaned, unactionable) and propose fixes
|
|
4
|
+
argument-hint: "<scope: all | team key | project name>"
|
|
5
|
+
allowed-tools: Bash, AskUserQuestion, Read
|
|
5
6
|
---
|
|
6
7
|
|
|
7
|
-
# Linear
|
|
8
|
+
# Linear cleanup
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
Audit Linear issues in **{{scope}}** and propose fixes. Walks six checks, summarizes findings, and asks per-category before any mutation. All `elnora-linear` mutations default to dry-run — explicit `--yes` is required to commit.
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## The six checks
|
|
13
|
+
|
|
14
|
+
### 1. Missing required labels
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
elnora-linear issues list --team "<scope>" --limit 100 --output json \
|
|
18
|
+
| jq '.[] | select((.labels // []) | map(.name) | any(startswith("Type:")) | not)'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For each issue missing the team's required label prefixes (see `references/label-policy.json` or `elnora-linear teams get <key>`), suggest labels from title/description keywords. Repeat the `startswith` check for every required prefix on the team (`Layer:`, `Source:`, etc.).
|
|
22
|
+
|
|
23
|
+
### 2. Stale issues (no activity 30+ days)
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
elnora-linear cleanup --team "<scope>" --inactive-days 30 --action comment --output text
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Dry-run by default. Offer: comment / close / cancel / skip. Apply chosen action with `--yes`.
|
|
30
|
+
|
|
31
|
+
### 3. Potential duplicates
|
|
12
32
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
[--team <key>] \
|
|
17
|
-
[--states "Todo,Backlog"] \
|
|
18
|
-
--inactive-days 30 \
|
|
19
|
-
--action comment \
|
|
20
|
-
--output text
|
|
21
|
-
```
|
|
33
|
+
```bash
|
|
34
|
+
elnora-linear issues list --team "<scope>" --limit 200 --output json
|
|
35
|
+
```
|
|
22
36
|
|
|
23
|
-
|
|
37
|
+
For each pair of issues with >70% title similarity, surface them as candidates. Suggest `elnora-linear relations create --type duplicate-of` or merge.
|
|
24
38
|
|
|
25
|
-
|
|
26
|
-
- "Comment on all" → rerun with `--action comment --yes`
|
|
27
|
-
- "Close (mark Done)" → rerun with `--action close --yes`
|
|
28
|
-
- "Cancel" → rerun with `--action cancel --yes`
|
|
29
|
-
- "Skip" → don't run
|
|
39
|
+
### 4. Wrong state
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
```bash
|
|
42
|
+
elnora-linear projects list --team "<scope>" --output json
|
|
43
|
+
elnora-linear issues list --team "<scope>" --limit 200 --output json
|
|
44
|
+
```
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
Cross-check each issue's state against its project's status (a `Completed` project shouldn't have `In Progress` issues; a `Backlog` project shouldn't have `In Progress` issues). Flag mismatches.
|
|
34
47
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
### 5. Orphaned issues (no project)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
elnora-linear issues list --team "<scope>" --limit 200 --output json \
|
|
52
|
+
| jq '.[] | select(.project == null)'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For each orphan, suggest the most likely project based on title/description vs `elnora-linear projects list --output json`.
|
|
56
|
+
|
|
57
|
+
### 6. Unactionable issues
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
elnora-linear issues list --team "<scope>" --limit 200 --output json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Flag any issue where: description is empty or < 50 chars, no acceptance criteria, or the title is vague (e.g. "fix it", "thing broken"). Offer a rewrite via `linear-issue-reviewer` or archive.
|
|
64
|
+
|
|
65
|
+
## Workflow
|
|
38
66
|
|
|
39
|
-
|
|
67
|
+
1. **Run all six checks** — print a summary table: category, count, severity.
|
|
68
|
+
2. **For each non-empty category** — show the matching issues with proposed fixes; use `AskUserQuestion` to offer:
|
|
69
|
+
- Apply all
|
|
70
|
+
- Review one by one
|
|
71
|
+
- Skip
|
|
72
|
+
3. **Execute** the chosen action via `elnora-linear issues update <ID> --labels "..."`, `… --state "..."`, `… --project "..."`, etc. Every mutation goes through the standard CLI gates (no permanent deletes without `--yes`).
|
|
73
|
+
4. **Report** — fixed count, archived count, flagged-for-manual-review count.
|
|
40
74
|
|
|
41
75
|
## Don't
|
|
42
76
|
|
|
43
|
-
- Don't
|
|
44
|
-
- Don't
|
|
45
|
-
- Don't
|
|
77
|
+
- Don't auto-apply across categories without confirmation per category.
|
|
78
|
+
- Don't run anything destructive (`--permanent`, `--yes`) until the user has explicitly approved it.
|
|
79
|
+
- Don't disturb `In Progress` issues unless the user explicitly opts in (`elnora-linear cleanup --states "In Progress"`).
|
|
80
|
+
- `{{scope}}` should be a plain team key (`ENG`) or project name. Don't pass shell metacharacters — the placeholder is interpolated into Bash invocations literally.
|
package/dist/cli.js
CHANGED
|
@@ -8,12 +8,42 @@ import { readFileSync } from "node:fs";
|
|
|
8
8
|
import { dirname, join } from "node:path";
|
|
9
9
|
import { fileURLToPath } from "node:url";
|
|
10
10
|
import { Command, Option } from "commander";
|
|
11
|
+
import { setupAgentActivitiesCommand } from "./commands/agent-activities.js";
|
|
12
|
+
import { setupAgentSessionsCommand } from "./commands/agent-sessions.js";
|
|
13
|
+
import { setupAttachmentsCommand } from "./commands/attachments.js";
|
|
14
|
+
import { setupAuditCommand } from "./commands/audit.js";
|
|
11
15
|
import { runBulk } from "./commands/bulk.js";
|
|
12
16
|
import { runCleanup } from "./commands/cleanup.js";
|
|
17
|
+
import { setupCommentsCommand } from "./commands/comments.js";
|
|
18
|
+
import { setupCompletionCommand } from "./commands/completion.js";
|
|
19
|
+
import { setupContextCommand } from "./commands/context.js";
|
|
13
20
|
import { runCurator } from "./commands/curator.js";
|
|
21
|
+
import { setupCustomerNeedsCommand } from "./commands/customer-needs.js";
|
|
22
|
+
import { setupCustomersCommand } from "./commands/customers.js";
|
|
23
|
+
import { setupCyclesCommand } from "./commands/cycles.js";
|
|
24
|
+
import { setupDocumentsCommand } from "./commands/documents.js";
|
|
25
|
+
import { setupFavoritesCommand } from "./commands/favorites.js";
|
|
26
|
+
import { setupInitiativesCommand } from "./commands/initiatives.js";
|
|
27
|
+
import { setupIssuesCommand } from "./commands/issues.js";
|
|
28
|
+
import { setupLabelsCommand } from "./commands/labels.js";
|
|
29
|
+
import { setupMilestonesCommand } from "./commands/milestones.js";
|
|
14
30
|
import { runMyIssues } from "./commands/my-issues.js";
|
|
31
|
+
import { setupNotificationsCommand } from "./commands/notifications.js";
|
|
32
|
+
import { setupProjectLabelsCommand } from "./commands/project-labels.js";
|
|
33
|
+
import { setupProjectRelationsCommand } from "./commands/project-relations.js";
|
|
34
|
+
import { setupProjectsCommand } from "./commands/projects.js";
|
|
35
|
+
import { setupQuotaCommand } from "./commands/quota.js";
|
|
36
|
+
import { setupReactionsCommand } from "./commands/reactions.js";
|
|
37
|
+
import { setupRelationsCommand } from "./commands/relations.js";
|
|
15
38
|
import { runSearch } from "./commands/search.js";
|
|
39
|
+
import { setupStatesCommand } from "./commands/states.js";
|
|
40
|
+
import { setupStatusUpdatesCommand } from "./commands/status-updates.js";
|
|
16
41
|
import { AUTO_SYNC_TARGETS, runSyncAll, runSyncImport, runSyncTarget, runSyncVerify, } from "./commands/sync.js";
|
|
42
|
+
import { setupTeamsCommand } from "./commands/teams.js";
|
|
43
|
+
import { setupTemplatesCommand } from "./commands/templates.js";
|
|
44
|
+
import { setupUsersCommand } from "./commands/users.js";
|
|
45
|
+
import { setupViewsCommand } from "./commands/views.js";
|
|
46
|
+
import { setupWebhooksCommand } from "./commands/webhooks.js";
|
|
17
47
|
const pkg = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "package.json"), "utf8"));
|
|
18
48
|
const VERSION = pkg.version;
|
|
19
49
|
function positiveInt(name) {
|
|
@@ -121,13 +151,46 @@ sync
|
|
|
121
151
|
});
|
|
122
152
|
program
|
|
123
153
|
.command("curator-run")
|
|
124
|
-
.description("Collect signals
|
|
154
|
+
.description("Collect signals, build an LLM snapshot, dispatch HIGH/MEDIUM/LOW actions. Requires ANTHROPIC_API_KEY for the rule engine; --collect-only stays in diagnostic mode.")
|
|
125
155
|
.option("--source <name>", "Run only the named source (matches signal_sources[].name)")
|
|
126
156
|
.option("--references-dir <path>", "Override default references directory")
|
|
157
|
+
.option("--collect-only", "Stop after the signal-collection phase; skip the LLM and dispatcher")
|
|
158
|
+
.option("--dry-run", "Stage HIGH actions in the report but do NOT call the Linear API")
|
|
159
|
+
.option("--state-dir <path>", "Override the curator state directory (default ~/.config/elnora-linear/state/)")
|
|
127
160
|
.option("-o, --output <mode>", "Output mode: text or json", "text")
|
|
128
161
|
.action(async (opts) => {
|
|
129
162
|
await runCurator(opts);
|
|
130
163
|
});
|
|
164
|
+
setupUsersCommand(program);
|
|
165
|
+
setupStatesCommand(program);
|
|
166
|
+
setupCyclesCommand(program);
|
|
167
|
+
setupQuotaCommand(program);
|
|
168
|
+
setupReactionsCommand(program);
|
|
169
|
+
setupRelationsCommand(program);
|
|
170
|
+
setupProjectRelationsCommand(program);
|
|
171
|
+
setupFavoritesCommand(program);
|
|
172
|
+
setupCommentsCommand(program);
|
|
173
|
+
setupTeamsCommand(program);
|
|
174
|
+
setupLabelsCommand(program);
|
|
175
|
+
setupProjectLabelsCommand(program);
|
|
176
|
+
setupProjectsCommand(program);
|
|
177
|
+
setupMilestonesCommand(program);
|
|
178
|
+
setupCustomersCommand(program);
|
|
179
|
+
setupCustomerNeedsCommand(program);
|
|
180
|
+
setupDocumentsCommand(program);
|
|
181
|
+
setupNotificationsCommand(program);
|
|
182
|
+
setupViewsCommand(program);
|
|
183
|
+
setupInitiativesCommand(program);
|
|
184
|
+
setupAgentSessionsCommand(program);
|
|
185
|
+
setupAgentActivitiesCommand(program);
|
|
186
|
+
setupAuditCommand(program);
|
|
187
|
+
setupStatusUpdatesCommand(program);
|
|
188
|
+
setupIssuesCommand(program);
|
|
189
|
+
setupAttachmentsCommand(program);
|
|
190
|
+
setupWebhooksCommand(program);
|
|
191
|
+
setupContextCommand(program);
|
|
192
|
+
setupTemplatesCommand(program);
|
|
193
|
+
setupCompletionCommand(program);
|
|
131
194
|
try {
|
|
132
195
|
await program.parseAsync(process.argv);
|
|
133
196
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACN,iBAAiB,EAEjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,GACb,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"AAeA,qBAAa,SAAU,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI3B;AAKD,iBAAS,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASxC;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQvD;AAED,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAyB,GAAG,IAAI,CAI5E;AAED,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC5E;AAGD,eAAO,MAAM,SAAS;;;;;CAA0E,CAAC"}
|
package/dist/client/auth.js
CHANGED
|
@@ -10,6 +10,7 @@ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "n
|
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { dirname, join } from "node:path";
|
|
12
12
|
import { createInterface } from "node:readline/promises";
|
|
13
|
+
import { Writable } from "node:stream";
|
|
13
14
|
export class AuthError extends Error {
|
|
14
15
|
constructor(message) {
|
|
15
16
|
super(message);
|
|
@@ -21,7 +22,10 @@ const DEFAULT_ENV_FILE = join(homedir(), ".config", "elnora-linear", ".env");
|
|
|
21
22
|
function validateKey(key) {
|
|
22
23
|
const trimmed = key.trim().replace(/^["']|["']$/g, "");
|
|
23
24
|
if (!trimmed.startsWith(KEY_PREFIX)) {
|
|
24
|
-
|
|
25
|
+
// Don't echo any prefix of the value — if it doesn't start with
|
|
26
|
+
// "lin_api_" we have no guarantee it isn't a different secret that the
|
|
27
|
+
// user pasted by mistake. Use a fixed sentinel instead.
|
|
28
|
+
throw new AuthError(`Linear API key must start with "${KEY_PREFIX}". Got: <redacted ${trimmed.length}-char value>`);
|
|
25
29
|
}
|
|
26
30
|
return trimmed;
|
|
27
31
|
}
|
|
@@ -56,13 +60,20 @@ export async function getApiKey(opts = {}) {
|
|
|
56
60
|
throw new AuthError("Linear API key not found and stdin is not a TTY; cannot prompt. Set LINEAR_API_KEY env var.");
|
|
57
61
|
}
|
|
58
62
|
process.stdout.write("Linear API key not found.\nGet one at https://linear.app/settings/api\nPaste it here: ");
|
|
59
|
-
|
|
63
|
+
// Suppress terminal echo so the pasted key doesn't appear in scrollback.
|
|
64
|
+
const muted = new Writable({
|
|
65
|
+
write(_chunk, _enc, cb) {
|
|
66
|
+
cb();
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
const rl = createInterface({ input: process.stdin, output: muted, terminal: true });
|
|
60
70
|
let response;
|
|
61
71
|
try {
|
|
62
72
|
response = (await rl.question("")).trim();
|
|
63
73
|
}
|
|
64
74
|
finally {
|
|
65
75
|
rl.close();
|
|
76
|
+
process.stdout.write("\n");
|
|
66
77
|
}
|
|
67
78
|
const validated = validateKey(response);
|
|
68
79
|
saveKeyToEnvFile(validated, envFile);
|
package/dist/client/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,8BAA8B;AAC9B,8BAA8B;AAC9B,qEAAqE;AACrE,yEAAyE;AACzE,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { LinearClient } from "@linear/sdk";
|
|
2
2
|
import { type GetApiKeyOptions } from "./auth.js";
|
|
3
3
|
export declare function getLinearClient(opts?: GetApiKeyOptions): Promise<LinearClient>;
|
|
4
|
+
/**
|
|
5
|
+
* Alias for getLinearClient with allowPrompt=true.
|
|
6
|
+
*
|
|
7
|
+
* Provided so ports from the private CLI (which used a synchronous `getClient()`)
|
|
8
|
+
* can keep the same call site shape (`const client = await getClient()`).
|
|
9
|
+
*/
|
|
10
|
+
export declare function getClient(opts?: GetApiKeyOptions): Promise<LinearClient>;
|
|
4
11
|
export declare function resetLinearClient(): void;
|
|
5
12
|
//# sourceMappingURL=linear-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear-client.d.ts","sourceRoot":"","sources":["../../src/client/linear-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear-client.d.ts","sourceRoot":"","sources":["../../src/client/linear-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,KAAK,gBAAgB,EAAa,MAAM,WAAW,CAAC;AAO7D,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKpF;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAE9E;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -2,16 +2,28 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Process-wide cache so a single CLI invocation only auths + constructs once,
|
|
4
4
|
// no matter how many commands invoke it. Tests can reset via resetLinearClient.
|
|
5
|
+
import { createRequire } from "node:module";
|
|
5
6
|
import { LinearClient } from "@linear/sdk";
|
|
6
7
|
import { getApiKey } from "./auth.js";
|
|
8
|
+
const pkg = createRequire(import.meta.url)("../../package.json");
|
|
9
|
+
const USER_AGENT = `@elnora-ai/linear/${pkg.version}`;
|
|
7
10
|
let cached = null;
|
|
8
11
|
export async function getLinearClient(opts) {
|
|
9
12
|
if (cached)
|
|
10
13
|
return cached;
|
|
11
14
|
const apiKey = await getApiKey(opts);
|
|
12
|
-
cached = new LinearClient({ apiKey });
|
|
15
|
+
cached = new LinearClient({ apiKey, headers: { "User-Agent": USER_AGENT } });
|
|
13
16
|
return cached;
|
|
14
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Alias for getLinearClient with allowPrompt=true.
|
|
20
|
+
*
|
|
21
|
+
* Provided so ports from the private CLI (which used a synchronous `getClient()`)
|
|
22
|
+
* can keep the same call site shape (`const client = await getClient()`).
|
|
23
|
+
*/
|
|
24
|
+
export async function getClient(opts) {
|
|
25
|
+
return getLinearClient({ allowPrompt: true, ...opts });
|
|
26
|
+
}
|
|
15
27
|
export function resetLinearClient() {
|
|
16
28
|
cached = null;
|
|
17
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear-client.js","sourceRoot":"","sources":["../../src/client/linear-client.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAyB,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7D,IAAI,MAAM,GAAwB,IAAI,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAuB;IAC5D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"linear-client.js","sourceRoot":"","sources":["../../src/client/linear-client.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAyB,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAwB,CAAC;AACxF,MAAM,UAAU,GAAG,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC;AAEtD,IAAI,MAAM,GAAwB,IAAI,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAuB;IAC5D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAuB;IACtD,OAAO,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAChC,MAAM,GAAG,IAAI,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-activities.d.ts","sourceRoot":"","sources":["../../src/commands/agent-activities.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFlE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// `elnora-linear agent-activities` — streaming output an agent emits during
|
|
2
|
+
// a session.
|
|
3
|
+
//
|
|
4
|
+
// Linear's agent framework expects a `thought` activity within 10 seconds of
|
|
5
|
+
// receiving an `agentSessionEvent.created` webhook, then any number of
|
|
6
|
+
// follow-ups (action / response / elicitation / error) up to ~30 minutes
|
|
7
|
+
// before the session goes stale.
|
|
8
|
+
import { readFileSync } from "node:fs";
|
|
9
|
+
import { resolve as resolvePath } from "node:path";
|
|
10
|
+
import { AgentActivitySignal } from "@linear/sdk";
|
|
11
|
+
import { getClient } from "../client/index.js";
|
|
12
|
+
import { handleAsyncCommand, outputSuccess } from "../output/index.js";
|
|
13
|
+
import { CliError, parseLimit, ValidationError } from "../utils/index.js";
|
|
14
|
+
const VALID_TYPES = ["thought", "action", "elicitation", "response", "error"];
|
|
15
|
+
function buildContent(type, body, action, parameter, resultJson) {
|
|
16
|
+
switch (type) {
|
|
17
|
+
case "thought":
|
|
18
|
+
case "elicitation":
|
|
19
|
+
case "response":
|
|
20
|
+
case "error":
|
|
21
|
+
if (!body) {
|
|
22
|
+
throw new ValidationError(`--body is required for type "${type}".`);
|
|
23
|
+
}
|
|
24
|
+
return { type, body };
|
|
25
|
+
case "action": {
|
|
26
|
+
if (!action) {
|
|
27
|
+
throw new ValidationError('--action is required for type "action".');
|
|
28
|
+
}
|
|
29
|
+
const content = { type: "action", action };
|
|
30
|
+
if (parameter !== undefined)
|
|
31
|
+
content.parameter = parameter;
|
|
32
|
+
if (resultJson !== undefined) {
|
|
33
|
+
try {
|
|
34
|
+
content.result = JSON.parse(resultJson);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
38
|
+
throw new ValidationError(`Invalid --result JSON: ${msg}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function readSignalMetadata(file) {
|
|
46
|
+
const raw = readFileSync(resolvePath(file), "utf-8");
|
|
47
|
+
let parsed;
|
|
48
|
+
try {
|
|
49
|
+
parsed = JSON.parse(raw);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
53
|
+
throw new ValidationError(`Invalid --signal-metadata JSON: ${msg}`);
|
|
54
|
+
}
|
|
55
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
56
|
+
throw new ValidationError("--signal-metadata must be a JSON object.");
|
|
57
|
+
}
|
|
58
|
+
return parsed;
|
|
59
|
+
}
|
|
60
|
+
async function formatActivity(a) {
|
|
61
|
+
const session = await a.agentSession;
|
|
62
|
+
return {
|
|
63
|
+
id: a.id,
|
|
64
|
+
sessionId: session?.id ?? null,
|
|
65
|
+
signal: a.signal ?? null,
|
|
66
|
+
ephemeral: a.ephemeral ?? null,
|
|
67
|
+
content: a.content,
|
|
68
|
+
createdAt: a.createdAt,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function setupAgentActivitiesCommand(program) {
|
|
72
|
+
const activities = program
|
|
73
|
+
.command("agent-activities")
|
|
74
|
+
.description("Manage Linear agent activities (thought / action / elicitation / response / error)");
|
|
75
|
+
activities
|
|
76
|
+
.command("list <sessionId>")
|
|
77
|
+
.description("List activities on an agent session")
|
|
78
|
+
.option("--limit <n>", "Max results", "100")
|
|
79
|
+
.action(handleAsyncCommand(async (sessionId, opts) => {
|
|
80
|
+
const client = await getClient();
|
|
81
|
+
const session = await client.agentSession(sessionId);
|
|
82
|
+
const conn = await session.activities({ first: parseLimit(opts.limit, 100) });
|
|
83
|
+
const items = await Promise.all(conn.nodes.map(formatActivity));
|
|
84
|
+
outputSuccess({ activities: items, count: items.length });
|
|
85
|
+
}));
|
|
86
|
+
activities
|
|
87
|
+
.command("get <id>")
|
|
88
|
+
.description("Get a single agent activity")
|
|
89
|
+
.action(handleAsyncCommand(async (id) => {
|
|
90
|
+
const client = await getClient();
|
|
91
|
+
const a = await client.agentActivity(id);
|
|
92
|
+
outputSuccess(await formatActivity(a));
|
|
93
|
+
}));
|
|
94
|
+
activities
|
|
95
|
+
.command("create <sessionId>")
|
|
96
|
+
.description("Emit an activity into an agent session")
|
|
97
|
+
.requiredOption("--type <type>", `One of: ${VALID_TYPES.join(", ")}`)
|
|
98
|
+
.option("--body <text>", "Body text (required for thought/elicitation/response/error)")
|
|
99
|
+
.option("--action <name>", "Action name (required for type=action)")
|
|
100
|
+
.option("--parameter <text>", "Action parameter (free-form)")
|
|
101
|
+
.option("--result <json>", "Action result (JSON string)")
|
|
102
|
+
.option("--signal <signal>", "elicitation only: select | auth | continue | stop")
|
|
103
|
+
.option("--signal-metadata <jsonFile>", "Path to JSON metadata file for signal")
|
|
104
|
+
.option("--ephemeral", "Activity disappears after the next one")
|
|
105
|
+
.action(handleAsyncCommand(async (sessionId, opts) => {
|
|
106
|
+
const type = String(opts.type);
|
|
107
|
+
if (!VALID_TYPES.includes(type)) {
|
|
108
|
+
throw new ValidationError(`Invalid --type "${type}". Must be one of: ${VALID_TYPES.join(", ")}.`);
|
|
109
|
+
}
|
|
110
|
+
if (opts.signal && type !== "elicitation") {
|
|
111
|
+
throw new ValidationError("--signal is only valid with --type elicitation.");
|
|
112
|
+
}
|
|
113
|
+
const content = buildContent(type, typeof opts.body === "string" ? opts.body : "", typeof opts.action === "string" ? opts.action : undefined, typeof opts.parameter === "string" ? opts.parameter : undefined, typeof opts.result === "string" ? opts.result : undefined);
|
|
114
|
+
const input = { agentSessionId: sessionId, content };
|
|
115
|
+
if (opts.ephemeral)
|
|
116
|
+
input.ephemeral = true;
|
|
117
|
+
if (opts.signal) {
|
|
118
|
+
const sig = String(opts.signal).toLowerCase();
|
|
119
|
+
if (sig === "select")
|
|
120
|
+
input.signal = AgentActivitySignal.Select;
|
|
121
|
+
else if (sig === "auth")
|
|
122
|
+
input.signal = AgentActivitySignal.Auth;
|
|
123
|
+
else if (sig === "continue")
|
|
124
|
+
input.signal = AgentActivitySignal.Continue;
|
|
125
|
+
else if (sig === "stop")
|
|
126
|
+
input.signal = AgentActivitySignal.Stop;
|
|
127
|
+
else
|
|
128
|
+
throw new ValidationError(`Invalid --signal "${opts.signal}". Use select, auth, continue, or stop.`);
|
|
129
|
+
}
|
|
130
|
+
if (typeof opts.signalMetadata === "string") {
|
|
131
|
+
input.signalMetadata = readSignalMetadata(opts.signalMetadata);
|
|
132
|
+
}
|
|
133
|
+
const client = await getClient();
|
|
134
|
+
const payload = await client.createAgentActivity(input);
|
|
135
|
+
if (!payload.success)
|
|
136
|
+
throw new CliError("Failed to create agent activity");
|
|
137
|
+
const activity = await payload.agentActivity;
|
|
138
|
+
outputSuccess({
|
|
139
|
+
created: true,
|
|
140
|
+
activity: activity ? await formatActivity(activity) : null,
|
|
141
|
+
});
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=agent-activities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-activities.js","sourceRoot":"","sources":["../../src/commands/agent-activities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-sessions.d.ts","sourceRoot":"","sources":["../../src/commands/agent-sessions.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgHhE"}
|