@deepstrike/sdk 0.1.5 → 0.1.8

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 (45) hide show
  1. package/README.md +31 -20
  2. package/dist/agent.d.ts +2 -1
  3. package/dist/agent.js +18 -20
  4. package/dist/governance.d.ts +17 -0
  5. package/dist/governance.js +34 -0
  6. package/dist/harness/harness.js +4 -9
  7. package/dist/index.d.ts +15 -4
  8. package/dist/index.js +11 -8
  9. package/dist/kernel.d.ts +149 -0
  10. package/dist/kernel.js +9 -0
  11. package/dist/memory/protocols.d.ts +2 -1
  12. package/dist/memory/protocols.js +0 -1
  13. package/dist/providers/anthropic.d.ts +11 -2
  14. package/dist/providers/anthropic.js +46 -10
  15. package/dist/providers/base.d.ts +3 -0
  16. package/dist/providers/base.js +79 -0
  17. package/dist/providers/catalog.d.ts +14 -0
  18. package/dist/providers/catalog.js +45 -0
  19. package/dist/providers/deepseek.d.ts +9 -0
  20. package/dist/providers/deepseek.js +64 -0
  21. package/dist/providers/gemini.d.ts +14 -0
  22. package/dist/providers/gemini.js +142 -0
  23. package/dist/providers/kimi.d.ts +7 -0
  24. package/dist/providers/kimi.js +8 -0
  25. package/dist/providers/minimax.d.ts +7 -0
  26. package/dist/providers/minimax.js +10 -0
  27. package/dist/providers/openai-chat.d.ts +27 -0
  28. package/dist/providers/openai-chat.js +41 -0
  29. package/dist/providers/openai-responses.d.ts +42 -0
  30. package/dist/providers/openai-responses.js +220 -0
  31. package/dist/providers/openai.d.ts +4 -36
  32. package/dist/providers/openai.js +12 -121
  33. package/dist/providers/profiles.d.ts +342 -0
  34. package/dist/providers/profiles.js +190 -0
  35. package/dist/providers/qwen.d.ts +18 -0
  36. package/dist/providers/qwen.js +103 -0
  37. package/dist/runtime/server.d.ts +7 -0
  38. package/dist/runtime/server.js +37 -0
  39. package/dist/safety/permissions.d.ts +1 -0
  40. package/dist/safety/permissions.js +3 -0
  41. package/dist/signals/gateway.js +4 -0
  42. package/dist/signals/scheduled.js +4 -0
  43. package/dist/signals/types.d.ts +10 -1
  44. package/dist/types.d.ts +17 -2
  45. package/package.json +9 -4
@@ -0,0 +1,37 @@
1
+ const BROWSER_LIKE_GLOBALS = ["window", "document", "navigator", "self"];
2
+ /**
3
+ * Some server-side tools install browser globals into Node for DOM work. SDKs
4
+ * that probe those globals during construction can then misclassify the host as
5
+ * a browser, so hide them only for the synchronous server-only bootstrap and
6
+ * restore the process exactly as we found it afterward.
7
+ */
8
+ export function withServerRuntimeGuard(fn) {
9
+ const snapshots = BROWSER_LIKE_GLOBALS.map(name => ({
10
+ name,
11
+ descriptor: Object.getOwnPropertyDescriptor(globalThis, name),
12
+ }));
13
+ try {
14
+ for (const { name, descriptor } of snapshots) {
15
+ if (!descriptor)
16
+ continue;
17
+ if (descriptor.configurable) {
18
+ Reflect.deleteProperty(globalThis, name);
19
+ }
20
+ else if ("value" in descriptor && descriptor.writable) {
21
+ Object.defineProperty(globalThis, name, { ...descriptor, value: undefined });
22
+ }
23
+ }
24
+ return fn();
25
+ }
26
+ finally {
27
+ for (const { name, descriptor } of snapshots) {
28
+ restoreGlobal(name, descriptor);
29
+ }
30
+ }
31
+ }
32
+ function restoreGlobal(name, descriptor) {
33
+ if (descriptor)
34
+ Object.defineProperty(globalThis, name, descriptor);
35
+ else
36
+ Reflect.deleteProperty(globalThis, name);
37
+ }
@@ -24,6 +24,7 @@ export declare class PermissionManager {
24
24
  requiresApproval?: boolean;
25
25
  note?: string;
26
26
  }): this;
27
+ grantWithApproval(resource: string, action: string, note?: string): this;
27
28
  revoke(resource: string, action: string, note?: string): this;
28
29
  private matchPermission;
29
30
  evaluate(resource: string, action: string): PermissionDecision;
@@ -19,6 +19,9 @@ export class PermissionManager {
19
19
  });
20
20
  return this;
21
21
  }
