@theway-ai/sdk 1.1.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 (59) hide show
  1. package/README.md +102 -0
  2. package/dist/client.d.ts +138 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +390 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/generated/commands.d.ts +160 -0
  7. package/dist/generated/commands.d.ts.map +1 -0
  8. package/dist/generated/commands.js +449 -0
  9. package/dist/generated/commands.js.map +1 -0
  10. package/dist/generated/events.d.ts +144 -0
  11. package/dist/generated/events.d.ts.map +1 -0
  12. package/dist/generated/events.js +1044 -0
  13. package/dist/generated/events.js.map +1 -0
  14. package/dist/generated/extensions.d.ts +184 -0
  15. package/dist/generated/extensions.d.ts.map +1 -0
  16. package/dist/generated/extensions.js +1309 -0
  17. package/dist/generated/extensions.js.map +1 -0
  18. package/dist/generated/graph_engine.d.ts +373 -0
  19. package/dist/generated/graph_engine.d.ts.map +1 -0
  20. package/dist/generated/graph_engine.js +2422 -0
  21. package/dist/generated/graph_engine.js.map +1 -0
  22. package/dist/generated/health.d.ts +83 -0
  23. package/dist/generated/health.d.ts.map +1 -0
  24. package/dist/generated/health.js +179 -0
  25. package/dist/generated/health.js.map +1 -0
  26. package/dist/generated/session.d.ts +490 -0
  27. package/dist/generated/session.d.ts.map +1 -0
  28. package/dist/generated/session.js +3809 -0
  29. package/dist/generated/session.js.map +1 -0
  30. package/dist/generated/settings.d.ts +175 -0
  31. package/dist/generated/settings.d.ts.map +1 -0
  32. package/dist/generated/settings.js +304 -0
  33. package/dist/generated/settings.js.map +1 -0
  34. package/dist/generated/state.d.ts +291 -0
  35. package/dist/generated/state.d.ts.map +1 -0
  36. package/dist/generated/state.js +1382 -0
  37. package/dist/generated/state.js.map +1 -0
  38. package/dist/generated/tools.d.ts +413 -0
  39. package/dist/generated/tools.d.ts.map +1 -0
  40. package/dist/generated/tools.js +2487 -0
  41. package/dist/generated/tools.js.map +1 -0
  42. package/dist/health.d.ts +20 -0
  43. package/dist/health.d.ts.map +1 -0
  44. package/dist/health.js +62 -0
  45. package/dist/health.js.map +1 -0
  46. package/dist/index.d.ts +15 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +21 -0
  49. package/dist/index.js.map +1 -0
  50. package/package.json +46 -0
  51. package/proto/commands.proto +57 -0
  52. package/proto/events.proto +80 -0
  53. package/proto/extensions.proto +99 -0
  54. package/proto/graph_engine.proto +193 -0
  55. package/proto/health.proto +26 -0
  56. package/proto/session.proto +299 -0
  57. package/proto/settings.proto +73 -0
  58. package/proto/state.proto +129 -0
  59. package/proto/tools.proto +238 -0
