pi-orchestrator-config 4.2.1 → 4.3.2

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 (92) hide show
  1. package/README.md +52 -61
  2. package/agents/git-expert.md +5 -1
  3. package/agents/github-expert.md +4 -1
  4. package/extensions/acpx-provider/runtime-models.ts +18 -6
  5. package/extensions/cli-provider/agents/claude.ts +3 -2
  6. package/extensions/cli-provider/agents/cursor.ts +3 -5
  7. package/extensions/cli-provider/agents/gemini.ts +3 -2
  8. package/extensions/cli-provider/discover.ts +7 -7
  9. package/extensions/cli-provider/index.ts +5 -0
  10. package/extensions/cli-provider/runtime-models.ts +18 -6
  11. package/extensions/cli-provider/session-reaper.ts +5 -7
  12. package/extensions/cli-provider/sessions.ts +4 -0
  13. package/extensions/cli-provider/shared/discover-cache.ts +17 -176
  14. package/extensions/coms/coms-p2p.ts +1719 -423
  15. package/extensions/coms/coms-shared.ts +261 -39
  16. package/extensions/coms/coms-wrapper.ts +100 -62
  17. package/extensions/coms/index.ts +8 -4
  18. package/extensions/coms/mixed-turn.ts +26 -0
  19. package/extensions/coms/probe-socket.ts +42 -0
  20. package/extensions/coms/themeMap.ts +0 -1
  21. package/extensions/image-gen/image-gen.ts +19 -1
  22. package/extensions/orchestrator/async-agents.ts +509 -85
  23. package/extensions/orchestrator/cron.ts +14 -8
  24. package/extensions/orchestrator/dreaming.ts +31 -24
  25. package/extensions/orchestrator/enforcement-helpers.ts +459 -17
  26. package/extensions/orchestrator/enforcement-rules.ts +5 -4
  27. package/extensions/orchestrator/enforcement.ts +79 -25
  28. package/extensions/orchestrator/extended-autocomplete.ts +7 -0
  29. package/extensions/orchestrator/git-helpers.ts +2 -2
  30. package/extensions/orchestrator/index.ts +23 -10
  31. package/extensions/orchestrator/markdown-transformer.ts +313 -0
  32. package/extensions/orchestrator/memory-embeddings.ts +36 -34
  33. package/extensions/orchestrator/memory-provenance.ts +29 -25
  34. package/extensions/orchestrator/memory-scoring.ts +23 -18
  35. package/extensions/orchestrator/memory-tools.ts +10 -3
  36. package/extensions/orchestrator/overlay-dashboard.ts +17 -5
  37. package/extensions/orchestrator/pi-config-review-state.ts +44 -33
  38. package/extensions/orchestrator/project-settings.ts +220 -21
  39. package/extensions/orchestrator/review-porcelain.ts +4 -0
  40. package/extensions/orchestrator/review-ui.ts +11 -5
  41. package/extensions/orchestrator/rule-placeholders.ts +384 -1
  42. package/extensions/orchestrator/rules.ts +80 -132
  43. package/extensions/orchestrator/settings-tui-helpers.ts +380 -0
  44. package/extensions/orchestrator/settings-tui-submenus.ts +647 -0
  45. package/extensions/orchestrator/settings-tui.ts +636 -0
  46. package/extensions/orchestrator/state-jsonl.ts +431 -0
  47. package/extensions/orchestrator/subagent-tool.ts +105 -50
  48. package/extensions/orchestrator/sync-limit.ts +23 -0
  49. package/extensions/orchestrator/task-lifecycle.ts +77 -67
  50. package/extensions/orchestrator/utils.ts +8 -5
  51. package/extensions/pidash/pidash.ts +193 -156
  52. package/extensions/pidiff/pidiff.ts +64 -38
  53. package/extensions/pidiff/spawn-lock.ts +62 -0
  54. package/extensions/pitasks/index.ts +430 -0
  55. package/extensions/pitasks/reminders.ts +37 -0
  56. package/extensions/pitasks/task-store.ts +467 -0
  57. package/extensions/pitasks/task-tools.ts +375 -0
  58. package/extensions/pitasks/task-widget.ts +181 -0
  59. package/extensions/pitasks/types.ts +38 -0
  60. package/extensions/providers/acpx-driver.ts +12 -2
  61. package/extensions/providers/built-in-drivers.ts +6 -6
  62. package/extensions/providers/claude-driver.ts +1 -1
  63. package/extensions/providers/cursor-cli-driver.ts +1 -1
  64. package/extensions/providers/gemini-driver.ts +1 -1
  65. package/extensions/providers/index.ts +144 -26
  66. package/extensions/providers/initialized-guard.ts +27 -0
  67. package/extensions/providers/restore-default-model.ts +596 -0
  68. package/extensions/providers/session-shutdown.ts +39 -0
  69. package/extensions/shared/coms-active.ts +23 -0
  70. package/extensions/shared/create-runtime-provider.ts +2 -0
  71. package/extensions/shared/daemon-manager.ts +0 -8
  72. package/extensions/shared/file-logger.ts +132 -25
  73. package/extensions/shared/logger.ts +50 -0
  74. package/extensions/shared/models-dev.ts +421 -0
  75. package/extensions/shared/oneshot.ts +116 -0
  76. package/extensions/shared/resolve-binary.ts +191 -0
  77. package/extensions/shared/types.ts +3 -0
  78. package/package.json +7 -2
  79. package/prompts/coderabbit-rate-limit.md +2 -0
  80. package/rules/00-orchestrator-core.md +3 -0
  81. package/rules/10-agent-routing.md +1 -1
  82. package/rules/20-code-review-loop.md +38 -16
  83. package/rules/30-prompt-templates.md +4 -0
  84. package/rules/35-memory.md +3 -3
  85. package/rules/40-critical-rules.md +3 -0
  86. package/rules/55-coms-protocol.md +84 -18
  87. package/rules/60-task-tracking.md +2 -0
  88. package/settings-keys.json +481 -20
  89. package/templates/coms-feature-manager-prompt.md +4 -6
  90. package/extensions/coms/coms-net-server.ts +0 -1642
  91. package/extensions/coms/coms-net-wrapper.ts +0 -521
  92. package/extensions/coms/coms-net.ts +0 -1589
