@useactor/core 0.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 (153) hide show
  1. package/dist/ai-sdk-provider.d.ts +54 -0
  2. package/dist/ai-sdk-provider.d.ts.map +1 -0
  3. package/dist/ai-sdk-provider.js +335 -0
  4. package/dist/ai-sdk-provider.js.map +1 -0
  5. package/dist/app-runtime.d.ts +83 -0
  6. package/dist/app-runtime.d.ts.map +1 -0
  7. package/dist/app-runtime.js +504 -0
  8. package/dist/app-runtime.js.map +1 -0
  9. package/dist/artifacts.d.ts +49 -0
  10. package/dist/artifacts.d.ts.map +1 -0
  11. package/dist/artifacts.js +50 -0
  12. package/dist/artifacts.js.map +1 -0
  13. package/dist/cli-defined-tools.d.ts +17 -0
  14. package/dist/cli-defined-tools.d.ts.map +1 -0
  15. package/dist/cli-defined-tools.js +146 -0
  16. package/dist/cli-defined-tools.js.map +1 -0
  17. package/dist/codex-oauth-provider.d.ts +30 -0
  18. package/dist/codex-oauth-provider.d.ts.map +1 -0
  19. package/dist/codex-oauth-provider.js +453 -0
  20. package/dist/codex-oauth-provider.js.map +1 -0
  21. package/dist/events.d.ts +133 -0
  22. package/dist/events.d.ts.map +1 -0
  23. package/dist/events.js +46 -0
  24. package/dist/events.js.map +1 -0
  25. package/dist/feedback.d.ts +29 -0
  26. package/dist/feedback.d.ts.map +1 -0
  27. package/dist/feedback.js +62 -0
  28. package/dist/feedback.js.map +1 -0
  29. package/dist/history.d.ts +34 -0
  30. package/dist/history.d.ts.map +1 -0
  31. package/dist/history.js +118 -0
  32. package/dist/history.js.map +1 -0
  33. package/dist/in-memory-runtime.d.ts +12 -0
  34. package/dist/in-memory-runtime.d.ts.map +1 -0
  35. package/dist/in-memory-runtime.js +491 -0
  36. package/dist/in-memory-runtime.js.map +1 -0
  37. package/dist/index.d.ts +36 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +36 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/integrations.d.ts +37 -0
  42. package/dist/integrations.d.ts.map +1 -0
  43. package/dist/integrations.js +48 -0
  44. package/dist/integrations.js.map +1 -0
  45. package/dist/local-event-logger.d.ts +19 -0
  46. package/dist/local-event-logger.d.ts.map +1 -0
  47. package/dist/local-event-logger.js +163 -0
  48. package/dist/local-event-logger.js.map +1 -0
  49. package/dist/local-event-schema.d.ts +99 -0
  50. package/dist/local-event-schema.d.ts.map +1 -0
  51. package/dist/local-event-schema.js +43 -0
  52. package/dist/local-event-schema.js.map +1 -0
  53. package/dist/local-tools.d.ts +99 -0
  54. package/dist/local-tools.d.ts.map +1 -0
  55. package/dist/local-tools.js +418 -0
  56. package/dist/local-tools.js.map +1 -0
  57. package/dist/mcp-server-config.d.ts +16 -0
  58. package/dist/mcp-server-config.d.ts.map +1 -0
  59. package/dist/mcp-server-config.js +75 -0
  60. package/dist/mcp-server-config.js.map +1 -0
  61. package/dist/mock-provider.d.ts +8 -0
  62. package/dist/mock-provider.d.ts.map +1 -0
  63. package/dist/mock-provider.js +47 -0
  64. package/dist/mock-provider.js.map +1 -0
  65. package/dist/model-catalog.d.ts +24 -0
  66. package/dist/model-catalog.d.ts.map +1 -0
  67. package/dist/model-catalog.js +92 -0
  68. package/dist/model-catalog.js.map +1 -0
  69. package/dist/monoid-integration.d.ts +33 -0
  70. package/dist/monoid-integration.d.ts.map +1 -0
  71. package/dist/monoid-integration.js +184 -0
  72. package/dist/monoid-integration.js.map +1 -0
  73. package/dist/openai-oauth.d.ts +69 -0
  74. package/dist/openai-oauth.d.ts.map +1 -0
  75. package/dist/openai-oauth.js +127 -0
  76. package/dist/openai-oauth.js.map +1 -0
  77. package/dist/permission-grant-store.d.ts +7 -0
  78. package/dist/permission-grant-store.d.ts.map +1 -0
  79. package/dist/permission-grant-store.js +77 -0
  80. package/dist/permission-grant-store.js.map +1 -0
  81. package/dist/permission-grants.d.ts +38 -0
  82. package/dist/permission-grants.d.ts.map +1 -0
  83. package/dist/permission-grants.js +93 -0
  84. package/dist/permission-grants.js.map +1 -0
  85. package/dist/personas.d.ts +51 -0
  86. package/dist/personas.d.ts.map +1 -0
  87. package/dist/personas.js +137 -0
  88. package/dist/personas.js.map +1 -0
  89. package/dist/project-tool-registry.d.ts +16 -0
  90. package/dist/project-tool-registry.d.ts.map +1 -0
  91. package/dist/project-tool-registry.js +86 -0
  92. package/dist/project-tool-registry.js.map +1 -0
  93. package/dist/projects.d.ts +88 -0
  94. package/dist/projects.d.ts.map +1 -0
  95. package/dist/projects.js +243 -0
  96. package/dist/projects.js.map +1 -0
  97. package/dist/prompt-context.d.ts +13 -0
  98. package/dist/prompt-context.d.ts.map +1 -0
  99. package/dist/prompt-context.js +170 -0
  100. package/dist/prompt-context.js.map +1 -0
  101. package/dist/proposed-plan.d.ts +24 -0
  102. package/dist/proposed-plan.d.ts.map +1 -0
  103. package/dist/proposed-plan.js +74 -0
  104. package/dist/proposed-plan.js.map +1 -0
  105. package/dist/providers.d.ts +53 -0
  106. package/dist/providers.d.ts.map +1 -0
  107. package/dist/providers.js +31 -0
  108. package/dist/providers.js.map +1 -0
  109. package/dist/question-requests.d.ts +39 -0
  110. package/dist/question-requests.d.ts.map +1 -0
  111. package/dist/question-requests.js +135 -0
  112. package/dist/question-requests.js.map +1 -0
  113. package/dist/renderer-api.d.ts +52 -0
  114. package/dist/renderer-api.d.ts.map +1 -0
  115. package/dist/renderer-api.js +2 -0
  116. package/dist/renderer-api.js.map +1 -0
  117. package/dist/runtime-tool-execution.d.ts +22 -0
  118. package/dist/runtime-tool-execution.d.ts.map +1 -0
  119. package/dist/runtime-tool-execution.js +245 -0
  120. package/dist/runtime-tool-execution.js.map +1 -0
  121. package/dist/runtime.d.ts +154 -0
  122. package/dist/runtime.d.ts.map +1 -0
  123. package/dist/runtime.js +184 -0
  124. package/dist/runtime.js.map +1 -0
  125. package/dist/secrets.d.ts +75 -0
  126. package/dist/secrets.d.ts.map +1 -0
  127. package/dist/secrets.js +255 -0
  128. package/dist/secrets.js.map +1 -0
  129. package/dist/session-actions.d.ts +45 -0
  130. package/dist/session-actions.d.ts.map +1 -0
  131. package/dist/session-actions.js +393 -0
  132. package/dist/session-actions.js.map +1 -0
  133. package/dist/skills.d.ts +43 -0
  134. package/dist/skills.d.ts.map +1 -0
  135. package/dist/skills.js +333 -0
  136. package/dist/skills.js.map +1 -0
  137. package/dist/test/setup.d.ts +2 -0
  138. package/dist/test/setup.d.ts.map +1 -0
  139. package/dist/test/setup.js +17 -0
  140. package/dist/test/setup.js.map +1 -0
  141. package/dist/tool-requests.d.ts +58 -0
  142. package/dist/tool-requests.d.ts.map +1 -0
  143. package/dist/tool-requests.js +122 -0
  144. package/dist/tool-requests.js.map +1 -0
  145. package/dist/tools.d.ts +45 -0
  146. package/dist/tools.d.ts.map +1 -0
  147. package/dist/tools.js +50 -0
  148. package/dist/tools.js.map +1 -0
  149. package/dist/wyrdos-integration.d.ts +32 -0
  150. package/dist/wyrdos-integration.d.ts.map +1 -0
  151. package/dist/wyrdos-integration.js +183 -0
  152. package/dist/wyrdos-integration.js.map +1 -0
  153. package/package.json +51 -0
