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.
- package/README.md +17 -3
- package/bin/ticlawk.mjs +255 -21
- package/package.json +1 -1
- package/src/adapters/ticlawk/api.mjs +350 -50
- package/src/adapters/ticlawk/credentials.mjs +41 -1
- package/src/adapters/ticlawk/index.mjs +248 -130
- package/src/adapters/ticlawk/wake-client.mjs +1 -1
- package/src/cli/agent-commands.mjs +715 -18
- package/src/core/agent-cli-handlers.mjs +556 -18
- package/src/core/agent-home.mjs +81 -1
- package/src/core/argv.mjs +11 -1
- package/src/core/events/worker-events.mjs +32 -36
- package/src/core/http.mjs +152 -0
- package/src/core/runtime-contract.mjs +0 -1
- package/src/core/runtime-env.mjs +7 -0
- package/src/core/runtime-support.mjs +130 -78
- package/src/runtimes/_shared/agent-handbook.mjs +45 -0
- package/src/runtimes/_shared/brand.mjs +2 -0
- package/src/runtimes/_shared/goal-step-prompt.mjs +98 -0
- package/src/runtimes/_shared/goal-task-protocol.mjs +50 -0
- package/src/runtimes/_shared/handbook/BASICS.md +27 -0
- package/src/runtimes/_shared/handbook/COLLABORATION.md +37 -0
- package/src/runtimes/_shared/handbook/COMMUNICATION.md +55 -0
- package/src/runtimes/_shared/handbook/DM_SCOPE.md +13 -0
- package/src/runtimes/_shared/handbook/GOAL_AUTHORITY.md +47 -0
- package/src/runtimes/_shared/handbook/GOAL_TASK_CORE.md +43 -0
- package/src/runtimes/_shared/handbook/GROUP_ADMIN_SCOPE.md +21 -0
- package/src/runtimes/_shared/handbook/GROUP_MEMBER_SCOPE.md +15 -0
- package/src/runtimes/_shared/handbook/SURFACES.md +41 -0
- package/src/runtimes/_shared/handbook/TASK_WORKER.md +14 -0
- package/src/runtimes/_shared/standing-prompt.mjs +124 -279
- package/src/runtimes/_shared/wake-prompt.mjs +268 -0
- package/src/runtimes/claude-code/index.mjs +19 -46
- package/src/runtimes/claude-code/session.mjs +2 -7
- package/src/runtimes/codex/index.mjs +115 -63
- package/src/runtimes/codex/session.mjs +2 -12
- package/src/runtimes/openclaw/index.mjs +11 -24
- package/src/runtimes/opencode/index.mjs +38 -60
- package/src/runtimes/opencode/session.mjs +12 -12
- package/src/runtimes/pi/index.mjs +38 -60
- package/src/runtimes/pi/session.mjs +9 -6
- 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>
|
|
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
|
-
|
|
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>
|
|
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
|
-
|
|
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