ticlawk 0.1.16-dev.8 → 0.1.16

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 (41) hide show
  1. package/README.md +15 -3
  2. package/bin/ticlawk.mjs +208 -26
  3. package/package.json +1 -1
  4. package/src/adapters/ticlawk/api.mjs +283 -48
  5. package/src/adapters/ticlawk/credentials.mjs +41 -1
  6. package/src/adapters/ticlawk/index.mjs +126 -121
  7. package/src/adapters/ticlawk/wake-client.mjs +1 -1
  8. package/src/cli/agent-commands.mjs +560 -36
  9. package/src/core/agent-cli-handlers.mjs +435 -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 +119 -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 +108 -77
  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-task-protocol.mjs +50 -0
  20. package/src/runtimes/_shared/handbook/BASICS.md +27 -0
  21. package/src/runtimes/_shared/handbook/COLLABORATION.md +37 -0
  22. package/src/runtimes/_shared/handbook/COMMUNICATION.md +55 -0
  23. package/src/runtimes/_shared/handbook/DM_SCOPE.md +13 -0
  24. package/src/runtimes/_shared/handbook/GOAL_AUTHORITY.md +46 -0
  25. package/src/runtimes/_shared/handbook/GOAL_TASK_CORE.md +43 -0
  26. package/src/runtimes/_shared/handbook/GROUP_ADMIN_SCOPE.md +21 -0
  27. package/src/runtimes/_shared/handbook/GROUP_MEMBER_SCOPE.md +15 -0
  28. package/src/runtimes/_shared/handbook/SURFACES.md +41 -0
  29. package/src/runtimes/_shared/handbook/TASK_WORKER.md +14 -0
  30. package/src/runtimes/_shared/standing-prompt.mjs +134 -275
  31. package/src/runtimes/_shared/wake-prompt.mjs +261 -0
  32. package/src/runtimes/claude-code/index.mjs +19 -46
  33. package/src/runtimes/claude-code/session.mjs +2 -7
  34. package/src/runtimes/codex/index.mjs +115 -63
  35. package/src/runtimes/codex/session.mjs +2 -12
  36. package/src/runtimes/openclaw/index.mjs +11 -24
  37. package/src/runtimes/opencode/index.mjs +38 -60
  38. package/src/runtimes/opencode/session.mjs +12 -12
  39. package/src/runtimes/pi/index.mjs +38 -60
  40. package/src/runtimes/pi/session.mjs +9 -6
  41. 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,15 @@ 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
+ charter get/set conversation goal and role spec (agent CLI surface)
234
+ group create/list/delete groups, manage charters/members (agent CLI surface)
235
+ dashboard set/get conversation dashboards (agent CLI surface)
236
+ briefing publish/get owner briefings (agent CLI surface)
237
+ agent list/create/delete owned agent slots (agent CLI surface)
238
+ service publish/list/call shared services (agent CLI surface)
239
+ credential request owner-filled credentials (agent CLI surface)
240
+ reminder schedule/list/snooze/cancel reminders (agent CLI surface)
241
+ attachment view private chat assets (agent CLI surface)
230
242
  server server-info introspection (agent CLI surface)
231
243
  install-daemon install or refresh the background daemon
232
244
  update update the npm package and refresh the daemon
package/bin/ticlawk.mjs CHANGED
@@ -30,9 +30,27 @@ import { getInstallDaemonHelp, runInstallDaemon } from '../src/core/daemon-insta
30
30
  import { runSetupReadiness } from '../src/core/setup-readiness.mjs';