@@ -1,102 +1,563 @@
1
1
  {
2
2
  "dco": {
3
+ "description": "Auto-inject --signoff flag for DCO compliance on git commit",
3
4
  "type": "bool",
4
5
  "env": "PI_DCO",
5
- "default": false
6
+ "default": false,
7
+ "group": "Git"
6
8
  },
7
9
  "commit_trailer": {
10
+ "description": "Commit trailer type (e.g. Assisted-by, Co-authored-by) \u2014 comma-separated for random selection",
8
11
  "type": "bool_or_string",
9
12
  "env": "PI_COMMIT_TRAILER",
10
- "default": false
13
+ "default": false,
14
+ "group": "Git"
11
15
  },
12
16
  "use_worktrees": {
17
+ "description": "Block git checkout/switch \u2014 force git worktree for branch operations",
13
18
  "type": "bool",
14
19
  "env": "PI_USE_WORKTREES",
15
- "default": false
20
+ "default": false,
21
+ "group": "Git"
16
22
  },
17
23
  "allow_push_to_protected_branches": {
24
+ "description": "Allow commits and pushes to protected branches (main, master, etc.)",
18
25
  "type": "bool",
19
26
  "env": "PI_ALLOW_PUSH_TO_PROTECTED_BRANCHES",
20
- "default": false
27
+ "default": false,
28
+ "group": "Git"
21
29
  },
22
30
  "comment_signature": {
31
+ "description": "Add Assisted-by: PI (model) signature to GitHub PR/issue bodies and comments",
23
32
  "type": "bool",
24
- "default": false
33
+ "default": false,
34
+ "group": "Git"
25
35
  },
26
36
  "review_loop_enforcement": {
37
+ "description": "Enforce code review loop before commits",
27
38
  "type": "bool",
28
39
  "env": "PI_REVIEW_LOOP_ENFORCEMENT",
29
- "default": false
40
+ "default": false,
41
+ "group": "Review"
30
42
  },
31
43
  "review_loop_max_cycles": {
44
+ "description": "Maximum review cycles before stopping",
32
45
  "type": "int",
33
46
  "env": "PI_REVIEW_LOOP_MAX_CYCLES",
34
47
  "default": 3,
35
48
  "min": 1,
36
49
  "max": 10,
37
- "strict_digits": true
50
+ "strict_digits": true,
51
+ "group": "Review"
38
52
  },
39
53
  "dream_interval_hours": {
54
+ "description": "Hours between automatic memory dreaming",
40
55
  "type": "number",
41
56
  "env": "PI_DREAM_INTERVAL_HOURS",
42
- "default": 3
57
+ "default": 3,
58
+ "group": "Memory"
43
59
  },
44
60
  "orchestrator_edit_write_block": {
61
+ "description": "Block orchestrator edit/write \u2014 force delegation to specialist subagents",
45
62
  "type": "bool",
46
- "default": false
63
+ "default": false,
64
+ "group": "Enforcement"
47
65
  },
48
66
  "pidash_enable": {
67
+ "description": "Enable pidash browser dashboard",
49
68
  "type": "bool_enable",
50
69
  "env": "PI_PIDASH_ENABLE",
51
- "default": true
70
+ "default": true,
71
+ "group": "Dashboard"
52
72
  },
53
73
  "pidiff_enable": {
74
+ "description": "Enable pidiff visual diff server",
54
75
  "type": "bool_enable",
55
76
  "env": "PI_PIDIFF_ENABLE",
56
- "default": true
77
+ "default": true,
78
+ "group": "Dashboard"
79
+ },
80
+ "pidiff_stale_lock_timeout_ms": {
81
+ "description": "Timeout for stale pidiff spawning lockfile (ms)",
82
+ "type": "int",
83
+ "env": "PI_PIDIFF_STALE_LOCK_TIMEOUT_MS",
84
+ "default": 60000,
85
+ "min": 10000,
86
+ "max": 300000,
87
+ "group": "Pidiff"
88
+ },
89
+ "pidiff_daemon_startup_timeout_s": {
90
+ "description": "Timeout waiting for pidiff daemon startup (s)",
91
+ "type": "int",
92
+ "env": "PI_PIDIFF_DAEMON_STARTUP_TIMEOUT_S",
93
+ "default": 60,
94
+ "min": 10,
95
+ "max": 300,
96
+ "group": "Pidiff"
57
97
  },
58
98
  "pidash_port": {
99
+ "description": "Port for pidash server",
59
100
  "type": "port",
60
101
  "env": "PI_PIDASH_PORT",
61
- "default": 19190
102
+ "default": 19190,
103
+ "min": 1,
104
+ "group": "Dashboard"
62
105
  },
63
106
  "image_model": {
107
+ "description": "Gemini/Google image model for generate_image (Settings TUI picker: google + image-capable; empty = disabled)",
64
108
  "type": "string",
65
109
  "env": "PI_IMAGE_MODEL",
66
- "default": ""
110
+ "default": "",
111
+ "group": "Provider"
67
112
  },
68
113
  "internal_operations_provider": {
114
+ "description": "Provider for internal ops like dreaming (empty = use session model)",
69
115
  "type": "string",
70
116
  "env": "PI_INTERNAL_OPERATIONS_PROVIDER",
71
- "default": ""
117
+ "default": "",
118
+ "group": "Provider"
72
119
  },
73
120
  "internal_operations_model": {
121
+ "description": "Model for internal ops like dreaming (empty = use session model)",
74
122
  "type": "string",
75
123
  "env": "PI_INTERNAL_OPERATIONS_MODEL",
76
- "default": ""
124
+ "default": "",
125
+ "group": "Provider"
77
126
  },
78
127
  "acpx_agents": {
128
+ "description": "ACPX agent configurations for external AI agents",
79
129
  "type": "agent_list",
80
130
  "env": "ACPX_AGENTS",
81
131
  "default": [],
82
- "per_key_resolution": true
132
+ "per_key_resolution": true,
133
+ "group": "Provider"
83
134
  },
84
135
  "cli_agents": {
136
+ "description": "CLI agent configurations for native AI agents",
85
137
  "type": "agent_list",
86
138
  "env": "CLI_AGENTS",
87
139
  "default": [],
88
- "per_key_resolution": true
140
+ "per_key_resolution": true,
141
+ "group": "Provider"
89
142
  },
90
143
  "agent_provider": {
144
+ "description": "Default provider for subagents (empty = inherit from parent)",
91
145
  "type": "string",
92
- "default": ""
146
+ "default": "",
147
+ "group": "Provider"
93
148
  },
94
149
  "agent_model": {
150
+ "description": "Default model for subagents (empty = inherit from parent)",
95
151
  "type": "string",
96
- "default": ""
152
+ "default": "",
153
+ "group": "Provider"
97
154
  },
98
155
  "agent_overrides": {
156
+ "description": "Per-agent model/provider overrides",
99
157
  "type": "agent_overrides",
100
- "default": {}
158
+ "default": {},
159
+ "group": "Provider"
160
+ },
161
+ "sync_agent_max_seconds": {
162
+ "description": "Max seconds for sync subagent execution before requiring async",
163
+ "type": "int",
164
+ "env": "PI_SYNC_AGENT_MAX_SECONDS",
165
+ "default": 60,
166
+ "min": 10,
167
+ "max": 300,
168
+ "group": "Subagent"
169
+ },
170
+ "async_poll_interval_ms": {
171
+ "description": "Polling interval for async agent status checks (ms)",
172
+ "type": "int",
173
+ "env": "PI_ASYNC_POLL_INTERVAL_MS",
174
+ "default": 3000,
175
+ "min": 500,
176
+ "max": 30000,
177
+ "group": "Subagent"
178
+ },
179
+ "async_phantom_timeout_ms": {
180
+ "description": "Timeout before marking async agent as phantom/dead (ms)",
181
+ "type": "int",
182
+ "env": "PI_ASYNC_PHANTOM_TIMEOUT_MS",
183
+ "default": 30000,
184
+ "min": 5000,
185
+ "max": 120000,
186
+ "group": "Subagent"
187
+ },
188
+ "vertex_claude_1m": {
189
+ "description": "Register Vertex AI Claude models with 1M token context window",
190
+ "type": "bool",
191
+ "env": "VERTEX_CLAUDE_1M",
192
+ "default": false,
193
+ "group": "Provider"
194
+ },
195
+ "sidecar_log_level": {
196
+ "description": "Log level for pi-sidecar server",
197
+ "type": "string",
198
+ "env": "PI_SIDECAR_LOG_LEVEL",
199
+ "default": "info",
200
+ "group": "Logging"
201
+ },
202
+ "enforcement_allowed_commands": {
203
+ "description": "Comma-separated bash commands exempt from orchestrator enforcement blocking",
204
+ "type": "string",
205
+ "env": "PI_ENFORCEMENT_ALLOWED_COMMANDS",
206
+ "default": "",
207
+ "group": "Enforcement"
208
+ },
209
+ "enforcement_loop_sleep_threshold_s": {
210
+ "description": "Max sleep duration in loops before blocking (s)",
211
+ "type": "int",
212
+ "env": "PI_ENFORCEMENT_LOOP_SLEEP_THRESHOLD_S",
213
+ "default": 60,
214
+ "min": 1,
215
+ "max": 300,
216
+ "group": "Enforcement"
217
+ },
218
+ "enforcement_sleep_threshold_s": {
219
+ "description": "Max standalone sleep duration before blocking (s)",
220
+ "type": "int",
221
+ "env": "PI_ENFORCEMENT_SLEEP_THRESHOLD_S",
222
+ "default": 60,
223
+ "min": 1,
224
+ "max": 300,
225
+ "group": "Enforcement"
226
+ },
227
+ "coms_max_hops": {
228
+ "description": "Maximum message relay hops between peers",
229
+ "type": "int",
230
+ "env": "PI_COMS_MAX_HOPS",
231
+ "default": 5,
232
+ "min": 1,
233
+ "max": 50,
234
+ "group": "Coms"
235
+ },
236
+ "coms_timeout_ms": {
237
+ "description": "Coms session inactivity timeout before cleanup (ms)",
238
+ "type": "int",
239
+ "env": "PI_COMS_TIMEOUT_MS",
240
+ "default": 1800000,
241
+ "min": 1000,
242
+ "group": "Coms"
243
+ },
244
+ "coms_dir": {
245
+ "description": "Override default coms registry directory (empty = auto)",
246
+ "type": "string",
247
+ "env": "PI_COMS_DIR",
248
+ "default": "",
249
+ "group": "Coms"
250
+ },
251
+ "coms_task_heartbeat_ms": {
252
+ "description": "Interval for coms task heartbeat checks (ms)",
253
+ "type": "int",
254
+ "env": "PI_COMS_TASK_HEARTBEAT_MS",
255
+ "default": 300000,
256
+ "min": 10000,
257
+ "group": "Coms"
258
+ },
259
+ "coms_entry_grace_period_ms": {
260
+ "description": "Grace period for new registry entries before stale check (ms)",
261
+ "type": "int",
262
+ "env": "PI_COMS_ENTRY_GRACE_PERIOD_MS",
263
+ "default": 30000,
264
+ "min": 5000,
265
+ "max": 120000,
266
+ "group": "Coms"
267
+ },
268
+ "coms_probe_timeout_ms": {
269
+ "description": "Timeout for probing stale peer sockets (ms)",
270
+ "type": "int",
271
+ "env": "PI_COMS_PROBE_TIMEOUT_MS",
272
+ "default": 1000,
273
+ "min": 100,
274
+ "max": 10000,
275
+ "group": "Coms"
276
+ },
277
+ "log_pitasks": {
278
+ "description": "Log level for pitasks module",
279
+ "type": "string",
280
+ "env": "PI_LOG_PITASKS",
281
+ "default": "info",
282
+ "enum": [
283
+ "off",
284
+ "debug",
285
+ "info",
286
+ "warn",
287
+ "error"
288
+ ],
289
+ "group": "Logging"
290
+ },
291
+ "log_pidash": {
292
+ "description": "Log level for pidash module",
293
+ "type": "string",
294
+ "env": "PI_LOG_PIDASH",
295
+ "default": "info",
296
+ "enum": [
297
+ "off",
298
+ "debug",
299
+ "info",
300
+ "warn",
301
+ "error"
302
+ ],
303
+ "group": "Logging"
304
+ },
305
+ "log_pidiff": {
306
+ "description": "Log level for pidiff module",
307
+ "type": "string",
308
+ "env": "PI_LOG_PIDIFF",
309
+ "default": "info",
310
+ "enum": [
311
+ "off",
312
+ "debug",
313
+ "info",
314
+ "warn",
315
+ "error"
316
+ ],
317
+ "group": "Logging"
318
+ },
319
+ "log_coms": {
320
+ "description": "Log level for coms module",
321
+ "type": "string",
322
+ "env": "PI_LOG_COMS",
323
+ "default": "info",
324
+ "enum": [
325
+ "off",
326
+ "debug",
327
+ "info",
328
+ "warn",
329
+ "error"
330
+ ],
331
+ "group": "Logging"
332
+ },
333
+ "log_cli_provider": {
334
+ "description": "Log level for cli-provider module",
335
+ "type": "string",
336
+ "env": "PI_LOG_CLI_PROVIDER",
337
+ "default": "info",
338
+ "enum": [
339
+ "off",
340
+ "debug",
341
+ "info",
342
+ "warn",
343
+ "error"
344
+ ],
345
+ "group": "Logging"
346
+ },
347
+ "log_providers": {
348
+ "description": "Log level for providers module",
349
+ "type": "string",
350
+ "env": "PI_LOG_PROVIDERS",
351
+ "default": "info",
352
+ "enum": [
353
+ "off",
354
+ "debug",
355
+ "info",
356
+ "warn",
357
+ "error"
358
+ ],
359
+ "group": "Logging"
360
+ },
361
+ "log_dreaming": {
362
+ "description": "Log level for dreaming module",
363
+ "type": "string",
364
+ "env": "PI_LOG_DREAMING",
365
+ "default": "info",
366
+ "enum": [
367
+ "off",
368
+ "debug",
369
+ "info",
370
+ "warn",
371
+ "error"
372
+ ],
373
+ "group": "Logging"
374
+ },
375
+ "log_acpx_provider": {
376
+ "description": "Log level for acpx-provider module",
377
+ "type": "string",
378
+ "env": "PI_LOG_ACPX_PROVIDER",
379
+ "default": "info",
380
+ "enum": [
381
+ "off",
382
+ "debug",
383
+ "info",
384
+ "warn",
385
+ "error"
386
+ ],
387
+ "group": "Logging"
388
+ },
389
+ "log_subagent": {
390
+ "description": "Log level for subagent module",
391
+ "type": "string",
392
+ "env": "PI_LOG_SUBAGENT",
393
+ "default": "info",
394
+ "enum": [
395
+ "off",
396
+ "debug",
397
+ "info",
398
+ "warn",
399
+ "error"
400
+ ],
401
+ "group": "Logging"
402
+ },
403
+ "log_orchestrator": {
404
+ "description": "Log level for orchestrator module",
405
+ "type": "string",
406
+ "env": "PI_LOG_ORCHESTRATOR",
407
+ "default": "info",
408
+ "enum": [
409
+ "off",
410
+ "debug",
411
+ "info",
412
+ "warn",
413
+ "error"
414
+ ],
415
+ "group": "Logging"
416
+ },
417
+ "log_async_agents": {
418
+ "description": "Log level for async-agents module",
419
+ "type": "string",
420
+ "env": "PI_LOG_ASYNC_AGENTS",
421
+ "default": "info",
422
+ "enum": [
423
+ "off",
424
+ "debug",
425
+ "info",
426
+ "warn",
427
+ "error"
428
+ ],
429
+ "group": "Logging"
430
+ },
431
+ "log_enforcement": {
432
+ "description": "Log level for enforcement module",
433
+ "type": "string",
434
+ "env": "PI_LOG_ENFORCEMENT",
435
+ "default": "info",
436
+ "enum": [
437
+ "off",
438
+ "debug",
439
+ "info",
440
+ "warn",
441
+ "error"
442
+ ],
443
+ "group": "Logging"
444
+ },
445
+ "log_rules": {
446
+ "description": "Log level for rules module",
447
+ "type": "string",
448
+ "env": "PI_LOG_RULES",
449
+ "default": "info",
450
+ "enum": [
451
+ "off",
452
+ "debug",
453
+ "info",
454
+ "warn",
455
+ "error"
456
+ ],
457
+ "group": "Logging"
458
+ },
459
+ "log_memory": {
460
+ "description": "Log level for memory module",
461
+ "type": "string",
462
+ "env": "PI_LOG_MEMORY",
463
+ "default": "info",
464
+ "enum": [
465
+ "off",
466
+ "debug",
467
+ "info",
468
+ "warn",
469
+ "error"
470
+ ],
471
+ "group": "Logging"
472
+ },
473
+ "log_settings_tui": {
474
+ "description": "Log level for settings-tui module",
475
+ "type": "string",
476
+ "env": "PI_LOG_SETTINGS_TUI",
477
+ "default": "info",
478
+ "enum": [
479
+ "off",
480
+ "debug",
481
+ "info",
482
+ "warn",
483
+ "error"
484
+ ],
485
+ "group": "Logging"
486
+ },
487
+ "log_cron": {
488
+ "description": "Log level for cron module",
489
+ "type": "string",
490
+ "env": "PI_LOG_CRON",
491
+ "default": "info",
492
+ "enum": [
493
+ "off",
494
+ "debug",
495
+ "info",
496
+ "warn",
497
+ "error"
498
+ ],
499
+ "group": "Logging"
500
+ },
501
+ "log_oneshot": {
502
+ "description": "Log level for oneshot argv helpers (`pi -p` / `--mode json`)",
503
+ "type": "string",
504
+ "env": "PI_LOG_ONESHOT",
505
+ "default": "info",
506
+ "enum": [
507
+ "off",
508
+ "debug",
509
+ "info",
510
+ "warn",
511
+ "error"
512
+ ],
513
+ "group": "Logging"
514
+ },
515
+ "task_auto_clear_enabled": {
516
+ "description": "Enable automatic removal of completed tasks",
517
+ "type": "bool",
518
+ "env": "PI_TASK_AUTO_CLEAR_ENABLED",
519
+ "default": true,
520
+ "group": "Tasks"
521
+ },
522
+ "task_auto_clear_minutes": {
523
+ "description": "Minutes before completed tasks are automatically removed",
524
+ "type": "int",
525
+ "env": "PI_TASK_AUTO_CLEAR_MINUTES",
526
+ "default": 10,
527
+ "min": 1,
528
+ "max": 1440,
529
+ "group": "Tasks"
530
+ },
531
+ "task_reminder_enabled": {
532
+ "description": "Enable periodic task reminders when no task is in progress",
533
+ "type": "bool",
534
+ "env": "PI_TASK_REMINDER_ENABLED",
535
+ "default": true,
536
+ "group": "Tasks"
537
+ },
538
+ "task_reminder_interval_minutes": {
539
+ "description": "Minutes between task reminders when no task is in progress",
540
+ "type": "int",
541
+ "env": "PI_TASK_REMINDER_INTERVAL_MINUTES",
542
+ "default": 10,
543
+ "min": 1,
544
+ "max": 60,
545
+ "group": "Tasks"
546
+ },
547
+ "task_stale_in_progress_enabled": {
548
+ "description": "Enable reminders for tasks stuck in progress too long",
549
+ "type": "bool",
550
+ "env": "PI_TASK_STALE_IN_PROGRESS_ENABLED",
551
+ "default": true,
552
+ "group": "Tasks"
553
+ },
554
+ "task_stale_in_progress_minutes": {
555
+ "description": "Minutes before an in-progress task triggers a stale reminder",
556
+ "type": "int",
557
+ "env": "PI_TASK_STALE_IN_PROGRESS_MINUTES",
558
+ "default": 30,
559
+ "min": 5,
560
+ "max": 1440,
561
+ "group": "Tasks"
101
562
  }
102
563
  }