@@ -0,0 +1,129 @@
1
+ // Runtime state externalization domain (issue #84): the StorageService RPC
2
+ // contract for the daemon's persistent runtime state. This is the transport
3
+ // twin of the daemon-side RuntimeStorage seam (#79/#80): a controller/storage
4
+ // side can list/create/rename/delete sessions, persist and reload DAG run
5
+ // snapshots, and back up trigger rules and cron jobs without coupling to the
6
+ // local filesystem/SQLite layout.
7
+ //
8
+ // Session methods mirror SessionService so external storage can drive the same
9
+ // resource lifecycle; DAG/trigger/cron methods carry the serde wire twins from
10
+ // `crate::wire` and are implemented by a StorageOps handler in the daemon.
11
+
12
+ syntax = "proto3";
13
+ package theway.grpc.v1;
14
+
15
+ import "commands.proto";
16
+ import "session.proto";
17
+
18
+ // One persisted DAG run. `snapshot` is the portable JSON `PersistedRun` shape
19
+ // used by GraphEngineService checkpoint/restore, so storage backends treat DAG
20
+ // state as opaque JSON (definition + node progress).
21
+ message StoredDagRun {
22
+ string session_id = 1;
23
+ string run_id = 2;
24
+ string snapshot = 3;
25
+ }
26
+
27
+ message SaveDagRunRequest {
28
+ string session_id = 1;
29
+ string run_id = 2;
30
+ string snapshot = 3;
31
+ }
32
+
33
+ message SaveDagRunResponse {
34
+ bool saved = 1;
35
+ }
36
+
37
+ message LoadDagRunsRequest {
38
+ string session_id = 1;
39
+ // Omitted = load every stored run for the session; set = load one run.
40
+ optional string run_id = 2;
41
+ }
42
+
43
+ message LoadDagRunsResponse {
44
+ repeated StoredDagRun runs = 1;
45
+ }
46
+
47
+ // Session-scoped dynamic trigger rule, persisted in the sidecar format
48
+ // (`triggers.json`) but exposed as a portable storage contract.
49
+ message StoredTriggerRule {
50
+ string id = 1;
51
+ string condition = 2;
52
+ string action = 3;
53
+ bool enabled = 4;
54
+ bool fire_once = 5;
55
+ optional string fired_at = 6; // RFC3339, when the rule has fired
56
+ bool promote_to_chat = 7;
57
+ string created_at = 8; // RFC3339
58
+ }
59
+
60
+ message SaveTriggerRulesRequest {
61
+ string session_id = 1;
62
+ repeated StoredTriggerRule rules = 2;
63
+ }
64
+
65
+ message SaveTriggerRulesResponse {
66
+ uint32 count = 1;
67
+ }
68
+
69
+ message LoadTriggerRulesRequest {
70
+ string session_id = 1;
71
+ }
72
+
73
+ message LoadTriggerRulesResponse {
74
+ repeated StoredTriggerRule rules = 1;
75
+ }
76
+
77
+ // Session-scoped cron job, persisted in the sidecar format (`cron.toml`) but
78
+ // exposed as a portable storage contract.
79
+ message StoredCronJob {
80
+ string id = 1;
81
+ string schedule = 2; // standard 5-field cron expression
82
+ string action = 3;
83
+ bool enabled = 4;
84
+ optional string running_trace_id = 5;
85
+ optional string last_due_at = 6; // RFC3339
86
+ optional string last_fired_at = 7; // RFC3339
87
+ optional string last_completed_at = 8; // RFC3339
88
+ optional string last_error = 9;
89
+ uint64 skipped_overlap_count = 10;
90
+ bool stateful = 11;
91
+ string created_at = 12; // RFC3339
92
+ }
93
+
94
+ message SaveCronJobsRequest {
95
+ string session_id = 1;
96
+ repeated StoredCronJob jobs = 2;
97
+ }
98
+
99
+ message SaveCronJobsResponse {
100
+ uint32 count = 1;
101
+ }
102
+
103
+ message LoadCronJobsRequest {
104
+ string session_id = 1;
105
+ }
106
+
107
+ message LoadCronJobsResponse {
108
+ repeated StoredCronJob jobs = 1;
109
+ }
110
+
111
+ service StorageService {
112
+ // Session resources (mirror SessionService).
113
+ rpc ListSessions(Empty) returns (ListSessionsResponse);
114
+ rpc CreateSession(CreateSessionRequest) returns (CreateSessionResponse);
115
+ rpc RenameSession(RenameSessionRequest) returns (CommandResult);
116
+ rpc DeleteSession(DeleteSessionRequest) returns (DeleteSessionResponse);
117
+
118
+ // DAG run persistence.
119
+ rpc SaveDagRun(SaveDagRunRequest) returns (SaveDagRunResponse);
120
+ rpc LoadDagRuns(LoadDagRunsRequest) returns (LoadDagRunsResponse);
121
+
122
+ // Trigger rules persistence.
123
+ rpc SaveTriggerRules(SaveTriggerRulesRequest) returns (SaveTriggerRulesResponse);
124
+ rpc LoadTriggerRules(LoadTriggerRulesRequest) returns (LoadTriggerRulesResponse);
125
+
126
+ // Cron jobs persistence.
127
+ rpc SaveCronJobs(SaveCronJobsRequest) returns (SaveCronJobsResponse);
128
+ rpc LoadCronJobs(LoadCronJobsRequest) returns (LoadCronJobsResponse);
129
+ }
@@ -0,0 +1,238 @@
1
+ // Tool-operation domain (issue #75): the file/process/memory/skill operations
2
+ // a controller forwards through the daemon. The daemon implements ToolService
3
+ // against its execution environment (the ToolExecutor seam) so remote
4
+ // controllers can drive the daemon-side FS and process table; the request /
5
+ // response shapes mirror the daemon's agent tools (read / write / edit /
6
+ // exec / ls / grep / find / memory / install_skill).
7
+
8
+ syntax = "proto3";
9
+ package theway.grpc.v1;
10
+
11
+ // ── read_file ─────────────────────────────────────────────────────────
12
+
13
+ // Read a file as UTF-8 text with line pagination: 1-based `offset`, same
14
+ // window semantics as the `read` agent tool.
15
+ message ReadFileRequest {
16
+ string path = 1;
17
+ // First line to return (1-based). Absent = from the start.
18
+ optional uint64 offset = 2;
19
+ // Maximum number of lines to return. Absent = the whole file.
20
+ optional uint64 limit = 3;
21
+ }
22
+
23
+ message ReadFileResponse {
24
+ string content = 1;
25
+ uint64 total_lines = 2;
26
+ // true when more lines follow beyond the returned window.
27
+ bool truncated = 3;
28
+ }
29
+
30
+ // ── write_file ────────────────────────────────────────────────────────
31
+
32
+ message WriteFileRequest {
33
+ string path = 1;
34
+ string content = 2;
35
+ }
36
+
37
+ message WriteFileResponse {
38
+ uint64 bytes_written = 1;
39
+ }
40
+
41
+ // ── edit_file ─────────────────────────────────────────────────────────
42
+
43
+ // Search-and-replace edit (same semantics as the `edit` agent tool):
44
+ // replace `old_string` with `new_string`, optionally restricted to a
45
+ // 1-based inclusive line range.
46
+ message EditFileRequest {
47
+ string path = 1;
48
+ string old_string = 2;
49
+ string new_string = 3;
50
+ bool replace_all = 4;
51
+ optional uint64 range_start = 5;
52
+ optional uint64 range_end = 6;
53
+ }
54
+
55
+ message EditFileResponse {
56
+ uint32 replacements = 1;
57
+ }
58
+
59
+ // ── exec_command ──────────────────────────────────────────────────────
60
+
61
+ message ExecCommandRequest {
62
+ // Shell command line, run through the daemon's shell.
63
+ string command = 1;
64
+ // Working directory. Absent = the daemon's work dir.
65
+ optional string cwd = 2;
66
+ // Wall-clock timeout in milliseconds. Absent = executor default.
67
+ optional uint64 timeout_ms = 3;
68
+ }
69
+
70
+ // One streaming exec frame: zero or more output chunks (interleaved
71
+ // stdout/stderr), then a terminal exit frame.
72
+ message ExecOutputFrame {
73
+ oneof kind {
74
+ string output = 1;
75
+ ExecExit exit = 2;
76
+ }
77
+ }
78
+
79
+ message ExecExit {
80
+ int32 code = 1;
81
+ bool timed_out = 2;
82
+ uint64 duration_ms = 3;
83
+ }
84
+
85
+ // ── list_dir ──────────────────────────────────────────────────────────
86
+
87
+ message ListDirRequest {
88
+ string path = 1;
89
+ // Maximum number of entries to return. Absent = all entries.
90
+ optional uint64 limit = 2;
91
+ }
92
+
93
+ message DirEntry {
94
+ string name = 1;
95
+ // "file" | "dir" | "symlink" | "other"
96
+ string kind = 2;
97
+ uint64 size = 3;
98
+ }
99
+
100
+ message ListDirResponse {
101
+ repeated DirEntry entries = 1;
102
+ }
103
+
104
+ // ── grep ──────────────────────────────────────────────────────────────
105
+
106
+ message GrepRequest {
107
+ // Regular expression.
108
+ string pattern = 1;
109
+ // Search root. Absent = the daemon's work dir.
110
+ optional string path = 2;
111
+ // Filename glob filter (e.g. "*.rs").
112
+ optional string glob_filter = 3;
113
+ bool case_insensitive = 4;
114
+ // "content" (default) | "files_with_matches" | "count" — selects which
115
+ // GrepResponse list is populated.
116
+ optional string output_mode = 5;
117
+ optional uint64 max_results = 6;
118
+ }
119
+
120
+ message GrepMatch {
121
+ string path = 1;
122
+ uint64 line_number = 2;
123
+ string line = 3;
124
+ }
125
+
126
+ message GrepFileCount {
127
+ string path = 1;
128
+ uint64 count = 2;
129
+ }
130
+
131
+ message GrepResponse {
132
+ // output_mode "content".
133
+ repeated GrepMatch matches = 1;
134
+ // output_mode "files_with_matches".
135
+ repeated string files = 2;
136
+ // output_mode "count".
137
+ repeated GrepFileCount counts = 3;
138
+ }
139
+
140
+ // ── find ──────────────────────────────────────────────────────────────
141
+
142
+ message FindRequest {
143
+ // Filename glob (e.g. "*.proto").
144
+ string pattern = 1;
145
+ // Search root. Absent = the daemon's work dir.
146
+ optional string path = 2;
147
+ optional uint64 limit = 3;
148
+ }
149
+
150
+ message FindResponse {
151
+ repeated string paths = 1;
152
+ }
153
+
154
+ // ── memory (cross-session memory entries) ─────────────────────────────
155
+
156
+ message MemorySaveRequest {
157
+ string name = 1;
158
+ string content = 2;
159
+ optional string description = 3;
160
+ // Memory type tag ("user" | "preference" | ...), free-form.
161
+ optional string memory_type = 4;
162
+ }
163
+
164
+ message MemorySaveResponse {
165
+ string name = 1;
166
+ string path = 2;
167
+ }
168
+
169
+ message MemoryListRequest {}
170
+
171
+ message MemoryEntry {
172
+ string name = 1;
173
+ optional string description = 2;
174
+ optional string memory_type = 3;
175
+ string path = 4;
176
+ }
177
+
178
+ message MemoryListResponse {
179
+ repeated MemoryEntry entries = 1;
180
+ }
181
+
182
+ message MemoryReadRequest {
183
+ string name = 1;
184
+ }
185
+
186
+ message MemoryReadResponse {
187
+ string name = 1;
188
+ string content = 2;
189
+ }
190
+
191
+ message MemoryForgetRequest {
192
+ string name = 1;
193
+ }
194
+
195
+ message MemoryForgetResponse {
196
+ bool removed = 1;
197
+ }
198
+
199
+ // ── skill_install ─────────────────────────────────────────────────────
200
+
201
+ message SkillInstallRequest {
202
+ oneof source {
203
+ string url = 1;
204
+ string path = 2;
205
+ string content = 3;
206
+ }
207
+ // Two-phase install (same safety model as the install_skill agent tool):
208
+ // without `confirm` the call is a read-only preview and installs nothing.
209
+ bool confirm = 4;
210
+ bool overwrite = 5;
211
+ }
212
+
213
+ message SkillInstallResponse {
214
+ string name = 1;
215
+ string target_path = 2;
216
+ // false = preview only (`confirm` was not set); true = installed.
217
+ bool installed = 3;
218
+ optional string content_hash = 4;
219
+ uint64 size = 5;
220
+ bool existing = 6;
221
+ optional string warning = 7;
222
+ }
223
+
224
+ service ToolService {
225
+ rpc ReadFile(ReadFileRequest) returns (ReadFileResponse);
226
+ rpc WriteFile(WriteFileRequest) returns (WriteFileResponse);
227
+ rpc EditFile(EditFileRequest) returns (EditFileResponse);
228
+ // Streaming output: zero or more output chunks, then the exit frame.
229
+ rpc ExecCommand(ExecCommandRequest) returns (stream ExecOutputFrame);
230
+ rpc ListDir(ListDirRequest) returns (ListDirResponse);
231
+ rpc Grep(GrepRequest) returns (GrepResponse);
232
+ rpc Find(FindRequest) returns (FindResponse);
233
+ rpc MemorySave(MemorySaveRequest) returns (MemorySaveResponse);
234
+ rpc MemoryList(MemoryListRequest) returns (MemoryListResponse);
235
+ rpc MemoryRead(MemoryReadRequest) returns (MemoryReadResponse);
236
+ rpc MemoryForget(MemoryForgetRequest) returns (MemoryForgetResponse);
237
+ rpc SkillInstall(SkillInstallRequest) returns (SkillInstallResponse);
238
+ }