@oharness/engine 0.1.0 → 0.2.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 (90) hide show
  1. package/README.md +26 -0
  2. package/dist/agent/agent.d.ts +11 -0
  3. package/dist/agent/agent.js +30 -9
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/hooks.d.ts +2 -0
  6. package/dist/agent/hooks.js +11 -0
  7. package/dist/agent/hooks.js.map +1 -1
  8. package/dist/agent/memory.d.ts +10 -1
  9. package/dist/agent/memory.js +147 -49
  10. package/dist/agent/memory.js.map +1 -1
  11. package/dist/agent/permissions.js +21 -3
  12. package/dist/agent/permissions.js.map +1 -1
  13. package/dist/artifacts/publish.d.ts +2 -2
  14. package/dist/artifacts/publish.js +2 -2
  15. package/dist/auth/index.d.ts +1 -1
  16. package/dist/auth/index.js +1 -1
  17. package/dist/auth/index.js.map +1 -1
  18. package/dist/auth/manager.d.ts +14 -0
  19. package/dist/auth/manager.js +25 -5
  20. package/dist/auth/manager.js.map +1 -1
  21. package/dist/auth/providers/account.d.ts +10 -45
  22. package/dist/auth/providers/account.js +123 -233
  23. package/dist/auth/providers/account.js.map +1 -1
  24. package/dist/config-files.d.ts +27 -0
  25. package/dist/config-files.js +116 -0
  26. package/dist/config-files.js.map +1 -0
  27. package/dist/config.d.ts +5 -25
  28. package/dist/config.js +16 -2
  29. package/dist/config.js.map +1 -1
  30. package/dist/core/audit.d.ts +20 -0
  31. package/dist/core/audit.js +2 -0
  32. package/dist/core/audit.js.map +1 -0
  33. package/dist/harness.d.ts +35 -2
  34. package/dist/harness.js +162 -50
  35. package/dist/harness.js.map +1 -1
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/providers/registry.d.ts +42 -0
  40. package/dist/providers/registry.js +71 -9
  41. package/dist/providers/registry.js.map +1 -1
  42. package/dist/runtime-plugins/audit.d.ts +11 -0
  43. package/dist/runtime-plugins/audit.js +31 -0
  44. package/dist/runtime-plugins/audit.js.map +1 -0
  45. package/dist/runtime-plugins/builtin/jsonl-audit.d.ts +7 -0
  46. package/dist/runtime-plugins/builtin/jsonl-audit.js +24 -0
  47. package/dist/runtime-plugins/builtin/jsonl-audit.js.map +1 -0
  48. package/dist/runtime-plugins/builtin/memory.d.ts +70 -0
  49. package/dist/runtime-plugins/builtin/memory.js +360 -0
  50. package/dist/runtime-plugins/builtin/memory.js.map +1 -0
  51. package/dist/runtime-plugins/cloud-connector.d.ts +56 -0
  52. package/dist/runtime-plugins/cloud-connector.js +261 -0
  53. package/dist/runtime-plugins/cloud-connector.js.map +1 -0
  54. package/dist/runtime-plugins/composio/client.d.ts +65 -0
  55. package/dist/runtime-plugins/composio/client.js +190 -0
  56. package/dist/runtime-plugins/composio/client.js.map +1 -0
  57. package/dist/runtime-plugins/composio/index.d.ts +23 -0
  58. package/dist/runtime-plugins/composio/index.js +113 -0
  59. package/dist/runtime-plugins/composio/index.js.map +1 -0
  60. package/dist/runtime-plugins/connector.d.ts +15 -0
  61. package/dist/runtime-plugins/connector.js +17 -0
  62. package/dist/runtime-plugins/connector.js.map +1 -0
  63. package/dist/runtime-plugins/extensions.d.ts +21 -0
  64. package/dist/runtime-plugins/extensions.js +23 -0
  65. package/dist/runtime-plugins/extensions.js.map +1 -0
  66. package/dist/runtime-plugins/host.d.ts +34 -0
  67. package/dist/runtime-plugins/host.js +263 -0
  68. package/dist/runtime-plugins/host.js.map +1 -0
  69. package/dist/runtime-plugins/index.d.ts +12 -0
  70. package/dist/runtime-plugins/index.js +7 -0
  71. package/dist/runtime-plugins/index.js.map +1 -0
  72. package/dist/runtime-plugins/loader.d.ts +5 -0
  73. package/dist/runtime-plugins/loader.js +36 -0
  74. package/dist/runtime-plugins/loader.js.map +1 -0
  75. package/dist/runtime-plugins/tool-adapter.d.ts +3 -0
  76. package/dist/runtime-plugins/tool-adapter.js +13 -0
  77. package/dist/runtime-plugins/tool-adapter.js.map +1 -0
  78. package/dist/runtime-plugins/types.d.ts +81 -0
  79. package/dist/runtime-plugins/types.js +2 -0
  80. package/dist/runtime-plugins/types.js.map +1 -0
  81. package/dist/sync/settings.d.ts +2 -0
  82. package/dist/sync/settings.js +17 -1
  83. package/dist/sync/settings.js.map +1 -1
  84. package/dist/tools/registry.d.ts +2 -0
  85. package/dist/tools/registry.js +10 -0
  86. package/dist/tools/registry.js.map +1 -1
  87. package/dist/tools/types.d.ts +2 -0
  88. package/dist/tools/types.js.map +1 -1
  89. package/official.json +1 -2
  90. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/runtime-plugins/tool-adapter.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,SAAwB;IAClE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7E,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe;QAC9D,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;QACpD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACjE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QAC9E,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,81 @@
