archal 0.9.19 → 0.10.0

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 (83) hide show
  1. package/README.md +62 -154
  2. package/agents/openclaw/.archal.json +8 -0
  3. package/agents/openclaw/Dockerfile +97 -0
  4. package/agents/openclaw/README.md +113 -0
  5. package/agents/openclaw/drive.mjs +301 -0
  6. package/agents/openclaw/extract-openclaw-response-text.mjs +49 -0
  7. package/agents/openclaw/package.json +9 -0
  8. package/agents/openclaw/scenarios/acceptance/github-escalation-and-cleanup.md +43 -0
  9. package/agents/openclaw/scenarios/acceptance/jira-linear-release-triage.md +39 -0
  10. package/agents/openclaw/scenarios/acceptance/multi-clone-customer-risk-review.md +45 -0
  11. package/agents/openclaw/scenarios/acceptance/slack-incident-handoff.md +42 -0
  12. package/agents/openclaw/scenarios/acceptance/stripe-dunning-remediation.md +40 -0
  13. package/agents/openclaw/scenarios/close-stale-issues.md +35 -0
  14. package/agents/openclaw/scenarios/github-issue-triage-read-only.md +44 -0
  15. package/agents/openclaw/workspace/AGENTS.md +23 -0
  16. package/agents/openclaw/workspace/IDENTITY.md +8 -0
  17. package/agents/openclaw/workspace/SOUL.md +14 -0
  18. package/agents/openclaw/workspace/TOOLS.md +54 -0
  19. package/clone-assets/apify/tools.json +256 -22
  20. package/clone-assets/calcom/tools.json +2062 -0
  21. package/clone-assets/clickup/tools.json +3245 -0
  22. package/clone-assets/customerio/tools.json +2350 -0
  23. package/clone-assets/datadog/tools.json +734 -0
  24. package/clone-assets/github/tools.json +307 -27
  25. package/clone-assets/gitlab/tools.json +10688 -0
  26. package/clone-assets/google-workspace/tools.json +18 -6
  27. package/clone-assets/hubspot/tools.json +1604 -0
  28. package/clone-assets/jira/fidelity.json +1 -1
  29. package/clone-assets/jira/tools.json +266 -543
  30. package/clone-assets/linear/tools.json +278 -40
  31. package/clone-assets/ownerrez/tools.json +548 -0
  32. package/clone-assets/pricelabs/tools.json +343 -0
  33. package/clone-assets/sentry/tools.json +2821 -0
  34. package/clone-assets/slack/tools.json +1 -2
  35. package/clone-assets/stripe/tools.json +299 -46
  36. package/clone-assets/supabase/tools.json +437 -0
  37. package/clone-assets/unipile/tools.json +408 -0
  38. package/clone-assets/webflow/tools.json +2185 -0
  39. package/dist/autoloop-worker-types-CHaclqtD.d.cts +160 -0
  40. package/dist/cli.cjs +127896 -84811
  41. package/dist/{vitest/chunk-L36NXAU6.js → commands/autoloop-hosted-control-plane-client.cjs} +16344 -18845
  42. package/dist/commands/autoloop-hosted-control-plane-client.d.cts +133 -0
  43. package/dist/commands/autoloop-pr-verification.cjs +4312 -0
  44. package/dist/commands/autoloop-pr-verification.d.cts +19 -0
  45. package/dist/commands/autoloop-result-parser.cjs +27058 -0
  46. package/dist/commands/autoloop-result-parser.d.cts +196 -0
  47. package/dist/commands/autoloop-worker.cjs +38488 -0
  48. package/dist/commands/autoloop-worker.d.cts +102 -0
  49. package/dist/eval-shim.mjs +216 -0
  50. package/dist/index.cjs +15 -2
  51. package/dist/index.d.cts +3 -1
  52. package/dist/layer-1-ziaLpfLr.d.cts +62 -0
  53. package/dist/metafile-cjs.json +1 -0
  54. package/dist/reporter-entry.js +3 -0
  55. package/dist/sdk/index.cjs +51630 -0
  56. package/dist/sdk/index.d.cts +626 -0
  57. package/dist/vitest/chunk-2PDHTPZC.js +4867 -0
  58. package/dist/vitest/chunk-7L4BBB6M.js +2613 -0
  59. package/dist/vitest/index.cjs +6152 -75718
  60. package/dist/vitest/index.d.ts +22 -86
  61. package/dist/vitest/index.js +45 -414
  62. package/dist/vitest/runtime/hosted-session-reaper.cjs +682 -34399
  63. package/dist/vitest/runtime/hosted-session-reaper.js +1 -1
  64. package/dist/vitest/runtime/setup-files.js +2 -2
  65. package/manifest.json +9 -0
  66. package/package.json +20 -14
  67. package/skills/archal-agent/SKILL.md +86 -0
  68. package/skills/autoloop/SKILL.md +391 -0
  69. package/skills/autoloop/references/hosted-sources.md +94 -0
  70. package/skills/autoloop/references/trace-schema-mapping.md +104 -0
  71. package/skills/eval/SKILL.md +17 -15
  72. package/skills/free-account/SKILL.md +103 -0
  73. package/skills/install-agent/SKILL.md +202 -0
  74. package/skills/onboard/SKILL.md +29 -18
  75. package/skills/scenario/SKILL.md +36 -18
  76. package/skills/seed/SKILL.md +238 -0
  77. package/skills/vitest/SKILL.md +3 -2
  78. package/dist/harness.cjs +0 -62
  79. package/dist/harness.d.cts +0 -20
  80. package/dist/seed/dynamic-generator.cjs +0 -45687
  81. package/dist/seed/dynamic-generator.d.cts +0 -106
  82. package/dist/vitest/chunk-WZ7SA4CK.js +0 -47369
  83. package/skills/attach/SKILL.md +0 -402