22
+ grantWithApproval(resource, action, note = "") {
23
+ return this.grant(resource, action, { requiresApproval: true, note });
24
+ }
22
25
  revoke(resource, action, note = "") {
23
26
  const key = `${resource}:${action}`;
24
27
  this.permissions.set(key, { tool: resource, action, allowed: false, requiresApproval: false, note });
@@ -33,6 +33,10 @@ export class SignalGateway {
33
33
  this.timers.delete(key);
34
34
  this.emit({
35
35
  kind: "scheduled",
36
+ source: "cron",
37
+ signalType: "job",
38
+ urgency: "normal",
39
+ dedupeKey: key,
36
40
  payload: { goal: prompt.goal, criteria: prompt.criteria, runAtMs: prompt.runAtMs, ...prompt.metadata },
37
41
  });
38
42
  };
@@ -12,6 +12,10 @@ export class ScheduledPrompt {
12
12
  toSignal() {
13
13
  return {
14
14
  kind: "scheduled",
15
+ source: "cron",
16
+ signalType: "job",
17
+ urgency: "normal",
18
+ dedupeKey: `cron:${this.goal}:${this.runAtMs}`,
15
19
  payload: { goal: this.goal, criteria: this.criteria, runAtMs: this.runAtMs, ...this.metadata },
16
20
  };
17
21
  }
@@ -1,6 +1,15 @@
1
+ export type RuntimeSignalSource = "cron" | "gateway" | "heartbeat" | "custom";
2
+ export type RuntimeSignalType = "event" | "job" | "alert";
3
+ export type RuntimeSignalUrgency = "low" | "normal" | "high" | "critical";
1
4
  export interface RuntimeSignal {
2
- kind: "interrupt" | "scheduled" | "external";
5
+ source: RuntimeSignalSource;
6
+ signalType: RuntimeSignalType;
7
+ urgency: RuntimeSignalUrgency;
3
8
  payload: Record<string, unknown>;
9
+ dedupeKey?: string;
10
+ /** @deprecated Use source/signalType/urgency directly. */
11
+ kind?: "interrupt" | "scheduled" | "external";
12
+ /** @deprecated Prefer explicit `urgency`. */
4
13
  priority?: number;
5
14
  }
6
15
  export interface SignalSource {
package/dist/types.d.ts CHANGED
@@ -20,7 +20,13 @@ export interface AudioPart {
20
20
  /** MIME type, e.g. `"audio/wav"`. */
21
21
  mediaType: string;
22
22
  }
23
- export type ContentPart = TextPart | ImagePart | AudioPart;
23
+ export interface ToolResultPart {
24
+ type: "tool_result";
25
+ callId: string;
26
+ output: string;
27
+ isError: boolean;
28
+ }
29
+ export type ContentPart = TextPart | ImagePart | AudioPart | ToolResultPart;
24
30
  export interface Message {
25
31
  role: "system" | "user" | "assistant" | "tool";
26
32
  /** Plain-text content. When `contentParts` is present, this holds only the text segments. */
@@ -103,7 +109,16 @@ export interface RetryConfig {
103
109
  circuitOpenAfter?: number;
104
110
  circuitResetAfter?: number;
105
111
  }
112
+ /**
113
+ * Opaque provider-owned state scoped to a single Agent run.
114
+ *
115
+ * The framework only creates and threads this object through provider turns.
116
+ * Providers may use it for protocol-native continuation state such as
117
+ * Responses `previous_response_id` without leaking those semantics into the kernel.
118
+ */
119
+ export type ProviderRunState = Record<string, unknown>;
106
120
  export interface LLMProvider {
121
+ createRunState?(): ProviderRunState;
107
122
  complete(messages: Message[], tools: ToolSchema[]): Promise<Message>;
108
- stream(messages: Message[], tools: ToolSchema[], extensions?: Record<string, unknown>): AsyncIterable<StreamEvent>;
123
+ stream(messages: Message[], tools: ToolSchema[], extensions?: Record<string, unknown>, state?: ProviderRunState): AsyncIterable<StreamEvent>;
109
124
  }
package/package.json CHANGED
@@ -1,18 +1,23 @@
1
1
  {
2
2
  "name": "@deepstrike/sdk",
3
- "version": "0.1.5",
3
+ "version": "0.1.8",
4
4
  "description": "DeepStrike Node.js SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
- "files": ["dist", "README.md"],
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
9
12
  "scripts": {
10
13
  "build": "tsc",
11
- "test": "node --experimental-vm-modules node_modules/.bin/jest"
14
+ "test": "node --experimental-vm-modules node_modules/.bin/jest",
15
+ "smoke:providers": "node ../scripts/smoke-node-provider-loops.mjs"
12
16
  },
13
17
  "dependencies": {
14
18
  "@anthropic-ai/sdk": "^0.39.0",
15
- "@deepstrike/core": "0.1.5",
19
+ "@deepstrike/core": "0.1.8",
20
+ "@google/generative-ai": "^0.24.1",
16
21
  "openai": "^4.77.0"
17
22
  },
18
23
  "devDependencies": {