31
31
  import {
32
32
  AGENT_COMMAND_HELP,
33
- runAttachmentUploadCommand,
34
33
  runAttachmentViewCommand,
35
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,
36
54
  runGroupMembersAddCommand,
37
55
  runGroupMembersCommand,
38
56
  runGroupMembersRemoveCommand,
@@ -93,12 +111,16 @@ Usage:
93
111
  ticlawk version
94
112
 
95
113
  Agent CLI (run inside an agent runtime; requires TICLAWK_RUNTIME_AGENT_ID):
96
- ticlawk message send --target <t> # body on stdin
114
+ ticlawk message send --target <t> --phase progress|final # body on stdin
97
115
  ticlawk message read --target <t> [opts]
98
116
  ticlawk task claim --message-id <id>
99
117
  ticlawk task update --task-id <id> --status <s>
100
- ticlawk task list [--target <t>]
118
+ ticlawk task list [--target <t>] # group admins see the full task board
119
+ ticlawk charter get --target <t>
101
120
  ticlawk group members --target <t>
121
+ ticlawk group list
122
+ ticlawk agent list
123
+ ticlawk dashboard get --conversation-id <id>
102
124
  ticlawk server info [--refresh]
103
125
 
104
126
  Commands:
@@ -107,7 +129,15 @@ Commands:
107
129
  profile list or switch saved local identities
108
130
  message send/read chat messages (agent CLI surface)
109
131
  task claim/update/list tasks (agent CLI surface)
110
- group list members of a group conversation (agent CLI surface)
132
+ charter get/set conversation goal and role spec (agent CLI surface)
133
+ group create/list/delete groups, manage charters/members (agent CLI surface)
134
+ dashboard set/get conversation dashboards (agent CLI surface)
135
+ briefing publish/get owner briefings (agent CLI surface)
136
+ agent list/create/delete owned agent slots (agent CLI surface)
137
+ service publish/list/call shared services (agent CLI surface)
138
+ credential request owner-filled credentials (agent CLI surface)
139
+ reminder schedule/list/snooze/cancel reminders (agent CLI surface)
140
+ attachment view private chat assets (agent CLI surface)
111
141
  server server-info introspection (agent CLI surface)
112
142
  install-daemon install or refresh the background daemon
113
143
  update update the npm package and refresh the daemon
@@ -179,6 +209,10 @@ function printHelp(helpPath, args = {}) {
179
209
  console.log(getInstallDaemonHelp());
180
210
  return;
181
211
  }
212
+ if (AGENT_COMMAND_HELP[head]) {
213
+ console.log(AGENT_COMMAND_HELP[head]);
214
+ return;
215
+ }
182
216
  printUsage();
183
217
  }
184
218
 
@@ -358,24 +392,6 @@ async function main() {
358
392
  process.exit(1);
359
393
  }
360
394
 