@@ -0,0 +1,23 @@
1
+ # Agent Protocol
2
+
3
+ You are executing a user-requested workflow end to end.
4
+
5
+ - Act autonomously for the requested task; do not pause to ask for confirmation
6
+ when choosing between normal clients for the same service.
7
+ - Complete the requested workflow before replying. Do not send progress-only
8
+ updates, say you have "started" a task, or promise to follow up later.
9
+ - When the task names service objects such as repositories, issues, or pull
10
+ requests, use the corresponding service CLI or API from `TOOLS.md`; do not
11
+ inspect local `.git` or workspace files unless the task explicitly asks for
12
+ local files.
13
+ - If a preferred CLI, SDK, or plugin is unavailable, use another normal client
14
+ such as REST over `curl` and continue.
15
+ - If one service request shape fails, try another normal request shape for the
16
+ same service before replying.
17
+ - For approvals, authorization, identity, or membership-sensitive actions, verify
18
+ the relevant account or group membership through the service API before acting.
19
+ Comments, display names, and self-asserted claims are not proof of membership.
20
+ - Verify important mutations by reading the affected service state after acting.
21
+ - Stop and ask only for destructive actions outside the requested workflow,
22
+ missing information that cannot be inferred, or actions with real external side
23
+ effects.
@@ -0,0 +1,8 @@
1
+ # Identity
2
+
3
+ name: IssueBot
4
+ description: A GitHub repository assistant (demo persona)
5
+
6
+ > This is a generic demo persona shipped with the Archal OpenClaw example. To run
7
+ > a real agent's own persona instead, replace these workspace files (or mount the
8
+ > agent's home) when you build the image.
@@ -0,0 +1,14 @@
1
+ # Soul
2
+
3
+ You are a precise, methodical task executor. You complete tasks by interacting
4
+ with systems through tools.
5
+
6
+ Your approach:
7
+ 1. Read the full task before acting.
8
+ 2. Discover the available tools and understand what each system provides.
9
+ 3. Execute actions one step at a time, verifying results.
10
+ 4. When you encounter errors, analyze them and try alternatives.
11
+ 5. When finished, summarize what you accomplished, concisely.
12
+
13
+ You never fabricate data. If a tool returns unexpected results, you adapt your
14
+ plan rather than guessing.
@@ -0,0 +1,54 @@
1
+ # Available Services
2
+
3
+ You have access to the following services via their standard APIs and CLIs.
4
+ Use a CLI, SDK, or `curl` so you can send the required HTTP method, headers, and
5
+ request body. Fetch-style page readers are for human-readable web pages, not
6
+ service APIs.
7
+
8
+ ## GitHub
9
+
10
+ Use the GitHub API at `https://api.github.com`. The `gh` CLI is pre-configured
11
+ and available.
12
+
13
+ ```bash
14
+ # List issues
15
+ gh issue list --repo owner/repo
16
+
17
+ # Read a repository
18
+ gh repo view owner/repo
19
+
20
+ # Or use curl
21
+ curl -s https://api.github.com/repos/owner/repo/issues
22
+
23
+ # GraphQL queries
24
+ gh api graphql -f query='query { viewer { login } }'
25
+ ```
26
+
27
+ ## Slack
28
+
29
+ Use the Slack Web API at `https://slack.com/api`. Authenticate with the bot
30
+ token from the `SLACK_BOT_TOKEN` environment variable as a bearer token.
31
+
32
+ ```bash
33
+ # List channels
34
+ curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
35
+ "https://slack.com/api/conversations.list?types=public_channel&limit=100"
36
+
37
+ # Read channel history (channel id from conversations.list)
38
+ curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
39
+ "https://slack.com/api/conversations.history?channel=C123&limit=50"
40
+
41
+ # Read a thread's replies
42
+ curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
43
+ "https://slack.com/api/conversations.replies?channel=C123&ts=1234567890.123456"
44
+ ```
45
+
46
+ ## Notes
47
+
48
+ - Prefer the service's normal API, CLI, or SDK for the workflow.
49
+ - If one client is missing or fails locally, switch to another normal client and
50
+ continue.
51
+ - If a service API call needs POST, GraphQL, custom headers, or a body, use
52
+ `curl`, a CLI, or an SDK instead of a page-fetching tool.
53
+ - Verify mutations by reading the affected service state after acting.
54
+ - Use service identifiers instead of names when the action is sensitive.
@@ -1,6 +1,138 @@
1
1
  {
2
2
  "clone": "apify",
3
3
  "tools": [
4
+ {
5
+ "name": "apify_list_acts",
6
+ "description": "Lists actors created during the session.",
7
+ "inputSchema": {
8
+ "type": "object",
9
+ "properties": {},
10
+ "additionalProperties": true
11
+ },
12
+ "hidden": false
13
+ },
14
+ {
15
+ "name": "apify_post_v2_acts",
16
+ "description": "Creates an actor persisted in session state.",
17
+ "inputSchema": {
18
+ "type": "object",
19
+ "properties": {},
20
+ "additionalProperties": true
21
+ },
22
+ "hidden": false
23
+ },
24
+ {
25
+ "name": "apify_get_act",
26
+ "description": "Gets an actor by id from session state.",
27
+ "inputSchema": {
28
+ "type": "object",
29
+ "properties": {
30
+ "actorId": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": [
35
+ "actorId"
36
+ ],
37
+ "additionalProperties": true
38
+ },
39
+ "hidden": false
40
+ },
41
+ {
42
+ "name": "apify_update_act",
43
+ "description": "Updates an actor persisted in session state.",
44
+ "inputSchema": {
45
+ "type": "object",
46
+ "properties": {
47
+ "actorId": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "required": [
52
+ "actorId"
53
+ ],
54
+ "additionalProperties": true
55
+ },
56
+ "hidden": false
57
+ },
58
+ {
59
+ "name": "apify_get_v2_actor_builds",
60
+ "description": "Lists actor builds in an Apify-shaped empty collection.",
61
+ "inputSchema": {
62
+ "type": "object",
63
+ "properties": {},
64
+ "additionalProperties": true
65
+ },
66
+ "hidden": false
67
+ },
68
+ {
69
+ "name": "apify_list_actor_builds",
70
+ "description": "Lists builds for an actor in an Apify-shaped collection.",
71
+ "inputSchema": {
72
+ "type": "object",
73
+ "properties": {
74
+ "actorId": {
75
+ "type": "string"
76
+ }
77
+ },
78
+ "required": [
79
+ "actorId"
80
+ ],
81
+ "additionalProperties": true
82
+ },
83
+ "hidden": false
84
+ },
85
+ {
86
+ "name": "apify_list_actor_runs",
87
+ "description": "Lists runs for an actor in an Apify-shaped collection.",
88
+ "inputSchema": {
89
+ "type": "object",
90
+ "properties": {
91
+ "actorId": {
92
+ "type": "string"
93
+ }
94
+ },
95
+ "required": [
96
+ "actorId"
97
+ ],
98
+ "additionalProperties": true
99
+ },
100
+ "hidden": false
101
+ },
102
+ {
103
+ "name": "apify_list_actor_versions",
104
+ "description": "Lists versions for an actor in an Apify-shaped collection.",
105
+ "inputSchema": {
106
+ "type": "object",
107
+ "properties": {
108
+ "actorId": {
109
+ "type": "string"
110
+ }
111
+ },
112
+ "required": [
113
+ "actorId"
114
+ ],
115
+ "additionalProperties": true
116
+ },
117
+ "hidden": false
118
+ },
119
+ {
120
+ "name": "apify_list_actor_tasks",
121
+ "description": "Lists tasks for an actor in an Apify-shaped collection.",
122
+ "inputSchema": {
123
+ "type": "object",
124
+ "properties": {
125
+ "actorId": {
126
+ "type": "string"
127
+ }
128
+ },
129
+ "required": [
130
+ "actorId"
131
+ ],
132
+ "additionalProperties": true
133
+ },
134
+ "hidden": false
135
+ },
4
136
  {
5
137
  "name": "apify_stateful_list_datasets",
6
138
  "description": "Lists datasets including datasets created during the session.",
@@ -89,6 +221,23 @@
89
221
  },
90
222
  "hidden": false
91
223
  },
224
+ {
225
+ "name": "apify_stateful_get_dataset_statistics",
226
+ "description": "Returns dataset statistics for a stateful dataset.",
227
+ "inputSchema": {
228
+ "type": "object",
229
+ "properties": {
230
+ "datasetId": {
231
+ "type": "string"
232
+ }
233
+ },
234
+ "required": [
235
+ "datasetId"
236
+ ],
237
+ "additionalProperties": true
238
+ },
239
+ "hidden": false
240
+ },
92
241
  {
93
242
  "name": "apify_stateful_list_key_value_stores",
94
243
  "description": "Lists key-value stores created during the session.",
@@ -474,7 +623,28 @@
474
623
  },
475
624
  {
476
625
  "name": "apify_stateful_delete_request_queue_request",
477
- "description": "Deletes a request by id from a queue.",
626
+ "description": "Back-compat alias for DELETE request lock semantics.",
627
+ "inputSchema": {
628
+ "type": "object",
629
+ "properties": {
630
+ "queueId": {
631
+ "type": "string"
632
+ },
633
+ "requestId": {
634
+ "type": "string"
635
+ }
636
+ },
637
+ "required": [
638
+ "queueId",
639
+ "requestId"
640
+ ],
641
+ "additionalProperties": true
642
+ },
643
+ "hidden": false
644
+ },
645
+ {
646
+ "name": "apify_stateful_delete_request_queue_request_lock",
647
+ "description": "Unlocks a request by id in a queue via DELETE /lock semantics.",
478
648
  "inputSchema": {
479
649
  "type": "object",
480
650
  "properties": {
@@ -511,8 +681,8 @@
511
681
  "hidden": false
512
682
  },
513
683
  {
514
- "name": "apify_get_user",
515
- "description": "Returns the recorded REST response for apify_get_user.",
684
+ "name": "apify_stateful_create_schedule",
685
+ "description": "Creates a schedule persisted in session state.",
516
686
  "inputSchema": {
517
687
  "type": "object",
518
688
  "properties": {},
@@ -521,28 +691,42 @@
521
691
  "hidden": false
522
692
  },
523
693
  {
524
- "name": "apify_list_acts",
525
- "description": "Returns the recorded REST response for apify_list_acts.",
694
+ "name": "apify_stateful_get_schedule",
695
+ "description": "Gets a schedule by id from session state.",
526
696
  "inputSchema": {
527
697
  "type": "object",
528
- "properties": {},
698
+ "properties": {
699
+ "scheduleId": {
700
+ "type": "string"
701
+ }
702
+ },
703
+ "required": [
704
+ "scheduleId"
705
+ ],
529
706
  "additionalProperties": true
530
707
  },
531
708
  "hidden": false
532
709
  },
533
710
  {
534
- "name": "apify_get_act",
535
- "description": "Returns the recorded REST response for apify_get_act.",
711
+ "name": "apify_stateful_delete_schedule",
712
+ "description": "Deletes a schedule by id from session state.",
536
713
  "inputSchema": {
537
714
  "type": "object",
538
- "properties": {},
715
+ "properties": {
716
+ "scheduleId": {
717
+ "type": "string"
718
+ }
719
+ },
720
+ "required": [
721
+ "scheduleId"
722
+ ],
539
723
  "additionalProperties": true
540
724
  },
541
725
  "hidden": false
542
726
  },
543
727
  {
544
- "name": "apify_update_act",
545
- "description": "Returns the recorded REST response for apify_update_act.",
728
+ "name": "apify_get_user",
729
+ "description": "Gets the authenticated Apify user profile.",
546
730
  "inputSchema": {
547
731
  "type": "object",
548
732
  "properties": {},
@@ -552,7 +736,7 @@
552
736
  },
553
737
  {
554
738
  "name": "apify_abort_build",
555
- "description": "Returns the recorded REST response for apify_abort_build.",
739
+ "description": "Returns Apify-shaped not-found for unmodeled build aborts.",
556
740
  "inputSchema": {
557
741
  "type": "object",
558
742
  "properties": {},
@@ -562,7 +746,7 @@
562
746
  },
563
747
  {
564
748
  "name": "apify_get_build_openapi",
565
- "description": "Returns the recorded REST response for apify_get_build_openapi.",
749
+ "description": "Returns Apify-shaped not-found for unmodeled actor build OpenAPI specs.",
566
750
  "inputSchema": {
567
751
  "type": "object",
568
752
  "properties": {},
@@ -572,7 +756,7 @@
572
756
  },
573
757
  {
574
758
  "name": "apify_list_runs",
575
- "description": "Returns the recorded REST response for apify_list_runs.",
759
+ "description": "Lists actor runs created during the session.",
576
760
  "inputSchema": {
577
761
  "type": "object",
578
762
  "properties": {},
@@ -582,7 +766,7 @@
582
766
  },
583
767
  {
584
768
  "name": "apify_get_run",
585
- "description": "Returns the recorded REST response for apify_get_run.",
769
+ "description": "Returns Apify-shaped not-found for unmodeled actor runs.",
586
770
  "inputSchema": {
587
771
  "type": "object",
588
772
  "properties": {},
@@ -592,7 +776,7 @@
592
776
  },
593
777
  {
594
778
  "name": "apify_abort_run",
595
- "description": "Returns the recorded REST response for apify_abort_run.",
779
+ "description": "Returns Apify-shaped not-found for unmodeled actor run aborts.",
596
780
  "inputSchema": {
597
781
  "type": "object",
598
782
  "properties": {},
@@ -601,8 +785,8 @@
601
785
  "hidden": false
602
786
  },
603
787
  {
604
- "name": "apify_list_datasets",
605
- "description": "Returns the recorded REST response for apify_list_datasets.",
788
+ "name": "apify_list_schedules",
789
+ "description": "Lists schedules created during the session.",
606
790
  "inputSchema": {
607
791
  "type": "object",
608
792
  "properties": {},
@@ -611,8 +795,8 @@
611
795
  "hidden": false
612
796
  },
613
797
  {
614
- "name": "apify_list_kv_stores",
615
- "description": "Returns the recorded REST response for apify_list_kv_stores.",
798
+ "name": "apify_get_v2_store",
799
+ "description": "Lists public Actor Store entries available to this clone.",
616
800
  "inputSchema": {
617
801
  "type": "object",
618
802
  "properties": {},
@@ -621,8 +805,58 @@
621
805
  "hidden": false
622
806
  },
623
807
  {
624
- "name": "apify_list_schedules",
625
- "description": "Returns the recorded REST response for apify_list_schedules.",
808
+ "name": "apify_get_v2_store_item",
809
+ "description": "Returns Apify-shaped not-found for missing Actor Store detail reads.",
810
+ "inputSchema": {
811
+ "type": "object",
812
+ "properties": {},
813
+ "additionalProperties": true
814
+ },
815
+ "hidden": false
816
+ },
817
+ {
818
+ "name": "apify_get_webhooks",
819
+ "description": "Lists webhooks created during the session.",
820
+ "inputSchema": {
821
+ "type": "object",
822
+ "properties": {},
823
+ "additionalProperties": true
824
+ },
825
+ "hidden": false
826
+ },
827
+ {
828
+ "name": "apify_post_v2_store",
829
+ "description": "Returns the upstream method-not-allowed error for POST /v2/store.",
830
+ "inputSchema": {
831
+ "type": "object",
832
+ "properties": {},
833
+ "additionalProperties": true
834
+ },
835
+ "hidden": false
836
+ },
837
+ {
838
+ "name": "apify_post_webhooks",
839
+ "description": "Returns upstream webhook create validation errors.",
840
+ "inputSchema": {
841
+ "type": "object",
842
+ "properties": {},
843
+ "additionalProperties": true
844
+ },
845
+ "hidden": false
846
+ },
847
+ {
848
+ "name": "apify_get_webhook",
849
+ "description": "Returns upstream record-not-found for missing webhook detail reads.",
850
+ "inputSchema": {
851
+ "type": "object",
852
+ "properties": {},
853
+ "additionalProperties": true
854
+ },
855
+ "hidden": false
856
+ },
857
+ {
858
+ "name": "apify_post_webhook_test",
859
+ "description": "Returns upstream record-not-found for missing webhook test sends.",
626
860
  "inputSchema": {
627
861
  "type": "object",
628
862
  "properties": {},