@@ -16,9 +16,9 @@ You do NOT write code. You review, direct the coder, and verify everything works
16
16
 
17
17
  - **Sole owner** of feature quality and completeness
18
18
  - You do NOT write, edit, or commit code — manager and reviewer only
19
- - Communicate with coder peer via `coms_send` (P2P) or `coms_net_send` (networked).
19
+ - Communicate with coder peer via `coms_send`.
20
20
  After sending, **end your turn** — the response auto-delivers as a followUp in a new turn.
21
- Discover peers via `coms_list` (P2P) or `coms_net_list` (networked).
21
+ Discover peers via `coms_list`.
22
22
  Use the same transport for discovery and sending.
23
23
  - **Use structured tasks** when delegating work — pass `tasks` parameter in `coms_send` so the coder's task widget tracks deliverables
24
24
  - Gate PR creation — coder CANNOT push/create PR without your explicit approval
@@ -89,7 +89,7 @@ Use `ask_user` to wait for confirmation.
89
89
 
90
90
  After the user confirms:
91
91
 
92
- 1. Run `coms_list` and/or `coms_net_list`
92
+ 1. Run `coms_list`
93
93
  2. Verify ALL expected peers are connected by name
94
94
  3. If any are missing → tell the user which ones and repeat the command
95
95
  4. Once all peers are confirmed → proceed to Getting Started
@@ -100,7 +100,7 @@ After the user confirms:
100
100
 
101
101
  ### Scenario 1: Late Join — Coder Already Working
102
102
 
103
- 1. **Discover peer**: `coms_list` or `coms_net_list`
103
+ 1. **Discover peer**: `coms_list`
104
104
  2. **Request status report** (include standing rules block from below):
105
105
  - Issue/PR number, branch, what's implemented, `git diff origin/main --stat`
106
106
  - Open review comments, test results
@@ -264,8 +264,6 @@ Send verification tasks via the active coms transport with structured `tasks`,
264
264
  then await the returned `msg_id` using the matching tool:
265
265
 
266
266
  - P2P: `coms_send` → response auto-delivers as followUp
267
- - Networked: `coms_net_send` → response auto-delivers as followUp
268
-
269
267
  Tasks to delegate:
270
268
 
271
269
  - Run through all E2E scenarios (happy + unhappy paths)