ticlawk 0.1.16-dev.9 → 0.1.17-dev.1

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 (42) hide show
  1. package/README.md +17 -3
  2. package/bin/ticlawk.mjs +255 -21
  3. package/package.json +1 -1
  4. package/src/adapters/ticlawk/api.mjs +350 -50
  5. package/src/adapters/ticlawk/credentials.mjs +41 -1
  6. package/src/adapters/ticlawk/index.mjs +248 -130
  7. package/src/adapters/ticlawk/wake-client.mjs +1 -1
  8. package/src/cli/agent-commands.mjs +715 -18
  9. package/src/core/agent-cli-handlers.mjs +556 -18
  10. package/src/core/agent-home.mjs +81 -1
  11. package/src/core/argv.mjs +11 -1
  12. package/src/core/events/worker-events.mjs +32 -36
  13. package/src/core/http.mjs +152 -0
  14. package/src/core/runtime-contract.mjs +0 -1
  15. package/src/core/runtime-env.mjs +7 -0
  16. package/src/core/runtime-support.mjs +130 -78
  17. package/src/runtimes/_shared/agent-handbook.mjs +45 -0
  18. package/src/runtimes/_shared/brand.mjs +2 -0
  19. package/src/runtimes/_shared/goal-step-prompt.mjs +98 -0
  20. package/src/runtimes/_shared/goal-task-protocol.mjs +50 -0
  21. package/src/runtimes/_shared/handbook/BASICS.md +27 -0
  22. package/src/runtimes/_shared/handbook/COLLABORATION.md +37 -0
  23. package/src/runtimes/_shared/handbook/COMMUNICATION.md +55 -0
  24. package/src/runtimes/_shared/handbook/DM_SCOPE.md +13 -0
  25. package/src/runtimes/_shared/handbook/GOAL_AUTHORITY.md +47 -0
  26. package/src/runtimes/_shared/handbook/GOAL_TASK_CORE.md +43 -0
  27. package/src/runtimes/_shared/handbook/GROUP_ADMIN_SCOPE.md +21 -0
  28. package/src/runtimes/_shared/handbook/GROUP_MEMBER_SCOPE.md +15 -0
  29. package/src/runtimes/_shared/handbook/SURFACES.md +41 -0
  30. package/src/runtimes/_shared/handbook/TASK_WORKER.md +14 -0
  31. package/src/runtimes/_shared/standing-prompt.mjs +124 -279
  32. package/src/runtimes/_shared/wake-prompt.mjs +268 -0
  33. package/src/runtimes/claude-code/index.mjs +19 -46
  34. package/src/runtimes/claude-code/session.mjs +2 -7
  35. package/src/runtimes/codex/index.mjs +115 -63
  36. package/src/runtimes/codex/session.mjs +2 -12
  37. package/src/runtimes/openclaw/index.mjs +11 -24
  38. package/src/runtimes/opencode/index.mjs +38 -60
  39. package/src/runtimes/opencode/session.mjs +12 -12
  40. package/src/runtimes/pi/index.mjs +38 -60
  41. package/src/runtimes/pi/session.mjs +9 -6
  42. package/ticlawk.mjs +0 -30
package/README.md CHANGED
@@ -212,12 +212,16 @@ Usage:
212
212
  ticlawk version
213
213
 
214
214
  Agent CLI (run inside an agent runtime; requires TICLAWK_RUNTIME_AGENT_ID):
215
- ticlawk message send --target <t> # body on stdin
215
+ ticlawk message send --target <t> --phase progress|final # body on stdin
216
216
  ticlawk message read --target <t> [opts]
217
217
  ticlawk task claim --message-id <id>
218
218
  ticlawk task update --task-id <id> --status <s>
219
- ticlawk task list [--target <t>]
219
+ ticlawk task list [--target <t>] # group admins see the full task board
220
+ ticlawk charter get --target <t>
220
221
  ticlawk group members --target <t>
222
+ ticlawk group list
223
+ ticlawk agent list
224
+ ticlawk dashboard get --conversation-id <id>
221
225
  ticlawk server info [--refresh]
222
226
 
223
227
  Commands:
@@ -226,7 +230,17 @@ Commands:
226
230
  profile list or switch saved local identities
227
231
  message send/read chat messages (agent CLI surface)
228
232
  task claim/update/list tasks (agent CLI surface)