1
+ import type { HookEvent, HookHandler } from "../agent/hooks.ts";
2
+ import type { AuthProvider } from "../auth/types.ts";
3
+ import type { AuditSink } from "../core/audit.ts";
4
+ import type { ModelSpec, Provider } from "../providers/types.ts";
5
+ import type { Tool } from "../tools/types.ts";
6
+ import type { Logger } from "../util/logger.ts";
7
+ import type { PluginPage } from "./extensions.ts";
8
+ export type Dispose = () => void | Promise<void>;
9
+ /** One protocol for model, tool, audit, connector and background-service plugins. */
10
+ export interface RuntimePlugin<Config = unknown> {
11
+ id: string;
12
+ version: string;
13
+ apiVersion: 1;
14
+ description?: string;
15
+ parseConfig(raw: unknown): Config;
16
+ setup(ctx: PluginContext, config: Config): void | Promise<void>;
17
+ }
18
+ export interface PluginContext {
19
+ readonly pluginId: string;
20
+ readonly logger: Logger;
21
+ readonly signal: AbortSignal;
22
+ readonly tools: {
23
+ register(tool: Tool): void;
24
+ };
25
+ readonly hooks: {
26
+ on(event: HookEvent, handler: HookHandler): void;
27
+ };
28
+ readonly models: {
29
+ register(provider: Provider, models: readonly ModelSpec[]): void;
30
+ };
31
+ readonly auth: {
32
+ register(provider: AuthProvider): void;
33
+ };
34
+ readonly audit: {
35
+ registerSink(sink: AuditSink): void;
36
+ };
37
+ readonly prompts: {
38
+ register(source: () => Promise<string | undefined>): void;
39
+ };
40
+ readonly pages: {
41
+ register(page: PluginPage): void;
42
+ };
43
+ /** Hooks run after every plugin has finished setup. */
44
+ onStart(start: () => void | Promise<void>): void;
45
+ /** Register immediately after acquiring a resource, including during setup. */
46
+ onDispose(cleanup: Dispose): void;
47
+ }
48
+ export interface RuntimePluginConfig {
49
+ id: string;
50
+ /** Absolute local file or installed package; never downloaded by the loader. */
51
+ module?: string;
52
+ enabled?: boolean;
53
+ /** Startup failure aborts Harness creation. Defaults to true. */
54
+ required?: boolean;
55
+ config?: unknown;
56
+ }
57
+ export interface RuntimePluginRegistration<Config = any> {
58
+ plugin: RuntimePlugin<Config>;
59
+ config?: unknown;
60
+ enabled?: boolean;
61
+ required?: boolean;
62
+ }
63
+ export type PluginState = "disabled" | "loading" | "setting-up" | "ready" | "starting" | "active" | "failed" | "stopping" | "stopped";
64
+ export interface RuntimePluginStatus {
65
+ id: string;
66
+ version?: string;
67
+ description?: string;
68
+ state: PluginState;
69
+ required: boolean;
70
+ contributions: {
71
+ tools: number;
72
+ models: number;
73
+ auth: number;
74
+ hooks: number;
75
+ audit: number;
76
+ prompts: number;
77
+ pages: number;
78
+ };
79
+ /** Errors intentionally omit plugin-provided messages which may contain secrets. */
80
+ error?: string;
81
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime-plugins/types.ts"],"names":[],"mappings":""}
@@ -18,6 +18,8 @@ import type { SyncConfig } from "../config.ts";
18
18
  */
19
19
  /** The official service. Overridden by `sync.url` for self-hosted servers. */
20
20
  export declare const DEFAULT_SYNC_URL = "https://sync.oharness.ai";
21
+ /** Shared destination for all sync protocols; never send account tokens over public HTTP. */
22
+ export declare function resolveSyncUrl(config?: SyncConfig, env?: NodeJS.ProcessEnv): string;
21
23
  export interface ResolvedSync {
22
24
  url: string;
23
25
  token: string;
@@ -18,6 +18,22 @@ import path from "node:path";
18
18
  */
19
19
  /** The official service. Overridden by `sync.url` for self-hosted servers. */
20
20
  export const DEFAULT_SYNC_URL = "https://sync.oharness.ai";
21
+ /** Shared destination for all sync protocols; never send account tokens over public HTTP. */
22
+ export function resolveSyncUrl(config, env = process.env) {
23
+ const raw = config?.url ?? env["OHARNESS_SYNC_URL"] ?? DEFAULT_SYNC_URL;
24
+ let url;
25
+ try {
26
+ url = new URL(raw);
27
+ }
28
+ catch {
29
+ throw new Error("Invalid sync service URL");
30
+ }
31
+ if (url.username || url.password || url.search || url.hash ||
32
+ (url.protocol !== "https:" && !(url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname)))) {
33
+ throw new Error("Sync requires HTTPS (HTTP allowed for loopback development)");
34
+ }
35
+ return url.href.replace(/\/+$/, "");
36
+ }
21
37
  export function resolveSync(inputs) {
22
38
  const env = inputs.env ?? process.env;
23
39
  const flag = env["OHARNESS_SYNC"];
@@ -26,13 +42,13 @@ export function resolveSync(inputs) {
26
42
  }
27
43
  if (inputs.config?.enabled === false)
28
44
  return { on: false, reason: "disabled" };
29
- const url = (inputs.config?.url ?? env["OHARNESS_SYNC_URL"] ?? DEFAULT_SYNC_URL).replace(/\/+$/, "");
30
45
  const token = inputs.config?.token ?? env["OHARNESS_SYNC_TOKEN"] ?? inputs.accountToken;
31
46
  // Not an error: an unauthenticated harness is the normal state before the
32
47
  // first sign-in, and it should behave exactly like one with sync switched
33
48
  // off rather than logging a failure on every write.
34
49
  if (!token)
35
50
  return { on: false, reason: "no-credential" };
51
+ const url = resolveSyncUrl(inputs.config, env);
36
52
  return { on: true, target: { url, token } };
37
53
  }
38
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/sync/settings.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;;;;;;;;;;;;GAgBG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAyB3D,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAEtC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,gBAAgB,CAAC,CAAC,OAAO,CACtF,MAAM,EACN,EAAE,CACH,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;IACxF,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,MAA8B,EAC9B,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,OAAO,KAAK,OAAO,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/sync/settings.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;;;;;;;;;;;;GAgBG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAE3D,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,MAAyB,OAAO,CAAC,GAAG;IACtF,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,gBAAgB,CAAC;IACxE,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAAC,CAAC;IAClF,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;QACtD,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7H,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAyBD,MAAM,UAAU,WAAW,CAAC,MAAkB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAEtC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAE/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC;IACxF,0EAA0E;IAC1E,0EAA0E;IAC1E,oDAAoD;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1D,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,MAA8B,EAC9B,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,OAAO,KAAK,OAAO,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC"}
@@ -15,6 +15,8 @@ export declare class ToolRegistry {
15
15
  register(tool: Tool): this;
16
16
  registerAll(tools: Iterable<Tool>): this;
17
17
  unregister(name: string): boolean;
18
+ /** Plugin registration: never replace an existing tool; undo only this instance. */
19
+ registerScoped(tool: Tool): () => void;
18
20
  /** Drop every tool contributed by an MCP server (used on disconnect). */
19
21
  unregisterServer(server: string): number;
20
22
  get(name: string): Tool | undefined;
@@ -17,6 +17,16 @@ export class ToolRegistry {
17
17
  unregister(name) {
18
18
  return this.tools.delete(name);
19
19
  }
20
+ /** Plugin registration: never replace an existing tool; undo only this instance. */
21
+ registerScoped(tool) {
22
+ if (this.tools.has(tool.name))
23
+ throw new ToolError(tool.name, "tool already registered");
24
+ this.tools.set(tool.name, tool);
25
+ return () => {
26
+ if (this.tools.get(tool.name) === tool)
27
+ this.tools.delete(tool.name);
28
+ };
29
+ }
20
30
  /** Drop every tool contributed by an MCP server (used on disconnect). */
21
31
  unregisterServer(server) {
22
32
  let removed = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAU9C;;;GAGG;AACH,MAAM,OAAO,YAAY;IACN,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEjD,QAAQ,CAAC,IAAU;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAAqB;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,yEAAyE;IACzE,gBAAgB,CAAC,MAAc;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAY;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CACjB,IAAI,EACJ,kBAAkB,IAAI,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,sEAAsE;IACtE,OAAO,CAAC,MAAmB;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,MAAmB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,QAAQ,CAAC,MAAkB;QACzB,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAA8B;IACxE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3F,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAAe;IACzD,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,KAAK,OAAO,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;SAC1D,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,8 @@ export interface Tool {
92
92
  hidden?: boolean;
93
93
  /** Where the tool came from, for `/tools` and permission rules. */
94
94
  source?: "builtin" | "mcp" | "custom";
95
+ /** Runtime plugin which owns this tool; assigned by PluginHost. */
96
+ pluginId?: string;
95
97
  /** MCP server name when `source === "mcp"`. */
96
98
  server?: string;
97
99
  /** Parse/validate raw model input. Returning an error skips execution. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AA0GA,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAkC;IACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAgB;IACxE,MAAM,OAAO,GAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,OAAO,MAAM,CAAC,OAAO;SAClB,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AA4GA,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAkC;IACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAgB;IACxE,MAAM,OAAO,GAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,OAAO,MAAM,CAAC,OAAO;SAClB,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
package/official.json CHANGED
@@ -1,4 +1,3 @@
1
1
  {
2
- "supabaseUrl": "https://xuqupogshrptlyrbcgne.supabase.co",
3
- "supabaseAnonKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inh1cXVwb2dzaHJwdGx5cmJjZ25lIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDI2MzY3ODEsImV4cCI6MjA1ODIxMjc4MX0.aSmArTFk0hgMdaueEULtceSzCKfC8mOSLNhNSeLojUo"
2
+ "siteUrl": "https://oharness.ai"
4
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oharness/engine",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "The agent loop, tool execution, context management and permissions. No frontend, no transport.",
5
5
  "type": "module",
6
6
  "license": "MIT",