@@ -0,0 +1,48 @@
1
+ export class DuplicateIntegrationIdError extends Error {
2
+ constructor(integrationId) {
3
+ super(`Integration with id "${integrationId}" is already registered.`);
4
+ this.name = "DuplicateIntegrationIdError";
5
+ }
6
+ }
7
+ export function createIntegrationRegistry(initial = []) {
8
+ const integrations = new Map();
9
+ const registry = {
10
+ registerIntegration(input) {
11
+ if (integrations.has(input.definition.id)) {
12
+ throw new DuplicateIntegrationIdError(input.definition.id);
13
+ }
14
+ integrations.set(input.definition.id, input);
15
+ },
16
+ listIntegrations() {
17
+ return [...integrations.values()].map((integration) => integration.definition);
18
+ },
19
+ listToolsForProject(project) {
20
+ const enabledIntegrationIds = new Set((project?.integrations ?? []).map((integration) => integration.providerId));
21
+ if (enabledIntegrationIds.size === 0) {
22
+ return [];
23
+ }
24
+ return [...integrations.values()]
25
+ .filter((integration) => integrationEnabledForProject(integration.definition, project?.integrations ?? []))
26
+ .flatMap((integration) => integration.tools);
27
+ },
28
+ getIntegration(integrationId) {
29
+ return integrations.get(integrationId);
30
+ }
31
+ };
32
+ for (const integration of initial) {
33
+ registry.registerIntegration(integration);
34
+ }
35
+ return registry;
36
+ }
37
+ function integrationEnabledForProject(definition, enabledIntegrations) {
38
+ return enabledIntegrations.some((integration) => {
39
+ if (integration.providerId === definition.id) {
40
+ return true;
41
+ }
42
+ if (integration.resourceId && `${integration.providerId}:${integration.resourceId}` === definition.id) {
43
+ return true;
44
+ }
45
+ return integration.providerId === definition.kind && integration.resourceId === definition.id;
46
+ });
47
+ }
48
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"AAsCA,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAY,aAAsB;QAChC,KAAK,CAAC,wBAAwB,aAAa,0BAA0B,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CACvC,UAA8C,EAAE;IAEhD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoC,CAAC;IAEjE,MAAM,QAAQ,GAAwB;QACpC,mBAAmB,CAAC,KAAK;YACvB,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,gBAAgB;YACd,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjF,CAAC;QACD,mBAAmB,CAAC,OAAO;YACzB,MAAM,qBAAqB,GAAG,IAAI,GAAG,CACnC,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAC3E,CAAC;YACF,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;iBAC9B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;iBAC1G,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,cAAc,CAAC,aAAa;YAC1B,OAAO,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;IAEF,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QAClC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,4BAA4B,CACnC,UAAoC,EACpC,mBAAqD;IAErD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;QAC9C,IAAI,WAAW,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,WAAW,CAAC,UAAU,IAAI,GAAG,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;YACtG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type JsonlReadResult, type ActorPathResolverOptions } from "@useactor/storage";
2
+ import type { RuntimeEvent } from "./events.js";
3
+ import type { ModelRef, PersonaRef, ProjectRef } from "./runtime.js";
4
+ import { type LocalEventLogEntry, type LocalEventOrigin } from "./local-event-schema.js";
5
+ export interface LocalEventLoggerContext {
6
+ readonly origin: LocalEventOrigin;
7
+ readonly project?: ProjectRef;
8
+ readonly persona?: PersonaRef;
9
+ readonly model?: ModelRef;
10
+ }
11
+ export interface PersistLocalRuntimeEventOptions extends ActorPathResolverOptions {
12
+ readonly event: RuntimeEvent;
13
+ readonly context: LocalEventLoggerContext;
14
+ readonly append?: (entry: LocalEventLogEntry) => Promise<void>;
15
+ }
16
+ export declare function persistLocalRuntimeEvent(options: PersistLocalRuntimeEventOptions): Promise<boolean>;
17
+ export declare function readLocalRuntimeEvents(options?: ActorPathResolverOptions): Promise<JsonlReadResult<LocalEventLogEntry>>;
18
+ export declare function toLocalRuntimeLogEntry(event: RuntimeEvent, context: LocalEventLoggerContext): LocalEventLogEntry;
19
+ //# sourceMappingURL=local-event-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-event-logger.d.ts","sourceRoot":"","sources":["../src/local-event-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAEpB,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,+BAAgC,SAAQ,wBAAwB;IAC/E,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAI9C;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,uBAAuB,GAC/B,kBAAkB,CAgJpB"}
@@ -0,0 +1,163 @@
1
+ import { appendActorLocalEventLogEntry, readActorLocalEventLogEntries, } from "@useactor/storage";
2
+ import {} from "./local-event-schema.js";
3
+ export async function persistLocalRuntimeEvent(options) {
4
+ if (options.env?.ACTOR_DISABLE_EVENT_LOGGER === "1" ||
5
+ options.env?.ACTOR_DISABLE_EVENT_LOGGER === "true") {
6
+ return false;
7
+ }
8
+ const entry = toLocalRuntimeLogEntry(options.event, options.context);
9
+ try {
10
+ if (options.append) {
11
+ await options.append(entry);
12
+ }
13
+ else {
14
+ await appendActorLocalEventLogEntry({
15
+ ...options,
16
+ entry: entry,
17
+ });
18
+ }
19
+ return true;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ }
25
+ export async function readLocalRuntimeEvents(options) {
26
+ return readActorLocalEventLogEntries(options);
27
+ }
28
+ export function toLocalRuntimeLogEntry(event, context) {
29
+ const base = {
30
+ type: "local_event",
31
+ origin: context.origin,
32
+ sessionId: event.sessionId,
33
+ runId: event.runId,
34
+ timestamp: event.timestamp,
35
+ ...(context.project ? { projectId: context.project.id } : {}),
36
+ ...(context.persona ? { personaId: context.persona.id } : {}),
37
+ ...(context.model ? { model: context.model } : {}),
38
+ };
39
+ if (event.type === "user_message") {
40
+ return {
41
+ ...base,
42
+ name: "message_sent",
43
+ messageId: event.message.id,
44
+ role: event.message.role,
45
+ ...(event.message.model ? { model: event.message.model } : {}),
46
+ };
47
+ }
48
+ if (event.type === "assistant_message_start" ||
49
+ event.type === "stream_delta" ||
50
+ event.type === "plan_delta" ||
51
+ event.type === "done") {
52
+ return {
53
+ ...base,
54
+ name: "assistant_stream",
55
+ phase: event.type === "assistant_message_start"
56
+ ? "start"
57
+ : event.type === "stream_delta" || event.type === "plan_delta"
58
+ ? "delta"
59
+ : "done",
60
+ ...(event.type === "assistant_message_start" ||
61
+ event.type === "stream_delta" ||
62
+ event.type === "plan_delta" ||
63
+ event.messageId
64
+ ? {
65
+ messageId: event.type === "done" ? event.messageId : event.messageId,
66
+ }
67
+ : {}),
68
+ };
69
+ }
70
+ if (event.type === "tool_request") {
71
+ return {
72
+ ...base,
73
+ name: "tool_requested",
74
+ requestId: event.requestId,
75
+ toolId: event.tool.toolId,
76
+ action: event.tool.action,
77
+ ...(event.tool.target ? { target: event.tool.target } : {}),
78
+ ...(event.tool.riskLevel ? { riskLevel: event.tool.riskLevel } : {}),
79
+ };
80
+ }
81
+ if (event.type === "tool_call") {
82
+ return {
83
+ ...base,
84
+ name: "tool_called",
85
+ toolCallId: event.toolCallId,
86
+ toolId: event.tool.toolId,
87
+ action: event.tool.action,
88
+ ...(event.tool.target ? { target: event.tool.target } : {}),
89
+ ...(event.tool.riskLevel ? { riskLevel: event.tool.riskLevel } : {}),
90
+ };
91
+ }
92
+ if (event.type === "tool_result") {
93
+ return {
94
+ ...base,
95
+ name: "tool_completed",
96
+ toolCallId: event.toolCallId,
97
+ toolId: event.toolId,
98
+ status: event.status,
99
+ durationMs: event.durationMs,
100
+ };
101
+ }
102
+ if (event.type === "approval_result") {
103
+ return {
104
+ ...base,
105
+ name: "approval_decision",
106
+ requestId: event.requestId,
107
+ approved: event.approved,
108
+ decision: event.decision,
109
+ };
110
+ }
111
+ if (event.type === "question_request") {
112
+ return {
113
+ ...base,
114
+ name: "question_requested",
115
+ requestId: event.requestId,
116
+ questionCount: event.questions.length,
117
+ };
118
+ }
119
+ if (event.type === "question_response") {
120
+ return {
121
+ ...base,
122
+ name: "question_answered",
123
+ requestId: event.requestId,
124
+ answerCount: Object.keys(event.answers).length,
125
+ };
126
+ }
127
+ if (event.type === "artifact") {
128
+ return {
129
+ ...base,
130
+ name: "artifact_created",
131
+ artifactId: event.artifactId,
132
+ artifactKind: event.kind,
133
+ artifactName: event.name,
134
+ artifactRefKind: event.ref.kind,
135
+ };
136
+ }
137
+ if (event.type === "error") {
138
+ return {
139
+ ...base,
140
+ name: "provider_error",
141
+ error: {
142
+ message: redactSecretLikeText(event.message),
143
+ ...(event.code ? { code: event.code } : {}),
144
+ },
145
+ };
146
+ }
147
+ if (event.type === "cancelled") {
148
+ return {
149
+ ...base,
150
+ name: "assistant_stream",
151
+ phase: "cancelled",
152
+ ...(event.reason ? { reason: event.reason } : {}),
153
+ };
154
+ }
155
+ return { ...base, name: "assistant_stream", phase: "delta" };
156
+ }
157
+ function redactSecretLikeText(value) {
158
+ return value
159
+ .replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g, "[REDACTED]")
160
+ .replace(/\bgh[pousr]_[A-Za-z0-9_]{8,}\b/g, "[REDACTED]")
161
+ .replace(/\bxox[baprs]-[A-Za-z0-9-]{8,}\b/g, "[REDACTED]");
162
+ }
163
+ //# sourceMappingURL=local-event-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-event-logger.js","sourceRoot":"","sources":["../src/local-event-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import type { ApprovalDecisionType } from "./events.js";
2
+ import type { ArtifactKind } from "./artifacts.js";
3
+ import type { ModelRef, ActorId } from "./runtime.js";
4
+ export type LocalEventOrigin = "cli" | "electron" | "core";
5
+ export type LocalEventName = "message_sent" | "assistant_stream" | "tool_called" | "tool_completed" | "tool_requested" | "approval_decision" | "question_requested" | "question_answered" | "artifact_created" | "integration_update" | "provider_error" | "model_selected" | "feedback_recorded";
6
+ export interface LocalEventBase {
7
+ readonly type: "local_event";
8
+ readonly name: LocalEventName;
9
+ readonly origin: LocalEventOrigin;
10
+ readonly timestamp: string;
11
+ readonly sessionId?: ActorId;
12
+ readonly runId?: ActorId;
13
+ readonly projectId?: ActorId;
14
+ readonly personaId?: ActorId;
15
+ readonly model?: ModelRef;
16
+ }
17
+ export interface LocalMessageSentEvent extends LocalEventBase {
18
+ readonly name: "message_sent";
19
+ readonly messageId: ActorId;
20
+ readonly role: "user" | "assistant" | "system" | "tool";
21
+ }
22
+ export interface LocalAssistantStreamEvent extends LocalEventBase {
23
+ readonly name: "assistant_stream";
24
+ readonly messageId?: ActorId;
25
+ readonly phase: "start" | "delta" | "done" | "cancelled";
26
+ }
27
+ export interface LocalToolRequestedEvent extends LocalEventBase {
28
+ readonly name: "tool_requested";
29
+ readonly requestId: ActorId;
30
+ readonly toolId: ActorId;
31
+ readonly action: string;
32
+ readonly target?: string;
33
+ readonly riskLevel?: "normal" | "destructive";
34
+ }
35
+ export interface LocalToolCalledEvent extends LocalEventBase {
36
+ readonly name: "tool_called";
37
+ readonly toolCallId: ActorId;
38
+ readonly toolId: ActorId;
39
+ readonly action: string;
40
+ readonly target?: string;
41
+ readonly riskLevel?: "normal" | "destructive";
42
+ }
43
+ export interface LocalToolCompletedEvent extends LocalEventBase {
44
+ readonly name: "tool_completed";
45
+ readonly toolCallId: ActorId;
46
+ readonly toolId: ActorId;
47
+ readonly status: "success" | "error";
48
+ readonly durationMs: number;
49
+ }
50
+ export interface LocalApprovalDecisionEvent extends LocalEventBase {
51
+ readonly name: "approval_decision";
52
+ readonly requestId: ActorId;
53
+ readonly approved: boolean;
54
+ readonly decision: ApprovalDecisionType;
55
+ }
56
+ export interface LocalQuestionRequestedEvent extends LocalEventBase {
57
+ readonly name: "question_requested";
58
+ readonly requestId: ActorId;
59
+ readonly questionCount: number;
60
+ }
61
+ export interface LocalQuestionAnsweredEvent extends LocalEventBase {
62
+ readonly name: "question_answered";
63
+ readonly requestId: ActorId;
64
+ readonly answerCount: number;
65
+ }
66
+ export interface LocalArtifactCreatedEvent extends LocalEventBase {
67
+ readonly name: "artifact_created";
68
+ readonly artifactId: ActorId;
69
+ readonly artifactKind: ArtifactKind;
70
+ readonly artifactName: string;
71
+ readonly artifactRefKind: string;
72
+ }
73
+ export interface LocalIntegrationUpdateEvent extends LocalEventBase {
74
+ readonly name: "integration_update";
75
+ readonly integrationId: ActorId;
76
+ readonly action: "enable" | "disable" | "create" | "update" | "delete";
77
+ readonly status: "requested" | "approved" | "completed" | "failed";
78
+ }
79
+ export interface LocalProviderErrorEvent extends LocalEventBase {
80
+ readonly name: "provider_error";
81
+ readonly error: {
82
+ readonly message: string;
83
+ readonly code?: string;
84
+ };
85
+ }
86
+ export interface LocalModelSelectedEvent extends LocalEventBase {
87
+ readonly name: "model_selected";
88
+ readonly model: ModelRef;
89
+ }
90
+ export interface LocalFeedbackRecordedEvent extends LocalEventBase {
91
+ readonly name: "feedback_recorded";
92
+ readonly feedbackId: ActorId;
93
+ readonly messageId: ActorId;
94
+ readonly rating?: "up" | "down";
95
+ }
96
+ export type LocalEventLogEntry = LocalMessageSentEvent | LocalAssistantStreamEvent | LocalToolCalledEvent | LocalToolCompletedEvent | LocalToolRequestedEvent | LocalApprovalDecisionEvent | LocalQuestionRequestedEvent | LocalQuestionAnsweredEvent | LocalArtifactCreatedEvent | LocalIntegrationUpdateEvent | LocalProviderErrorEvent | LocalModelSelectedEvent | LocalFeedbackRecordedEvent;
97
+ export declare function assertLocalEventIsSecretSafe(event: LocalEventLogEntry): void;
98
+ export declare function assertLocalEventSerializable(event: LocalEventLogEntry): void;
99
+ //# sourceMappingURL=local-event-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-event-schema.d.ts","sourceRoot":"","sources":["../src/local-event-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,kBAAkB,GAClB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;CACzD;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;CAC1D;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAC/C;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IAChE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC;AAED,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IAChE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;CACpE;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IAChE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,yBAAyB,GACzB,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,0BAA0B,GAC1B,2BAA2B,GAC3B,0BAA0B,GAC1B,yBAAyB,GACzB,2BAA2B,GAC3B,uBAAuB,GACvB,uBAAuB,GACvB,0BAA0B,CAAC;AAa/B,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAO5E;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAE5E"}
@@ -0,0 +1,43 @@
1
+ const unsafeKeys = new Set([
2
+ "content",
3
+ "prompt",
4
+ "apiKey",
5
+ "apikey",
6
+ "token",
7
+ "password",
8
+ "secret",
9
+ "credential",
10
+ ]);
11
+ export function assertLocalEventIsSecretSafe(event) {
12
+ const unsafePath = findUnsafeKey(event);
13
+ if (unsafePath) {
14
+ throw new Error(`Local event schema cannot include unsafe field: ${unsafePath}`);
15
+ }
16
+ }
17
+ export function assertLocalEventSerializable(event) {
18
+ JSON.parse(JSON.stringify(event));
19
+ }
20
+ function findUnsafeKey(value, path = "") {
21
+ if (!value || typeof value !== "object")
22
+ return undefined;
23
+ if (Array.isArray(value)) {
24
+ for (const [index, entry] of value.entries()) {
25
+ const found = findUnsafeKey(entry, `${path}[${index}]`);
26
+ if (found)
27
+ return found;
28
+ }
29
+ return undefined;
30
+ }
31
+ for (const [key, nestedValue] of Object.entries(value)) {
32
+ const normalized = key.toLowerCase().replace(/[^a-z0-9]/g, "");
33
+ const nextPath = path ? `${path}.${key}` : key;
34
+ if (unsafeKeys.has(normalized)) {
35
+ return nextPath;
36
+ }
37
+ const found = findUnsafeKey(nestedValue, nextPath);
38
+ if (found)
39
+ return found;
40
+ }
41
+ return undefined;
42
+ }
43
+ //# sourceMappingURL=local-event-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-event-schema.js","sourceRoot":"","sources":["../src/local-event-schema.ts"],"names":[],"mappings":"AA4IA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAAC,KAAyB;IACpE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mDAAmD,UAAU,EAAE,CAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAyB;IACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,IAAI,GAAG,EAAE;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;YACxD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { execFile } from "node:child_process";
2
+ import type { ToolDefinition } from "./tools.js";
3
+ export interface LocalToolOptions {
4
+ readonly rootPath?: string;
5
+ readonly id?: string;
6
+ }
7
+ export interface PathGuardRoot {
8
+ readonly rootPath: string;
9
+ }
10
+ export interface SafePath {
11
+ readonly rootPath: string;
12
+ readonly absolutePath: string;
13
+ readonly relativePath: string;
14
+ }
15
+ export declare class PathGuardError extends Error {
16
+ readonly code = "path_outside_root";
17
+ }
18
+ export declare function resolveSafePath(root: PathGuardRoot, requestedPath?: string): Promise<SafePath>;
19
+ export declare function listFiles(input: {
20
+ readonly rootPath: string;
21
+ readonly path?: string;
22
+ readonly limit?: number;
23
+ }): Promise<{
24
+ files: {
25
+ name: string;
26
+ relativePath: string;
27
+ kind: string;
28
+ size: number;
29
+ mtimeMs: number;
30
+ }[];
31
+ truncated: boolean;
32
+ }>;
33
+ export declare function createListFilesTool(options?: LocalToolOptions): ToolDefinition;
34
+ export declare function readTextFile(input: {
35
+ readonly rootPath: string;
36
+ readonly path: string;
37
+ readonly maxBytes?: number;
38
+ }): Promise<{
39
+ content: string;
40
+ relativePath: string;
41
+ }>;
42
+ export declare function createReadFileTool(options?: LocalToolOptions): ToolDefinition;
43
+ export declare function writeTextFile(input: {
44
+ readonly rootPath: string;
45
+ readonly path: string;
46
+ readonly content: string;
47
+ }): Promise<{
48
+ relativePath: string;
49
+ }>;
50
+ export declare function createWriteFileTool(options?: LocalToolOptions): ToolDefinition;
51
+ export declare function editTextFile(input: {
52
+ readonly rootPath: string;
53
+ readonly path: string;
54
+ readonly search: string;
55
+ readonly replace: string;
56
+ }): Promise<{
57
+ relativePath: string;
58
+ changed: boolean;
59
+ }>;
60
+ export declare function createEditFileTool(options?: LocalToolOptions): ToolDefinition;
61
+ export declare function ripgrepSearch(input: {
62
+ readonly rootPath: string;
63
+ readonly query: string;
64
+ readonly path?: string;
65
+ readonly limit?: number;
66
+ readonly exec?: typeof execFileAsync;
67
+ }): Promise<{
68
+ matches: string[];
69
+ truncated: boolean;
70
+ }>;
71
+ export declare function createRipgrepTool(options?: LocalToolOptions): ToolDefinition;
72
+ export declare function globFiles(input: {
73
+ readonly rootPath: string;
74
+ readonly pattern: string;
75
+ readonly path?: string;
76
+ readonly limit?: number;
77
+ readonly exec?: typeof execFileAsync;
78
+ }): Promise<{
79
+ files: string[];
80
+ truncated: boolean;
81
+ }>;
82
+ export declare function createGlobTool(options?: LocalToolOptions): ToolDefinition;
83
+ export declare function runBashCommand(input: {
84
+ readonly rootPath: string;
85
+ readonly command: string;
86
+ readonly timeoutMs?: number;
87
+ readonly exec?: typeof execFileAsync;
88
+ }): Promise<{
89
+ stdout: string;
90
+ stderr: string;
91
+ exitCode: number;
92
+ risk: CommandRisk;
93
+ }>;
94
+ export declare function createBashTool(options?: LocalToolOptions): ToolDefinition;
95
+ export type CommandRisk = "normal" | "destructive";
96
+ export declare function classifyDestructiveCommand(command: string): CommandRisk;
97
+ declare const execFileAsync: typeof execFile.__promisify__;
98
+ export {};
99
+ //# sourceMappingURL=local-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-tools.d.ts","sourceRoot":"","sources":["../src/local-tools.ts"],"names":[],"mappings":"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"}