361
- if (command === 'profile') {
362
- const sub = args._[1];
363
- if (args.help || args.h || !sub) {
364
- console.log(AGENT_COMMAND_HELP.profile);
365
- return;
366
- }
367
- if (sub === 'show') {
368
- process.exitCode = await runProfileShowCommand(args);
369
- return;
370
- }
371
- if (sub === 'update') {
372
- process.exitCode = await runProfileUpdateCommand(args);
373
- return;
374
- }
375
- console.error(`unknown profile subcommand: ${sub}`);
376
- process.exit(1);
377
- }
378
-
379
395
  if (command === 'reminder') {
380
396
  const sub = args._[1];
381
397
  if (args.help || args.h || !sub) {
@@ -416,10 +432,6 @@ async function main() {
416
432
  console.log(AGENT_COMMAND_HELP.attachment);
417
433
  return;
418
434
  }
419
- if (sub === 'upload') {
420
- process.exitCode = await runAttachmentUploadCommand(args);
421
- return;
422
- }
423
435
  if (sub === 'view') {
424
436
  process.exitCode = await runAttachmentViewCommand(args);
425
437
  return;
@@ -458,6 +470,147 @@ async function main() {
458
470
  process.exit(1);
459
471
  }
460
472
 
473
+ if (command === 'workstream') {
474
+ const sub = args._[1];
475
+ if (args.help || args.h || !sub) {
476
+ console.log(AGENT_COMMAND_HELP.workstream);
477
+ return;
478
+ }
479
+ if (sub === 'create') {
480
+ process.exitCode = await runWorkstreamCreateCommand(args);
481
+ return;
482
+ }
483
+ if (sub === 'delete') {
484
+ process.exitCode = await runWorkstreamDeleteCommand(args);
485
+ return;
486
+ }
487
+ if (sub === 'list') {
488
+ process.exitCode = await runWorkstreamListCommand(args);
489
+ return;
490
+ }
491
+ if (sub === 'charter') {
492
+ const op = args._[2];
493
+ if (op === 'get') {
494
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
495
+ return;
496
+ }
497
+ if (op === 'set') {
498
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
499
+ return;
500
+ }
501
+ console.error(`unknown workstream charter op: ${op}`);
502
+ process.exit(1);
503
+ }
504
+ console.error(`unknown workstream subcommand: ${sub}`);
505
+ process.exit(1);
506
+ }
507
+
508
+ if (command === 'agent') {
509
+ const sub = args._[1];
510
+ if (args.help || args.h || !sub) {
511
+ console.log(AGENT_COMMAND_HELP.agent);
512
+ return;
513
+ }
514
+ if (sub === 'list') {
515
+ process.exitCode = await runAgentListCommand(args);
516
+ return;
517
+ }
518
+ if (sub === 'create') {
519
+ process.exitCode = await runAgentCreateCommand(args);
520
+ return;
521
+ }
522
+ if (sub === 'delete') {
523
+ process.exitCode = await runAgentDeleteCommand(args);
524
+ return;
525
+ }
526
+ console.error(`unknown agent subcommand: ${sub}`);
527
+ process.exit(1);
528
+ }
529
+
530
+ if (command === 'service') {
531
+ const sub = args._[1];
532
+ if (args.help || args.h || !sub) {
533
+ console.log(AGENT_COMMAND_HELP.service);
534
+ return;
535
+ }
536
+ if (sub === 'create') { process.exitCode = await runServiceCreateCommand(args); return; }
537
+ if (sub === 'update') { process.exitCode = await runServiceUpdateCommand(args); return; }
538
+ if (sub === 'delete') { process.exitCode = await runServiceDeleteCommand(args); return; }
539
+ if (sub === 'list') { process.exitCode = await runServiceListCommand(args); return; }
540
+ if (sub === 'info') { process.exitCode = await runServiceInfoCommand(args); return; }
541
+ if (sub === 'call') { process.exitCode = await runServiceCallCommand(args); return; }
542
+ console.error(`unknown service subcommand: ${sub}`);
543
+ process.exit(1);
544
+ }
545
+
546
+ if (command === 'briefing') {
547
+ const sub = args._[1];
548
+ if (args.help || args.h || !sub) {
549
+ console.log(AGENT_COMMAND_HELP.briefing);
550
+ return;
551
+ }
552
+ if (sub === 'publish') {
553
+ process.exitCode = await runBriefingPublishCommand(args);
554
+ return;
555
+ }
556
+ if (sub === 'get') {
557
+ process.exitCode = await runBriefingGetCommand(args);
558
+ return;
559
+ }
560
+ console.error(`unknown briefing subcommand: ${sub}`);
561
+ process.exit(1);
562
+ }
563
+
564
+ if (command === 'credential') {
565
+ const sub = args._[1];
566
+ if (args.help || args.h || !sub) {
567
+ console.log(AGENT_COMMAND_HELP.credential);
568
+ return;
569
+ }
570
+ if (sub === 'request') {
571
+ process.exitCode = await runCredentialRequestCommand(args);
572
+ return;
573
+ }
574
+ console.error(`unknown credential subcommand: ${sub}`);
575
+ process.exit(1);
576
+ }
577
+
578
+ if (command === 'dashboard') {
579
+ const sub = args._[1];
580
+ if (args.help || args.h || !sub) {
581
+ console.log(AGENT_COMMAND_HELP.dashboard);
582
+ return;
583
+ }
584
+ if (sub === 'set') {
585
+ process.exitCode = await runDashboardSetCommand(args);
586
+ return;
587
+ }
588
+ if (sub === 'get') {
589
+ process.exitCode = await runDashboardGetCommand(args);
590
+ return;
591
+ }
592
+ console.error(`unknown dashboard subcommand: ${sub}`);
593
+ process.exit(1);
594
+ }
595
+
596
+ if (command === 'charter') {
597
+ const sub = args._[1];
598
+ if (args.help || args.h || !sub) {
599
+ console.log(AGENT_COMMAND_HELP.charter);
600
+ return;
601
+ }
602
+ if (sub === 'get') {
603
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
604
+ return;
605
+ }
606
+ if (sub === 'set') {
607
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
608
+ return;
609
+ }
610
+ console.error(`unknown charter subcommand: ${sub}`);
611
+ process.exit(1);
612
+ }
613
+
461
614
  if (command === 'group') {
462
615
  const sub = args._[1];
463
616
  if (args.help || args.h || !sub) {
@@ -468,6 +621,27 @@ async function main() {
468
621
  process.exitCode = await runGroupCreateCommand(args);
469
622
  return;
470
623
  }
624
+ if (sub === 'list') {
625
+ process.exitCode = await runWorkstreamListCommand(args);
626
+ return;
627
+ }
628
+ if (sub === 'delete') {
629
+ process.exitCode = await runWorkstreamDeleteCommand(args);
630
+ return;
631
+ }
632
+ if (sub === 'charter') {
633
+ const op = args._[2];
634
+ if (op === 'get') {
635
+ process.exitCode = await runWorkstreamCharterGetCommand(args);
636
+ return;
637
+ }
638
+ if (op === 'set') {
639
+ process.exitCode = await runWorkstreamCharterSetCommand(args);
640
+ return;
641
+ }
642
+ console.error(`unknown group charter op: ${op}`);
643
+ process.exit(1);
644
+ }
471
645
  if (sub === 'members') {
472
646
  // Same subcommand handles list / add / remove based on flags.
473
647
  if (args.add) {
@@ -610,6 +784,14 @@ async function main() {
610
784
  console.log('Restart ticlawk for the daemon to use the selected profile.');
611
785
  return;
612
786
  }
787
+ if (subcommand === 'show') {
788
+ process.exitCode = await runProfileShowCommand(args);
789
+ return;
790
+ }
791
+ if (subcommand === 'update') {
792
+ process.exitCode = await runProfileUpdateCommand(args);
793
+ return;
794
+ }
613
795
  console.error(`unknown profile subcommand: ${subcommand}`);
614
796
  process.exit(1);
615
797
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticlawk",
3
- "version": "0.1.16-dev.8",
3
+ "version": "0.1.16",
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",