229
- group list members of a group conversation (agent CLI surface)
233
+ goal report FSM transitions / signal goal changes (agent CLI surface)
234
+ approval canonical goal-loop approval request/resolve (agent CLI surface)
235
+ charter get/set conversation goal and role spec (agent CLI surface)
236
+ group create/list/delete groups, manage charters/members (agent CLI surface)
237
+ dashboard set/get conversation dashboards (agent CLI surface)
238
+ briefing publish/get owner briefings (agent CLI surface)
239
+ agent list/create/delete owned agent slots (agent CLI surface)
240
+ service publish/list/call shared services (agent CLI surface)
241
+ credential request owner-filled credentials (agent CLI surface)
242
+ reminder schedule/list/snooze/cancel reminders (agent CLI surface)
243
+ attachment view private chat assets (agent CLI surface)
230
244
  server server-info introspection (agent CLI surface)
231
245
  install-daemon install or refresh the background daemon
232
246
  update update the npm package and refresh the daemon
package/bin/ticlawk.mjs CHANGED
@@ -32,12 +32,36 @@ import {
32
32
  AGENT_COMMAND_HELP,
33
33
  runAttachmentViewCommand,
34
34
  runGroupCreateCommand,
35
+ runWorkstreamCharterGetCommand,
36
+ runWorkstreamCharterSetCommand,
37
+ runWorkstreamCreateCommand,
38
+ runWorkstreamDeleteCommand,
39
+ runWorkstreamListCommand,
40
+ runAgentListCommand,
41
+ runAgentCreateCommand,
42
+ runAgentDeleteCommand,
43
+ runDashboardSetCommand,
44
+ runDashboardGetCommand,
45
+ runCredentialRequestCommand,
46
+ runBriefingPublishCommand,
47
+ runBriefingGetCommand,
48
+ runServiceCreateCommand,
49
+ runServiceUpdateCommand,
50
+ runServiceDeleteCommand,
51
+ runServiceListCommand,
52
+ runServiceInfoCommand,
53
+ runServiceCallCommand,
35
54
  runGroupMembersAddCommand,
36
55
  runGroupMembersCommand,
37
56
  runGroupMembersRemoveCommand,
38
57
  runMessageCheckCommand,
39
58
  runMessageReactCommand,
40
59
  runMessageReadCommand,
60
+ runGoalChangedCommand,
61
+ runGoalReportCommand,
62
+ runApprovalRequestCommand,
63
+ runApprovalResolveCommand,
64
+ runApprovalListCommand,
41
65
  runMessageSearchCommand,
42
66
  runMessageSendCommand,
43
67
  runProfileShowCommand,
@@ -92,12 +116,16 @@ Usage:
92
116
  ticlawk version
93
117
 
94
118
  Agent CLI (run inside an agent runtime; requires TICLAWK_RUNTIME_AGENT_ID):
95
- ticlawk message send --target <t> # body on stdin
119
+ ticlawk message send --target <t> --phase progress|final # body on stdin
96
120
  ticlawk message read --target <t> [opts]
97
121
  ticlawk task claim --message-id <id>
98
122
  ticlawk task update --task-id <id> --status <s>
99
- ticlawk task list [--target <t>]
123
+ ticlawk task list [--target <t>] # group admins see the full task board
124
+ ticlawk charter get --target <t>
100
125
  ticlawk group members --target <t>
126
+ ticlawk group list
127
+ ticlawk agent list
128
+ ticlawk dashboard get --conversation-id <id>
101
129
  ticlawk server info [--refresh]
102
130
 
103
131
  Commands:
@@ -106,7 +134,17 @@ Commands:
106
134
  profile list or switch saved local identities
107
135
  message send/read chat messages (agent CLI surface)
108
136
  task claim/update/list tasks (agent CLI surface)
109
- group list members of a group conversation (agent CLI surface)
137
+ goal report FSM transitions / signal goal changes (agent CLI surface)
138
+ approval canonical goal-loop approval request/resolve (agent CLI surface)
139
+ charter get/set conversation goal and role spec (agent CLI surface)
140
+ group create/list/delete groups, manage charters/members (agent CLI surface)
141
+ dashboard set/get conversation dashboards (agent CLI surface)
142
+ briefing publish/get owner briefings (agent CLI surface)
143
+ agent list/create/delete owned agent slots (agent CLI surface)
144
+ service publish/list/call shared services (agent CLI surface)
145
+ credential request owner-filled credentials (agent CLI surface)
146
+ reminder schedule/list/snooze/cancel reminders (agent CLI surface)
147
+ attachment view private chat assets (agent CLI surface)
110
148
  server server-info introspection (agent CLI surface)
111
149
  install-daemon install or refresh the background daemon
112
150
  update update the npm package and refresh the daemon
@@ -178,6 +216,10 @@ function printHelp(helpPath, args = {}) {
178
216
  console.log(getInstallDaemonHelp());
179
217
  return;
180
218
  }
219
+ if (AGENT_COMMAND_HELP[head]) {
220
+ console.log(AGENT_COMMAND_HELP[head]);
221
+ return;
222
+ }
181
223
  printUsage();
182
224
  }
