@proletariat/cli 0.3.104 → 0.3.109

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 (227) hide show
  1. package/dist/commands/agent/cleanup.js +13 -1
  2. package/dist/commands/agent/cleanup.js.map +1 -1
  3. package/dist/commands/claude/index.js +2 -2
  4. package/dist/commands/claude/index.js.map +1 -1
  5. package/dist/commands/feedback/list.js +4 -9
  6. package/dist/commands/feedback/list.js.map +1 -1
  7. package/dist/commands/feedback/submit.js +4 -9
  8. package/dist/commands/feedback/submit.js.map +1 -1
  9. package/dist/commands/feedback/view.js +4 -9
  10. package/dist/commands/feedback/view.js.map +1 -1
  11. package/dist/commands/gc.d.ts +1 -0
  12. package/dist/commands/gc.js +34 -1
  13. package/dist/commands/gc.js.map +1 -1
  14. package/dist/commands/notify/connect.d.ts +34 -0
  15. package/dist/commands/notify/connect.js +166 -0
  16. package/dist/commands/notify/connect.js.map +1 -0
  17. package/dist/commands/notify/disconnect.d.ts +16 -0
  18. package/dist/commands/notify/disconnect.js +45 -0
  19. package/dist/commands/notify/disconnect.js.map +1 -0
  20. package/dist/commands/notify/list.d.ts +15 -0
  21. package/dist/commands/notify/list.js +101 -0
  22. package/dist/commands/notify/list.js.map +1 -0
  23. package/dist/commands/notify/rules/add.d.ts +26 -0
  24. package/dist/commands/notify/rules/add.js +95 -0
  25. package/dist/commands/notify/rules/add.js.map +1 -0
  26. package/dist/commands/notify/rules/list.d.ts +14 -0
  27. package/dist/commands/notify/rules/list.js +82 -0
  28. package/dist/commands/notify/rules/list.js.map +1 -0
  29. package/dist/commands/notify/rules/remove.d.ts +16 -0
  30. package/dist/commands/notify/rules/remove.js +44 -0
  31. package/dist/commands/notify/rules/remove.js.map +1 -0
  32. package/dist/commands/notify/test.d.ts +16 -0
  33. package/dist/commands/notify/test.js +63 -0
  34. package/dist/commands/notify/test.js.map +1 -0
  35. package/dist/commands/orchestrate/index.js +11 -6
  36. package/dist/commands/orchestrate/index.js.map +1 -1
  37. package/dist/commands/orchestrate/machine.d.ts +29 -0
  38. package/dist/commands/orchestrate/machine.js +230 -0
  39. package/dist/commands/orchestrate/machine.js.map +1 -0
  40. package/dist/commands/pr/checks.js +4 -8
  41. package/dist/commands/pr/checks.js.map +1 -1
  42. package/dist/commands/pr/close.js +4 -8
  43. package/dist/commands/pr/close.js.map +1 -1
  44. package/dist/commands/pr/create.js +4 -8
  45. package/dist/commands/pr/create.js.map +1 -1
  46. package/dist/commands/pr/index.js +1 -1
  47. package/dist/commands/pr/index.js.map +1 -1
  48. package/dist/commands/pr/link.js +4 -8
  49. package/dist/commands/pr/link.js.map +1 -1
  50. package/dist/commands/pr/list.js +5 -9
  51. package/dist/commands/pr/list.js.map +1 -1
  52. package/dist/commands/pr/merge.d.ts +5 -0
  53. package/dist/commands/pr/merge.js +35 -11
  54. package/dist/commands/pr/merge.js.map +1 -1
  55. package/dist/commands/pr/status.js +5 -4
  56. package/dist/commands/pr/status.js.map +1 -1
  57. package/dist/commands/qa/index.js +2 -2
  58. package/dist/commands/qa/index.js.map +1 -1
  59. package/dist/commands/repo/create.js +4 -8
  60. package/dist/commands/repo/create.js.map +1 -1
  61. package/dist/commands/session/list.js +81 -41
  62. package/dist/commands/session/list.js.map +1 -1
  63. package/dist/commands/session/poke.d.ts +1 -11
  64. package/dist/commands/session/poke.js +20 -78
  65. package/dist/commands/session/poke.js.map +1 -1
  66. package/dist/commands/session/prune.js +3 -0
  67. package/dist/commands/session/prune.js.map +1 -1
  68. package/dist/commands/ticket/move.d.ts +12 -0
  69. package/dist/commands/ticket/move.js +75 -2
  70. package/dist/commands/ticket/move.js.map +1 -1
  71. package/dist/commands/work/drop.js +2 -2
  72. package/dist/commands/work/drop.js.map +1 -1
  73. package/dist/commands/work/ready.js +3 -3
  74. package/dist/commands/work/ready.js.map +1 -1
  75. package/dist/commands/work/rebase.js +4 -8
  76. package/dist/commands/work/rebase.js.map +1 -1
  77. package/dist/commands/work/run.d.ts +58 -0
  78. package/dist/commands/work/run.js +411 -0
  79. package/dist/commands/work/run.js.map +1 -0
  80. package/dist/commands/work/ship.d.ts +6 -0
  81. package/dist/commands/work/ship.js +93 -51
  82. package/dist/commands/work/ship.js.map +1 -1
  83. package/dist/commands/work/start.d.ts +1 -0
  84. package/dist/commands/work/start.js +127 -13
  85. package/dist/commands/work/start.js.map +1 -1
  86. package/dist/lib/agents/commands.d.ts +6 -0
  87. package/dist/lib/agents/commands.js +55 -2
  88. package/dist/lib/agents/commands.js.map +1 -1
  89. package/dist/lib/database/credential-store.js +2 -3
  90. package/dist/lib/database/credential-store.js.map +1 -1
  91. package/dist/lib/database/db-safety.d.ts +25 -0
  92. package/dist/lib/database/db-safety.js +35 -0
  93. package/dist/lib/database/db-safety.js.map +1 -1
  94. package/dist/lib/database/driver.js +6 -12
  95. package/dist/lib/database/driver.js.map +1 -1
  96. package/dist/lib/database/drizzle-schema.d.ts +3 -3
  97. package/dist/lib/database/drizzle.js +3 -3
  98. package/dist/lib/database/drizzle.js.map +1 -1
  99. package/dist/lib/database/index.d.ts +1 -1
  100. package/dist/lib/database/index.js +1 -1
  101. package/dist/lib/database/index.js.map +1 -1
  102. package/dist/lib/database/migrations/0021_notification_system.d.ts +2 -0
  103. package/dist/lib/database/migrations/0021_notification_system.js +39 -0
  104. package/dist/lib/database/migrations/0021_notification_system.js.map +1 -0
  105. package/dist/lib/database/migrations/0022_hook_mode_tiers.d.ts +11 -0
  106. package/dist/lib/database/migrations/0022_hook_mode_tiers.js +53 -0
  107. package/dist/lib/database/migrations/0022_hook_mode_tiers.js.map +1 -0
  108. package/dist/lib/database/migrations/index.js +4 -0
  109. package/dist/lib/database/migrations/index.js.map +1 -1
  110. package/dist/lib/database/pmo-bootstrap.js +6 -2
  111. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  112. package/dist/lib/database/workspace.js +5 -13
  113. package/dist/lib/database/workspace.js.map +1 -1
  114. package/dist/lib/events/emitting-runner.js +10 -0
  115. package/dist/lib/events/emitting-runner.js.map +1 -1
  116. package/dist/lib/execution/cc-version.d.ts +62 -0
  117. package/dist/lib/execution/cc-version.js +103 -0
  118. package/dist/lib/execution/cc-version.js.map +1 -0
  119. package/dist/lib/execution/devcontainer.js +2 -1
  120. package/dist/lib/execution/devcontainer.js.map +1 -1
  121. package/dist/lib/execution/runners/devcontainer.js +4 -1
  122. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  123. package/dist/lib/execution/runners/docker-management.js +10 -46
  124. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  125. package/dist/lib/execution/runners/orchestrator.js +13 -39
  126. package/dist/lib/execution/runners/orchestrator.js.map +1 -1
  127. package/dist/lib/execution/session-utils.d.ts +88 -1
  128. package/dist/lib/execution/session-utils.js +120 -46
  129. package/dist/lib/execution/session-utils.js.map +1 -1
  130. package/dist/lib/execution/storage.js +20 -2
  131. package/dist/lib/execution/storage.js.map +1 -1
  132. package/dist/lib/flags/resolver.d.ts +8 -1
  133. package/dist/lib/flags/resolver.js +35 -2
  134. package/dist/lib/flags/resolver.js.map +1 -1
  135. package/dist/lib/gc/cascade.d.ts +99 -0
  136. package/dist/lib/gc/cascade.js +357 -0
  137. package/dist/lib/gc/cascade.js.map +1 -0
  138. package/dist/lib/gc/config.d.ts +69 -0
  139. package/dist/lib/gc/config.js +134 -0
  140. package/dist/lib/gc/config.js.map +1 -0
  141. package/dist/lib/gc/index.d.ts +36 -0
  142. package/dist/lib/gc/index.js +209 -1
  143. package/dist/lib/gc/index.js.map +1 -1
  144. package/dist/lib/init/index.js +10 -1
  145. package/dist/lib/init/index.js.map +1 -1
  146. package/dist/lib/machine-db.d.ts +144 -0
  147. package/dist/lib/machine-db.js +338 -0
  148. package/dist/lib/machine-db.js.map +1 -0
  149. package/dist/lib/machine-orchestrator.d.ts +35 -0
  150. package/dist/lib/machine-orchestrator.js +139 -0
  151. package/dist/lib/machine-orchestrator.js.map +1 -0
  152. package/dist/lib/notifications/dispatcher.d.ts +29 -0
  153. package/dist/lib/notifications/dispatcher.js +281 -0
  154. package/dist/lib/notifications/dispatcher.js.map +1 -0
  155. package/dist/lib/notifications/index.d.ts +13 -0
  156. package/dist/lib/notifications/index.js +18 -0
  157. package/dist/lib/notifications/index.js.map +1 -0
  158. package/dist/lib/notifications/manager.d.ts +46 -0
  159. package/dist/lib/notifications/manager.js +200 -0
  160. package/dist/lib/notifications/manager.js.map +1 -0
  161. package/dist/lib/notifications/storage.d.ts +60 -0
  162. package/dist/lib/notifications/storage.js +182 -0
  163. package/dist/lib/notifications/storage.js.map +1 -0
  164. package/dist/lib/notifications/types.d.ts +126 -0
  165. package/dist/lib/notifications/types.js +16 -0
  166. package/dist/lib/notifications/types.js.map +1 -0
  167. package/dist/lib/orchestrate/actions.js +182 -3
  168. package/dist/lib/orchestrate/actions.js.map +1 -1
  169. package/dist/lib/orchestrate/config-loader.js +9 -35
  170. package/dist/lib/orchestrate/config-loader.js.map +1 -1
  171. package/dist/lib/orchestrate/engine.d.ts +53 -1
  172. package/dist/lib/orchestrate/engine.js +74 -3
  173. package/dist/lib/orchestrate/engine.js.map +1 -1
  174. package/dist/lib/orchestrate/escalation.d.ts +87 -0
  175. package/dist/lib/orchestrate/escalation.js +63 -0
  176. package/dist/lib/orchestrate/escalation.js.map +1 -0
  177. package/dist/lib/orchestrate/index.d.ts +2 -0
  178. package/dist/lib/orchestrate/index.js +1 -0
  179. package/dist/lib/orchestrate/index.js.map +1 -1
  180. package/dist/lib/orchestrate/llm-agent.d.ts +101 -0
  181. package/dist/lib/orchestrate/llm-agent.js +295 -0
  182. package/dist/lib/orchestrate/llm-agent.js.map +1 -0
  183. package/dist/lib/orchestrate/presets.d.ts +4 -3
  184. package/dist/lib/orchestrate/presets.js +13 -8
  185. package/dist/lib/orchestrate/presets.js.map +1 -1
  186. package/dist/lib/orchestrate/types.d.ts +7 -1
  187. package/dist/lib/orchestrate/types.js +1 -0
  188. package/dist/lib/orchestrate/types.js.map +1 -1
  189. package/dist/lib/pmo/base-command.js +1 -1
  190. package/dist/lib/pmo/base-command.js.map +1 -1
  191. package/dist/lib/pmo/find-pmo.d.ts +8 -0
  192. package/dist/lib/pmo/find-pmo.js +63 -2
  193. package/dist/lib/pmo/find-pmo.js.map +1 -1
  194. package/dist/lib/pmo/index.d.ts +1 -1
  195. package/dist/lib/pmo/index.js +1 -1
  196. package/dist/lib/pmo/index.js.map +1 -1
  197. package/dist/lib/pmo/pmo-context.js +1 -1
  198. package/dist/lib/pmo/pmo-context.js.map +1 -1
  199. package/dist/lib/pmo/storage/index.js +2 -1
  200. package/dist/lib/pmo/storage/index.js.map +1 -1
  201. package/dist/lib/pr/index.d.ts +32 -0
  202. package/dist/lib/pr/index.js +45 -0
  203. package/dist/lib/pr/index.js.map +1 -1
  204. package/dist/lib/registry/index.js +0 -1
  205. package/dist/lib/registry/index.js.map +1 -1
  206. package/dist/lib/signal-handler.d.ts +8 -0
  207. package/dist/lib/signal-handler.js +33 -0
  208. package/dist/lib/signal-handler.js.map +1 -1
  209. package/dist/lib/themes.js +8 -1
  210. package/dist/lib/themes.js.map +1 -1
  211. package/dist/lib/work-lifecycle/container-cleanup-hook.d.ts +17 -7
  212. package/dist/lib/work-lifecycle/container-cleanup-hook.js +64 -11
  213. package/dist/lib/work-lifecycle/container-cleanup-hook.js.map +1 -1
  214. package/dist/lib/work-lifecycle/hooks/executor.d.ts +22 -2
  215. package/dist/lib/work-lifecycle/hooks/executor.js +46 -8
  216. package/dist/lib/work-lifecycle/hooks/executor.js.map +1 -1
  217. package/dist/lib/work-lifecycle/hooks/manager.d.ts +62 -3
  218. package/dist/lib/work-lifecycle/hooks/manager.js +285 -4
  219. package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
  220. package/dist/lib/work-lifecycle/hooks/types.d.ts +36 -5
  221. package/dist/lib/work-lifecycle/hooks/types.js +1 -1
  222. package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
  223. package/dist/lib/workspace-resolution.d.ts +73 -0
  224. package/dist/lib/workspace-resolution.js +188 -0
  225. package/dist/lib/workspace-resolution.js.map +1 -0
  226. package/oclif.manifest.json +1309 -621
  227. package/package.json +1 -1
@@ -0,0 +1,166 @@
1
+ /**
2
+ * prlt notify connect — Connect a notification provider.
3
+ *
4
+ * Configures a notification channel (Slack, Email, SMS, etc.)
5
+ * and stores it in the workspace database.
6
+ *
7
+ * Examples:
8
+ * prlt notify connect slack --webhook-url https://hooks.slack.com/...
9
+ * prlt notify connect email --provider sendgrid --api-key sk-... --from alerts@example.com --to team@example.com
10
+ * prlt notify connect sms --account-sid AC... --auth-token ... --from +1234567890 --to +0987654321
11
+ */
12
+ import { Args, Flags } from '@oclif/core';
13
+ import { RuntimeCommand, machineOutputFlags } from '../../lib/runtime-command.js';
14
+ import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
15
+ import { styles } from '../../lib/styles.js';
16
+ import { NotificationStorage, NOTIFICATION_PROVIDER_TYPES } from '../../lib/notifications/index.js';
17
+ export default class NotifyConnect extends RuntimeCommand {
18
+ static description = 'Connect a notification provider (Slack, Email, SMS, etc.)';
19
+ static examples = [
20
+ '<%= config.bin %> notify connect slack --webhook-url https://hooks.slack.com/...',
21
+ '<%= config.bin %> notify connect email --provider sendgrid --api-key sk-... --from alerts@co.com --to team@co.com',
22
+ '<%= config.bin %> notify connect sms --account-sid AC... --auth-token ... --from +1234567890 --to +0987654321',
23
+ '<%= config.bin %> notify connect terminal',
24
+ '<%= config.bin %> notify connect slack --name my-slack --webhook-url https://...',
25
+ ];
26
+ static args = {
27
+ type: Args.string({
28
+ description: 'Provider type',
29
+ required: true,
30
+ options: NOTIFICATION_PROVIDER_TYPES,
31
+ }),
32
+ };
33
+ static flags = {
34
+ ...machineOutputFlags,
35
+ name: Flags.string({
36
+ description: 'Provider name (defaults to type)',
37
+ }),
38
+ // Slack
39
+ 'webhook-url': Flags.string({
40
+ description: 'Slack webhook URL',
41
+ }),
42
+ channel: Flags.string({
43
+ description: 'Slack channel override',
44
+ }),
45
+ username: Flags.string({
46
+ description: 'Slack username override',
47
+ }),
48
+ // Email
49
+ provider: Flags.string({
50
+ description: 'Email provider (sendgrid or ses)',
51
+ options: ['sendgrid', 'ses'],
52
+ }),
53
+ 'api-key': Flags.string({
54
+ description: 'API key for email/SMS provider',
55
+ }),
56
+ from: Flags.string({
57
+ description: 'Sender address (email or phone)',
58
+ }),
59
+ to: Flags.string({
60
+ description: 'Recipient(s), comma-separated',
61
+ multiple: true,
62
+ }),
63
+ // SMS
64
+ 'account-sid': Flags.string({
65
+ description: 'Twilio account SID',
66
+ }),
67
+ 'auth-token': Flags.string({
68
+ description: 'Twilio auth token',
69
+ }),
70
+ };
71
+ async execute() {
72
+ const { args, flags } = await this.parse(NotifyConnect);
73
+ const jsonMode = shouldOutputJson(flags);
74
+ const db = this.requireDB();
75
+ const providerType = args.type;
76
+ const providerName = flags.name || providerType;
77
+ // Build config based on type
78
+ let config;
79
+ switch (providerType) {
80
+ case 'slack': {
81
+ if (!flags['webhook-url']) {
82
+ if (jsonMode) {
83
+ outputErrorAsJson('MISSING_WEBHOOK_URL', 'Slack requires --webhook-url', createMetadata('notify connect', flags));
84
+ return;
85
+ }
86
+ this.error('Slack requires --webhook-url');
87
+ }
88
+ config = {
89
+ webhook_url: flags['webhook-url'],
90
+ ...(flags.channel ? { channel: flags.channel } : {}),
91
+ ...(flags.username ? { username: flags.username } : {}),
92
+ };
93
+ break;
94
+ }
95
+ case 'email': {
96
+ if (!flags['api-key'] || !flags.from || !flags.to?.length) {
97
+ if (jsonMode) {
98
+ outputErrorAsJson('MISSING_EMAIL_CONFIG', 'Email requires --api-key, --from, and --to', createMetadata('notify connect', flags));
99
+ return;
100
+ }
101
+ this.error('Email requires --api-key, --from, and --to');
102
+ }
103
+ config = {
104
+ provider: flags.provider || 'sendgrid',
105
+ api_key: flags['api-key'],
106
+ from: flags.from,
107
+ to: flags.to,
108
+ };
109
+ break;
110
+ }
111
+ case 'sms': {
112
+ if (!flags['account-sid'] || !flags['auth-token'] || !flags.from || !flags.to?.length) {
113
+ if (jsonMode) {
114
+ outputErrorAsJson('MISSING_SMS_CONFIG', 'SMS requires --account-sid, --auth-token, --from, and --to', createMetadata('notify connect', flags));
115
+ return;
116
+ }
117
+ this.error('SMS requires --account-sid, --auth-token, --from, and --to');
118
+ }
119
+ config = {
120
+ account_sid: flags['account-sid'],
121
+ auth_token: flags['auth-token'],
122
+ from: flags.from,
123
+ to: flags.to,
124
+ };
125
+ break;
126
+ }
127
+ case 'terminal': {
128
+ config = {};
129
+ break;
130
+ }
131
+ case 'browser_push': {
132
+ config = {};
133
+ break;
134
+ }
135
+ default: {
136
+ if (jsonMode) {
137
+ outputErrorAsJson('INVALID_TYPE', `Unknown provider type: ${providerType}`, createMetadata('notify connect', flags));
138
+ return;
139
+ }
140
+ this.error(`Unknown provider type: ${providerType}`);
141
+ }
142
+ }
143
+ const storage = new NotificationStorage(db);
144
+ // Check for existing provider with same name
145
+ const existing = storage.getProviderByName(providerName);
146
+ if (existing) {
147
+ // Update existing provider
148
+ storage.updateProvider(existing.id, { config, enabled: true });
149
+ if (jsonMode) {
150
+ outputSuccessAsJson({ provider: { ...existing, config, enabled: true }, updated: true }, createMetadata('notify connect', flags));
151
+ return;
152
+ }
153
+ this.log(styles.success(`Updated notification provider "${providerName}" (${providerType})`));
154
+ return;
155
+ }
156
+ // Create new provider
157
+ const provider = storage.createProvider({ type: providerType, name: providerName, config });
158
+ if (jsonMode) {
159
+ outputSuccessAsJson({ provider: { id: provider.id, type: provider.type, name: provider.name, enabled: provider.enabled }, created: true }, createMetadata('notify connect', flags));
160
+ return;
161
+ }
162
+ this.log(styles.success(`Connected notification provider "${providerName}" (${providerType})`));
163
+ this.log(styles.muted(` Test it with: prlt notify test ${providerName}`));
164
+ }
165
+ }
166
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/commands/notify/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * prlt notify disconnect — Remove a notification provider.
3
+ */
4
+ import { RuntimeCommand } from '../../lib/runtime-command.js';
5
+ export default class NotifyDisconnect extends RuntimeCommand {
6
+ static description: string;
7
+ static examples: string[];
8
+ static args: {
9
+ name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ static flags: {
12
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ execute(): Promise<void>;
16
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * prlt notify disconnect — Remove a notification provider.
3
+ */
4
+ import { Args } from '@oclif/core';
5
+ import { RuntimeCommand, machineOutputFlags } from '../../lib/runtime-command.js';
6
+ import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
7
+ import { styles } from '../../lib/styles.js';
8
+ import { NotificationStorage } from '../../lib/notifications/index.js';
9
+ export default class NotifyDisconnect extends RuntimeCommand {
10
+ static description = 'Remove a notification provider';
11
+ static examples = [
12
+ '<%= config.bin %> notify disconnect slack',
13
+ '<%= config.bin %> notify disconnect my-slack',
14
+ ];
15
+ static args = {
16
+ name: Args.string({
17
+ description: 'Provider name to disconnect',
18
+ required: true,
19
+ }),
20
+ };
21
+ static flags = {
22
+ ...machineOutputFlags,
23
+ };
24
+ async execute() {
25
+ const { args, flags } = await this.parse(NotifyDisconnect);
26
+ const jsonMode = shouldOutputJson(flags);
27
+ const db = this.requireDB();
28
+ const storage = new NotificationStorage(db);
29
+ const provider = storage.getProviderByName(args.name);
30
+ if (!provider) {
31
+ if (jsonMode) {
32
+ outputErrorAsJson('PROVIDER_NOT_FOUND', `No provider named "${args.name}"`, createMetadata('notify disconnect', flags));
33
+ return;
34
+ }
35
+ this.error(`No provider named "${args.name}"`);
36
+ }
37
+ storage.deleteProvider(provider.id);
38
+ if (jsonMode) {
39
+ outputSuccessAsJson({ deleted: { id: provider.id, name: provider.name, type: provider.type } }, createMetadata('notify disconnect', flags));
40
+ return;
41
+ }
42
+ this.log(styles.success(`Disconnected notification provider "${provider.name}" (${provider.type})`));
43
+ }
44
+ }
45
+ //# sourceMappingURL=disconnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disconnect.js","sourceRoot":"","sources":["../../../src/commands/notify/disconnect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjF,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,cAAc;IAC1D,MAAM,CAAC,WAAW,GAAG,gCAAgC,CAAA;IAErD,MAAM,CAAC,QAAQ,GAAG;QAChB,2CAA2C;QAC3C,8CAA8C;KAC/C,CAAA;IAED,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IAED,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,kBAAkB;KACtB,CAAA;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,oBAAoB,EAAE,sBAAsB,IAAI,CAAC,IAAI,GAAG,EAAE,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAA;gBACvH,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAEnC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CACjB,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAC1E,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAC3C,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACtG,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * prlt notify list — List configured notification providers and rules.
3
+ */
4
+ import { RuntimeCommand } from '../../lib/runtime-command.js';
5
+ export default class NotifyList extends RuntimeCommand {
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ rules: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ execute(): Promise<void>;
15
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * prlt notify list — List configured notification providers and rules.
3
+ */
4
+ import { Flags } from '@oclif/core';
5
+ import { RuntimeCommand, machineOutputFlags } from '../../lib/runtime-command.js';
6
+ import { shouldOutputJson, outputSuccessAsJson, createMetadata, } from '../../lib/prompt-json.js';
7
+ import { styles } from '../../lib/styles.js';
8
+ import { NotificationStorage } from '../../lib/notifications/index.js';
9
+ export default class NotifyList extends RuntimeCommand {
10
+ static description = 'List configured notification providers and rules';
11
+ static examples = [
12
+ '<%= config.bin %> notify list',
13
+ '<%= config.bin %> notify list --rules',
14
+ '<%= config.bin %> notify list --type slack',
15
+ ];
16
+ static flags = {
17
+ ...machineOutputFlags,
18
+ type: Flags.string({
19
+ description: 'Filter providers by type',
20
+ options: ['slack', 'email', 'sms', 'terminal', 'browser_push'],
21
+ }),
22
+ rules: Flags.boolean({
23
+ description: 'Also show notification rules',
24
+ default: false,
25
+ }),
26
+ };
27
+ async execute() {
28
+ const { flags } = await this.parse(NotifyList);
29
+ const jsonMode = shouldOutputJson(flags);
30
+ const db = this.requireDB();
31
+ const storage = new NotificationStorage(db);
32
+ const providers = storage.listProviders({
33
+ type: flags.type,
34
+ });
35
+ const rules = flags.rules ? storage.listRules() : [];
36
+ if (jsonMode) {
37
+ outputSuccessAsJson({
38
+ providers: providers.map(p => ({
39
+ id: p.id,
40
+ type: p.type,
41
+ name: p.name,
42
+ enabled: p.enabled,
43
+ createdAt: p.createdAt,
44
+ })),
45
+ ...(flags.rules ? {
46
+ rules: rules.map(r => ({
47
+ id: r.id,
48
+ event: r.event,
49
+ providerId: r.providerId,
50
+ priority: r.priority,
51
+ escalationDelaySeconds: r.escalationDelaySeconds,
52
+ escalationGroup: r.escalationGroup,
53
+ enabled: r.enabled,
54
+ })),
55
+ } : {}),
56
+ count: providers.length,
57
+ }, createMetadata('notify list', flags));
58
+ return;
59
+ }
60
+ if (providers.length === 0) {
61
+ this.log(styles.info('No notification providers configured.'));
62
+ this.log(styles.muted(' Connect one with: prlt notify connect slack --webhook-url ...'));
63
+ return;
64
+ }
65
+ this.log(styles.title('Notification Providers'));
66
+ this.log('');
67
+ for (const provider of providers) {
68
+ const status = provider.enabled ? styles.success('enabled') : styles.muted('disabled');
69
+ this.log(` ${styles.emphasis(provider.name)} ${styles.muted(`(${provider.type})`)} ${status}`);
70
+ }
71
+ if (flags.rules && rules.length > 0) {
72
+ this.log('');
73
+ this.log(styles.title('Notification Rules'));
74
+ this.log('');
75
+ // Group by event
76
+ const grouped = {};
77
+ for (const rule of rules) {
78
+ if (!grouped[rule.event])
79
+ grouped[rule.event] = [];
80
+ grouped[rule.event].push(rule);
81
+ }
82
+ for (const [event, eventRules] of Object.entries(grouped)) {
83
+ this.log(` ${styles.emphasis(event)}`);
84
+ for (const rule of eventRules) {
85
+ const provider = providers.find(p => p.id === rule.providerId);
86
+ const providerLabel = provider ? `${provider.name} (${provider.type})` : rule.providerId;
87
+ const delay = rule.escalationDelaySeconds
88
+ ? styles.muted(` after ${rule.escalationDelaySeconds}s`)
89
+ : '';
90
+ const group = rule.escalationGroup
91
+ ? styles.muted(` [escalation: ${rule.escalationGroup}]`)
92
+ : '';
93
+ this.log(` -> ${styles.code(providerLabel)}${delay}${group}`);
94
+ }
95
+ this.log('');
96
+ }
97
+ }
98
+ this.log(styles.muted(` ${providers.length} provider${providers.length === 1 ? '' : 's'} configured`));
99
+ }
100
+ }
101
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/notify/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * prlt notify rules add — Add a notification rule mapping an event to a provider.
3
+ *
4
+ * Examples:
5
+ * prlt notify rules add on_agent_died --provider slack
6
+ * prlt notify rules add on_ci_failed --provider email
7
+ * prlt notify rules add on_human_approval_needed --provider slack --escalation-group approval --delay 0
8
+ * prlt notify rules add on_human_approval_needed --provider sms --escalation-group approval --delay 600
9
+ */
10
+ import { RuntimeCommand } from '../../../lib/runtime-command.js';
11
+ export default class NotifyRulesAdd extends RuntimeCommand {
12
+ static description: string;
13
+ static examples: string[];
14
+ static args: {
15
+ event: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
16
+ };
17
+ static flags: {
18
+ provider: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
19
+ priority: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
20
+ delay: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'escalation-group': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
24
+ };
25
+ execute(): Promise<void>;
26
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * prlt notify rules add — Add a notification rule mapping an event to a provider.
3
+ *
4
+ * Examples:
5
+ * prlt notify rules add on_agent_died --provider slack
6
+ * prlt notify rules add on_ci_failed --provider email
7
+ * prlt notify rules add on_human_approval_needed --provider slack --escalation-group approval --delay 0
8
+ * prlt notify rules add on_human_approval_needed --provider sms --escalation-group approval --delay 600
9
+ */
10
+ import { Args, Flags } from '@oclif/core';
11
+ import { RuntimeCommand, machineOutputFlags } from '../../../lib/runtime-command.js';
12
+ import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../../lib/prompt-json.js';
13
+ import { styles } from '../../../lib/styles.js';
14
+ import { NotificationStorage } from '../../../lib/notifications/index.js';
15
+ import { ORCHESTRATE_EVENTS } from '../../../lib/orchestrate/types.js';
16
+ export default class NotifyRulesAdd extends RuntimeCommand {
17
+ static description = 'Add a notification rule for an event';
18
+ static examples = [
19
+ '<%= config.bin %> notify rules add on_agent_died --provider slack',
20
+ '<%= config.bin %> notify rules add on_ci_failed --provider email --priority 1',
21
+ '<%= config.bin %> notify rules add on_agent_died --provider sms --escalation-group agent-down --delay 600',
22
+ ];
23
+ static args = {
24
+ event: Args.string({
25
+ description: 'Event to trigger notification',
26
+ required: true,
27
+ }),
28
+ };
29
+ static flags = {
30
+ ...machineOutputFlags,
31
+ provider: Flags.string({
32
+ description: 'Provider name to notify',
33
+ required: true,
34
+ }),
35
+ priority: Flags.integer({
36
+ description: 'Priority (lower = higher priority)',
37
+ default: 0,
38
+ }),
39
+ delay: Flags.integer({
40
+ description: 'Escalation delay in seconds (0 = immediate)',
41
+ }),
42
+ 'escalation-group': Flags.string({
43
+ description: 'Escalation group name (rules in same group escalate sequentially)',
44
+ }),
45
+ };
46
+ async execute() {
47
+ const { args, flags } = await this.parse(NotifyRulesAdd);
48
+ const jsonMode = shouldOutputJson(flags);
49
+ const db = this.requireDB();
50
+ const storage = new NotificationStorage(db);
51
+ // Validate event name
52
+ const validEvents = ORCHESTRATE_EVENTS;
53
+ if (!validEvents.includes(args.event)) {
54
+ if (jsonMode) {
55
+ outputErrorAsJson('INVALID_EVENT', `Unknown event: ${args.event}. Valid events: ${validEvents.join(', ')}`, createMetadata('notify rules add', flags));
56
+ return;
57
+ }
58
+ this.error(`Unknown event: ${args.event}.\nValid events: ${validEvents.join(', ')}`);
59
+ }
60
+ // Resolve provider
61
+ const provider = storage.getProviderByName(flags.provider);
62
+ if (!provider) {
63
+ if (jsonMode) {
64
+ outputErrorAsJson('PROVIDER_NOT_FOUND', `No provider named "${flags.provider}"`, createMetadata('notify rules add', flags));
65
+ return;
66
+ }
67
+ this.error(`No provider named "${flags.provider}". Run "prlt notify list" to see configured providers.`);
68
+ }
69
+ const rule = storage.createRule({
70
+ event: args.event,
71
+ providerId: provider.id,
72
+ priority: flags.priority,
73
+ escalationDelaySeconds: flags.delay ?? null,
74
+ escalationGroup: flags['escalation-group'] ?? null,
75
+ });
76
+ if (jsonMode) {
77
+ outputSuccessAsJson({
78
+ rule: {
79
+ id: rule.id,
80
+ event: rule.event,
81
+ providerId: rule.providerId,
82
+ providerName: provider.name,
83
+ priority: rule.priority,
84
+ escalationDelaySeconds: rule.escalationDelaySeconds,
85
+ escalationGroup: rule.escalationGroup,
86
+ },
87
+ }, createMetadata('notify rules add', flags));
88
+ return;
89
+ }
90
+ const delayStr = rule.escalationDelaySeconds !== null ? ` (delay: ${rule.escalationDelaySeconds}s)` : '';
91
+ const groupStr = rule.escalationGroup ? ` [group: ${rule.escalationGroup}]` : '';
92
+ this.log(styles.success(`Rule added: ${args.event} -> ${provider.name} (${provider.type})${delayStr}${groupStr}`));
93
+ }
94
+ }
95
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/notify/rules/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * prlt notify rules list — List notification rules.
3
+ */
4
+ import { RuntimeCommand } from '../../../lib/runtime-command.js';
5
+ export default class NotifyRulesList extends RuntimeCommand {
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ event: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ execute(): Promise<void>;
14
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * prlt notify rules list — List notification rules.
3
+ */
4
+ import { Flags } from '@oclif/core';
5
+ import { RuntimeCommand, machineOutputFlags } from '../../../lib/runtime-command.js';
6
+ import { shouldOutputJson, outputSuccessAsJson, createMetadata, } from '../../../lib/prompt-json.js';
7
+ import { styles } from '../../../lib/styles.js';
8
+ import { NotificationStorage } from '../../../lib/notifications/index.js';
9
+ export default class NotifyRulesList extends RuntimeCommand {
10
+ static description = 'List notification rules';
11
+ static examples = [
12
+ '<%= config.bin %> notify rules list',
13
+ '<%= config.bin %> notify rules list --event on_agent_died',
14
+ ];
15
+ static flags = {
16
+ ...machineOutputFlags,
17
+ event: Flags.string({
18
+ description: 'Filter by event name',
19
+ }),
20
+ };
21
+ async execute() {
22
+ const { flags } = await this.parse(NotifyRulesList);
23
+ const jsonMode = shouldOutputJson(flags);
24
+ const db = this.requireDB();
25
+ const storage = new NotificationStorage(db);
26
+ const rules = storage.listRules({ event: flags.event });
27
+ const providers = storage.listProviders();
28
+ const providerMap = new Map(providers.map(p => [p.id, p]));
29
+ if (jsonMode) {
30
+ outputSuccessAsJson({
31
+ rules: rules.map(r => {
32
+ const p = providerMap.get(r.providerId);
33
+ return {
34
+ id: r.id,
35
+ event: r.event,
36
+ providerId: r.providerId,
37
+ providerName: p?.name,
38
+ providerType: p?.type,
39
+ priority: r.priority,
40
+ escalationDelaySeconds: r.escalationDelaySeconds,
41
+ escalationGroup: r.escalationGroup,
42
+ enabled: r.enabled,
43
+ };
44
+ }),
45
+ count: rules.length,
46
+ }, createMetadata('notify rules list', flags));
47
+ return;
48
+ }
49
+ if (rules.length === 0) {
50
+ this.log(styles.info('No notification rules configured.'));
51
+ this.log(styles.muted(' Add one with: prlt notify rules add on_agent_died --provider slack'));
52
+ return;
53
+ }
54
+ this.log(styles.title('Notification Rules'));
55
+ this.log('');
56
+ // Group by event
57
+ const grouped = {};
58
+ for (const rule of rules) {
59
+ if (!grouped[rule.event])
60
+ grouped[rule.event] = [];
61
+ grouped[rule.event].push(rule);
62
+ }
63
+ for (const [event, eventRules] of Object.entries(grouped)) {
64
+ this.log(` ${styles.emphasis(event)}`);
65
+ for (const rule of eventRules) {
66
+ const provider = providerMap.get(rule.providerId);
67
+ const providerLabel = provider ? `${provider.name} (${provider.type})` : rule.providerId;
68
+ const delay = rule.escalationDelaySeconds !== null
69
+ ? styles.muted(` after ${rule.escalationDelaySeconds}s`)
70
+ : '';
71
+ const group = rule.escalationGroup
72
+ ? styles.muted(` [${rule.escalationGroup}]`)
73
+ : '';
74
+ const status = rule.enabled ? '' : ` ${styles.muted('(disabled)')}`;
75
+ this.log(` -> ${styles.code(providerLabel)}${delay}${group}${status}`);
76
+ }
77
+ this.log('');
78
+ }
79
+ this.log(styles.muted(` ${rules.length} rule${rules.length === 1 ? '' : 's'} configured`));
80
+ }
81
+ }
82
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/notify/rules/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * prlt notify rules remove — Remove a notification rule.
3
+ */
4
+ import { RuntimeCommand } from '../../../lib/runtime-command.js';
5
+ export default class NotifyRulesRemove extends RuntimeCommand {
6
+ static description: string;
7
+ static examples: string[];
8
+ static args: {
9
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ static flags: {
12
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ execute(): Promise<void>;
16
+ }