183
225
 
@@ -357,24 +399,6 @@ async function main() {
357
399
  process.exit(1);
358
400
  }
359
401
 
360
- if (command === 'profile') {
361
- const sub = args._[1];
362
- if (args.help || args.h || !sub) {
363
- console.log(AGENT_COMMAND_HELP.profile);
364
- return;
365
- }
366
- if (sub === 'show') {
367
- process.exitCode = await runProfileShowCommand(args);
368
- return;
369
- }
370
- if (sub === 'update') {
371
- process.exitCode = await runProfileUpdateCommand(args);
372
- return;
373
- }
374
- console.error(`unknown profile subcommand: ${sub}`);
375
- process.exit(1);
376
- }
377
-
378
402
  if (command === 'reminder') {
379
403
  const sub = args._[1];
380
404
  if (args.help || args.h || !sub) {
@@ -453,6 +477,187 @@ async function main() {
453
477
  process.exit(1);
454
478
  }
455
479
 
480
+ if (command === 'goal') {
481
+ const sub = args._[1];
482
+ if (args.help || args.h || !sub) {
483
+ console.log(AGENT_COMMAND_HELP.goal);
484
+ return;
485
+ }
486
+ if (sub === 'report') {
487
+ process.exitCode = await runGoalReportCommand(args);
488
+ return;
489
+ }
490
+ if (sub === 'changed') {
491
+ process.exitCode = await runGoalChangedCommand(args);
492
+ return;
493
+ }
494
+ console.error(`unknown goal subcommand: ${sub}`);
495
+ process.exit(1);
496
+ }
497
+
498
+ if (command === 'approval') {
499
+ const sub = args._[1];
500
+ if (args.help || args.h || !sub) {
501
+ console.log(AGENT_COMMAND_HELP.approval);
502
+ return;
503
+ }
504
+ if (sub === 'request') {
505
+ process.exitCode = await runApprovalRequestCommand(args);
506
+ return;
507
+ }
508
+ if (sub === 'resolve') {
509
+ process.exitCode = await runApprovalResolveCommand(args);
510
+ return;
511
+ }
512
+ if (sub === 'list') {
513
+ process.exitCode = await runApprovalListCommand(args);
514
+ return;
515
+ }
516
+ console.error(`unknown approval subcommand: ${sub}`);
517
+ process.exit(1);
518
+ }
519
+
520
+ if (command === 'workstream') {
521
+ const sub = args._[1];
522
+ if (args.help || args.h || !sub) {
523
+ console.log(AGENT_COMMAND_HELP.workstream);
524
+ return;
525
+ }
526
+ if (sub === 'create') {
527
+ process.exitCode = await runWorkstreamCreateCommand(args);
528
+ return;
529
+ }
530
+ if (sub === 'delete') {
531
+ process.exitCode = await runWorkstreamDeleteCommand(args);
532
+ return;
533
+ }
534
+ if (sub === 'list') {
535
+ process.exitCode = await runWorkstreamListCommand(args);
536
+ return;
537
+ }
538
+ if (sub === 'charter') {
539
+ const op = args._[2];
540
+ if (op === 'get') {
541
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
542
+ return;
543
+ }
544
+ if (op === 'set') {
545
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
546
+ return;
547
+ }
548
+ console.error(`unknown workstream charter op: ${op}`);
549
+ process.exit(1);
550
+ }
551
+ console.error(`unknown workstream subcommand: ${sub}`);
552
+ process.exit(1);
553
+ }
554
+
555
+ if (command === 'agent') {
556
+ const sub = args._[1];
557
+ if (args.help || args.h || !sub) {
558
+ console.log(AGENT_COMMAND_HELP.agent);
559
+ return;
560
+ }
561
+ if (sub === 'list') {
562
+ process.exitCode = await runAgentListCommand(args);
563
+ return;
564
+ }
565
+ if (sub === 'create') {
566
+ process.exitCode = await runAgentCreateCommand(args);
567
+ return;
568
+ }
569
+ if (sub === 'delete') {
570
+ process.exitCode = await runAgentDeleteCommand(args);
571
+ return;
572
+ }
573
+ console.error(`unknown agent subcommand: ${sub}`);
574
+ process.exit(1);
575
+ }
576
+
577
+ if (command === 'service') {
578
+ const sub = args._[1];
579
+ if (args.help || args.h || !sub) {
580
+ console.log(AGENT_COMMAND_HELP.service);
581
+ return;
582
+ }
583
+ if (sub === 'create') { process.exitCode = await runServiceCreateCommand(args); return; }
584
+ if (sub === 'update') { process.exitCode = await runServiceUpdateCommand(args); return; }
585
+ if (sub === 'delete') { process.exitCode = await runServiceDeleteCommand(args); return; }
586
+ if (sub === 'list') { process.exitCode = await runServiceListCommand(args); return; }
587
+ if (sub === 'info') { process.exitCode = await runServiceInfoCommand(args); return; }
588
+ if (sub === 'call') { process.exitCode = await runServiceCallCommand(args); return; }
589
+ console.error(`unknown service subcommand: ${sub}`);
590
+ process.exit(1);
591
+ }
592
+
593
+ if (command === 'briefing') {
594
+ const sub = args._[1];
595
+ if (args.help || args.h || !sub) {
596
+ console.log(AGENT_COMMAND_HELP.briefing);
597
+ return;
598
+ }
599
+ if (sub === 'publish') {
600
+ process.exitCode = await runBriefingPublishCommand(args);
601
+ return;
602
+ }
603
+ if (sub === 'get') {
604
+ process.exitCode = await runBriefingGetCommand(args);
605
+ return;
606
+ }
607
+ console.error(`unknown briefing subcommand: ${sub}`);
608
+ process.exit(1);
609
+ }
610
+
611
+ if (command === 'credential') {
612
+ const sub = args._[1];
613
+ if (args.help || args.h || !sub) {
614
+ console.log(AGENT_COMMAND_HELP.credential);
615
+ return;
616
+ }
617
+ if (sub === 'request') {
618
+ process.exitCode = await runCredentialRequestCommand(args);
619
+ return;
620
+ }
621
+ console.error(`unknown credential subcommand: ${sub}`);
622
+ process.exit(1);
623
+ }
624
+
625
+ if (command === 'dashboard') {
626
+ const sub = args._[1];
627
+ if (args.help || args.h || !sub) {
628
+ console.log(AGENT_COMMAND_HELP.dashboard);
629
+ return;
630
+ }
631
+ if (sub === 'set') {
632
+ process.exitCode = await runDashboardSetCommand(args);
633
+ return;
634
+ }
635
+ if (sub === 'get') {
636
+ process.exitCode = await runDashboardGetCommand(args);
637
+ return;
638
+ }
639
+ console.error(`unknown dashboard subcommand: ${sub}`);
640
+ process.exit(1);
641
+ }
642
+
643
+ if (command === 'charter') {
644
+ const sub = args._[1];
645
+ if (args.help || args.h || !sub) {
646
+ console.log(AGENT_COMMAND_HELP.charter);
647
+ return;
648
+ }
649
+ if (sub === 'get') {
650
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
651
+ return;
652
+ }
653
+ if (sub === 'set') {
654
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
655
+ return;
656
+ }
657
+ console.error(`unknown charter subcommand: ${sub}`);
658
+ process.exit(1);
659
+ }
660
+
456
661
  if (command === 'group') {
457
662
  const sub = args._[1];
458
663
  if (args.help || args.h || !sub) {
@@ -463,6 +668,27 @@ async function main() {
463
668
  process.exitCode = await runGroupCreateCommand(args);
464
669
  return;
465
670
  }
671
+ if (sub === 'list') {
672
+ process.exitCode = await runWorkstreamListCommand(args);
673
+ return;
674
+ }
675
+ if (sub === 'delete') {
676
+ process.exitCode = await runWorkstreamDeleteCommand(args);
677
+ return;
678
+ }
679
+ if (sub === 'charter') {
680
+ const op = args._[2];
681
+ if (op === 'get') {
682
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
683
+ return;
684
+ }
685
+ if (op === 'set') {
686
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
687
+ return;
688
+ }
689
+ console.error(`unknown group charter op: ${op}`);
690
+ process.exit(1);
691
+ }
466
692
  if (sub === 'members') {
467
693
  // Same subcommand handles list / add / remove based on flags.
468
694
  if (args.add) {
@@ -605,6 +831,14 @@ async function main() {
605
831
  console.log('Restart ticlawk for the daemon to use the selected profile.');
606
832
  return;
607
833
  }
834
+ if (subcommand === 'show') {
835
+ process.exitCode = await runProfileShowCommand(args);
836
+ return;
837
+ }
838
+ if (subcommand === 'update') {
839
+ process.exitCode = await runProfileUpdateCommand(args);
840
+ return;
841
+ }
608
842
  console.error(`unknown profile subcommand: ${subcommand}`);
609
843
  process.exit(1);
610
844
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticlawk",
3
- "version": "0.1.16-dev.9",
3
+ "version": "0.1.17-dev.1",
4
4
  "description": "Local connector that links agent harnesses (Claude Code, Codex, OpenClaw, opencode, Pi) to the Ticlawk mobile app.",
5
5
  "type": "module",
6
6
  "main": "ticlawk.mjs",