@delofarag/ai-utils 1.6.0 → 1.7.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 (84) hide show
  1. package/README.md +648 -97
  2. package/dist/client/index.d.ts +5 -0
  3. package/dist/client/index.d.ts.map +1 -0
  4. package/dist/client/index.js +13 -0
  5. package/dist/client/index.js.map +1 -0
  6. package/dist/heart/agent.d.ts +6 -6
  7. package/dist/heart/agent.d.ts.map +1 -1
  8. package/dist/heart/agent.js +21 -21
  9. package/dist/heart/agent.js.map +1 -1
  10. package/dist/heart/chain.d.ts +4 -8
  11. package/dist/heart/chain.d.ts.map +1 -1
  12. package/dist/heart/chain.js +1 -1
  13. package/dist/heart/chain.js.map +1 -1
  14. package/dist/heart/deepAgent.d.ts +110 -0
  15. package/dist/heart/deepAgent.d.ts.map +1 -0
  16. package/dist/heart/deepAgent.js +304 -0
  17. package/dist/heart/deepAgent.js.map +1 -0
  18. package/dist/heart/tools/RAGTool.d.ts +3 -7
  19. package/dist/heart/tools/RAGTool.d.ts.map +1 -1
  20. package/dist/heart/tools/RAGTool.js +1 -1
  21. package/dist/heart/tools/RAGTool.js.map +1 -1
  22. package/dist/heart/tools/Tavily.d.ts +3 -7
  23. package/dist/heart/tools/Tavily.d.ts.map +1 -1
  24. package/dist/heart/tools/Tavily.js +1 -1
  25. package/dist/heart/tools/Tavily.js.map +1 -1
  26. package/dist/heart/tools/ToolRegistry.d.ts +14 -5
  27. package/dist/heart/tools/ToolRegistry.d.ts.map +1 -1
  28. package/dist/heart/tools/ToolRegistry.js +2 -3
  29. package/dist/heart/tools/ToolRegistry.js.map +1 -1
  30. package/dist/heart/tools/zodios/CombinedRegistry.js +1 -1
  31. package/dist/heart/tools/zodios/ZodiosToolRegistry.js +1 -1
  32. package/dist/helpers/chatbot.d.ts +11 -3
  33. package/dist/helpers/chatbot.d.ts.map +1 -1
  34. package/dist/helpers/chatbot.js +44 -5
  35. package/dist/helpers/chatbot.js.map +1 -1
  36. package/dist/helpers/deepagent/backend.d.ts +92 -0
  37. package/dist/helpers/deepagent/backend.d.ts.map +1 -0
  38. package/dist/helpers/deepagent/backend.js +93 -0
  39. package/dist/helpers/deepagent/backend.js.map +1 -0
  40. package/dist/helpers/deepagent/interruptOn.d.ts +93 -0
  41. package/dist/helpers/deepagent/interruptOn.d.ts.map +1 -0
  42. package/dist/helpers/deepagent/interruptOn.js +190 -0
  43. package/dist/helpers/deepagent/interruptOn.js.map +1 -0
  44. package/dist/helpers/deepagent/interruptTypes.d.ts +65 -0
  45. package/dist/helpers/deepagent/interruptTypes.d.ts.map +1 -0
  46. package/dist/helpers/deepagent/interruptTypes.js +2 -0
  47. package/dist/helpers/deepagent/interruptTypes.js.map +1 -0
  48. package/dist/helpers/deepagent/permissions.d.ts +58 -0
  49. package/dist/helpers/deepagent/permissions.d.ts.map +1 -0
  50. package/dist/helpers/deepagent/permissions.js +72 -0
  51. package/dist/helpers/deepagent/permissions.js.map +1 -0
  52. package/dist/helpers/deepagent/sandbox.d.ts +7 -0
  53. package/dist/helpers/deepagent/sandbox.d.ts.map +1 -0
  54. package/dist/helpers/deepagent/sandbox.js +8 -0
  55. package/dist/helpers/deepagent/sandbox.js.map +1 -0
  56. package/dist/helpers/deepagent/streamEvents.d.ts +10 -0
  57. package/dist/helpers/deepagent/streamEvents.d.ts.map +1 -0
  58. package/dist/helpers/deepagent/streamEvents.js +149 -0
  59. package/dist/helpers/deepagent/streamEvents.js.map +1 -0
  60. package/dist/helpers/helpers.d.ts +4 -3
  61. package/dist/helpers/helpers.d.ts.map +1 -1
  62. package/dist/helpers/helpers.js +25 -0
  63. package/dist/helpers/helpers.js.map +1 -1
  64. package/dist/helpers/rag.d.ts +1 -1
  65. package/dist/imports.d.ts +14 -2
  66. package/dist/imports.d.ts.map +1 -1
  67. package/dist/imports.js +15 -2
  68. package/dist/imports.js.map +1 -1
  69. package/dist/index.d.ts +8 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +6 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/magic-funcs/evaluators/classify.d.ts +3 -11
  74. package/dist/magic-funcs/evaluators/classify.d.ts.map +1 -1
  75. package/dist/magic-funcs/evaluators/classify.js +1 -1
  76. package/dist/magic-funcs/evaluators/decide.d.ts +7 -11
  77. package/dist/magic-funcs/evaluators/decide.d.ts.map +1 -1
  78. package/dist/magic-funcs/evaluators/decide.js +1 -1
  79. package/dist/magic-funcs/parsers/extract.d.ts +2 -2
  80. package/dist/magic-funcs/parsers/extract.d.ts.map +1 -1
  81. package/dist/magic-funcs/parsers/extract.js.map +1 -1
  82. package/dist/magic-funcs/parsers/structure.d.ts +1 -1
  83. package/dist/magic-funcs/parsers/structure.js.map +1 -1
  84. package/package.json +33 -18
@@ -1 +1 @@
1
- {"version":3,"file":"chatbot.js","sourceRoot":"","sources":["../../src/helpers/chatbot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAYpC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAC1B,UAAU,EACV,SAAS,GAAG,MAAM,EAClB,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAC3C,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EACT;IACX,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,OAAO,IAAI,EAAE,CAAC;QACV,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAA;YACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAK;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC/B,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,EAAE;aAChB,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAC1B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACnB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAC/B,CAAC;QAED,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAA;QACvB,IAAI,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,gBAAgB,4BAA4B,CAAC,CAAA;YAC7E,MAAK;QACT,CAAC;IACL,CAAC;AACL,CAAC;AAMD;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC1B,QAA0B,EAC1B,OAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,WAAW,EAAE,CAAC;IAElD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;QAC5C,KAAK,CAAC,KAAK,CAAC,UAAU;YACpB,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACnC,UAAU,CAAC,OAAO,CAChB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAC7C,CAAC;gBACJ,CAAC;gBAED,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC1B,GAAG,YAAY;QACf,OAAO,EAAE;YACP,cAAc,EAAE,sBAAsB;YACtC,GAAG,OAAO;SACX;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"chatbot.js","sourceRoot":"","sources":["../../src/helpers/chatbot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { StateBackend, FilesystemBackend, CompositeBackend, type CreateDeepAgentParams, type LocalShellBackendOptions } from "../../imports";
2
+ import type { ExecuteCapableDeepAgentBackend } from "./interruptOn";
3
+ /** Native deepagents-Backend — Instanz oder Factory, kein Promise. */
4
+ export type DeepAgentBackend = NonNullable<CreateDeepAgentParams["backend"]>;
5
+ type Prettify<T> = {
6
+ [K in keyof T]: T[K];
7
+ } & {};
8
+ export type CreateLocalShellBackendOptions = Prettify<Omit<LocalShellBackendOptions, "rootDir"> & {
9
+ route?: string;
10
+ rootDir: string;
11
+ }>;
12
+ /**
13
+ * erstellt einfach den StateBackend von langchain
14
+ * @example
15
+ * export function createStateBackend() {
16
+ return new StateBackend()
17
+ }
18
+ */
19
+ export declare function createStateBackend(): StateBackend;
20
+ /**
21
+ * erstellt ein reines Filesystembackend, nimm lieber 'createWorkspaceBackend()'
22
+ * @example
23
+ * export function createFilesystemBackend({
24
+ rootDir = process.cwd(),
25
+ virtualMode = true,
26
+ maxFileSizeMb,
27
+ }: {
28
+ rootDir?: string
29
+ virtualMode?: boolean
30
+ maxFileSizeMb?: number
31
+ } = {}): FilesystemBackend {
32
+ return new FilesystemBackend({ rootDir, virtualMode, maxFileSizeMb })
33
+ }
34
+ */
35
+ export declare function createFilesystemBackend({ rootDir, virtualMode, maxFileSizeMb, }?: {
36
+ rootDir?: string;
37
+ virtualMode?: boolean;
38
+ maxFileSizeMb?: number;
39
+ }): FilesystemBackend;
40
+ /**
41
+ * erstellt ein Filesystembackend mit einem normalem Statebackend damit dein workspace nicht beschmutzt wird
42
+ * @example
43
+ * export function createWorkspaceBackend({
44
+ rootDir = process.cwd(),
45
+ route = "/workspace/",
46
+ virtualMode = true,
47
+ }: {
48
+ rootDir?: string
49
+ route?: string
50
+ virtualMode?: boolean
51
+ } = {}): FilesystemBackend {
52
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`
53
+ return new CompositeBackend(
54
+ new StateBackend(),
55
+ {
56
+ [normalizedRoute]: new FilesystemBackend({ rootDir, virtualMode }),
57
+ }
58
+ )
59
+ }
60
+ */
61
+ export declare function createWorkspaceBackend({ rootDir, virtualMode, route, }: {
62
+ rootDir: string;
63
+ route?: string;
64
+ virtualMode?: boolean;
65
+ }): CompositeBackend;
66
+ /**
67
+ * LocalShell unter route (default /workspace/) + StateBackend für interne Agent-Dateien.
68
+ * execute() läuft weiter auf dem Host — nur für Dev.
69
+ * @example
70
+ * export async function createLocalShellBackend({
71
+ rootDir,
72
+ route = "/workspace/",
73
+ virtualMode = true,
74
+ ...options
75
+ }: CreateLocalShellBackendOptions) {
76
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`
77
+ const shellBackend = await LocalShellBackend.create({
78
+ rootDir,
79
+ virtualMode,
80
+ ...options,
81
+ })
82
+ return new CompositeBackend(
83
+ new StateBackend(),
84
+ {
85
+ [normalizedRoute]: shellBackend,
86
+ }
87
+ )
88
+ }
89
+ */
90
+ export declare function createLocalShellBackend({ rootDir, route, virtualMode, ...options }: CreateLocalShellBackendOptions): Promise<CompositeBackend & ExecuteCapableDeepAgentBackend>;
91
+ export {};
92
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/helpers/deepagent/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,iBAAiB,EAEjB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAChC,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAEnE,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAA;AAE5E,KAAK,QAAQ,CAAC,CAAC,IAAI;KACd,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,EAAE,CAAA;AAEN,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CACjD,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAClB,CACJ,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,EACpC,OAAuB,EACvB,WAAkB,EAClB,aAAa,GAChB,GAAE;IACC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,iBAAiB,CAEzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CAAC,EACnC,OAAO,EACP,WAAkB,EAClB,KAAqB,GACxB,EAAE;IACC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB,GAAG,gBAAgB,CAQnB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,OAAO,EACP,KAAqB,EACrB,WAAkB,EAClB,GAAG,OAAO,EACb,EAAE,8BAA8B,GAAG,OAAO,CAAC,gBAAgB,GAAG,8BAA8B,CAAC,CAc7F"}
@@ -0,0 +1,93 @@
1
+ import { StateBackend, FilesystemBackend, LocalShellBackend, CompositeBackend, } from "../../imports";
2
+ /**
3
+ * erstellt einfach den StateBackend von langchain
4
+ * @example
5
+ * export function createStateBackend() {
6
+ return new StateBackend()
7
+ }
8
+ */
9
+ export function createStateBackend() {
10
+ return new StateBackend();
11
+ }
12
+ /**
13
+ * erstellt ein reines Filesystembackend, nimm lieber 'createWorkspaceBackend()'
14
+ * @example
15
+ * export function createFilesystemBackend({
16
+ rootDir = process.cwd(),
17
+ virtualMode = true,
18
+ maxFileSizeMb,
19
+ }: {
20
+ rootDir?: string
21
+ virtualMode?: boolean
22
+ maxFileSizeMb?: number
23
+ } = {}): FilesystemBackend {
24
+ return new FilesystemBackend({ rootDir, virtualMode, maxFileSizeMb })
25
+ }
26
+ */
27
+ export function createFilesystemBackend({ rootDir = process.cwd(), virtualMode = true, maxFileSizeMb, } = {}) {
28
+ return new FilesystemBackend({ rootDir, virtualMode, maxFileSizeMb });
29
+ }
30
+ /**
31
+ * erstellt ein Filesystembackend mit einem normalem Statebackend damit dein workspace nicht beschmutzt wird
32
+ * @example
33
+ * export function createWorkspaceBackend({
34
+ rootDir = process.cwd(),
35
+ route = "/workspace/",
36
+ virtualMode = true,
37
+ }: {
38
+ rootDir?: string
39
+ route?: string
40
+ virtualMode?: boolean
41
+ } = {}): FilesystemBackend {
42
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`
43
+ return new CompositeBackend(
44
+ new StateBackend(),
45
+ {
46
+ [normalizedRoute]: new FilesystemBackend({ rootDir, virtualMode }),
47
+ }
48
+ )
49
+ }
50
+ */
51
+ export function createWorkspaceBackend({ rootDir, virtualMode = true, route = "/workspace/", }) {
52
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`;
53
+ return new CompositeBackend(new StateBackend(), {
54
+ [normalizedRoute]: new FilesystemBackend({ rootDir, virtualMode }),
55
+ });
56
+ }
57
+ /**
58
+ * LocalShell unter route (default /workspace/) + StateBackend für interne Agent-Dateien.
59
+ * execute() läuft weiter auf dem Host — nur für Dev.
60
+ * @example
61
+ * export async function createLocalShellBackend({
62
+ rootDir,
63
+ route = "/workspace/",
64
+ virtualMode = true,
65
+ ...options
66
+ }: CreateLocalShellBackendOptions) {
67
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`
68
+ const shellBackend = await LocalShellBackend.create({
69
+ rootDir,
70
+ virtualMode,
71
+ ...options,
72
+ })
73
+ return new CompositeBackend(
74
+ new StateBackend(),
75
+ {
76
+ [normalizedRoute]: shellBackend,
77
+ }
78
+ )
79
+ }
80
+ */
81
+ export async function createLocalShellBackend({ rootDir, route = "/workspace/", virtualMode = true, ...options }) {
82
+ const normalizedRoute = route.endsWith("/") ? route : `${route}/`;
83
+ const shellBackend = await LocalShellBackend.create({
84
+ rootDir,
85
+ virtualMode,
86
+ ...options,
87
+ });
88
+ const backend = new CompositeBackend(new StateBackend(), {
89
+ [normalizedRoute]: shellBackend,
90
+ });
91
+ return Object.assign(backend, { __deepAgentExecute: true });
92
+ }
93
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../src/helpers/deepagent/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GAGnB,MAAM,eAAe,CAAA;AAiBtB;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAC9B,OAAO,IAAI,YAAY,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACpC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EACvB,WAAW,GAAG,IAAI,EAClB,aAAa,MAKb,EAAE;IACF,OAAO,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACnC,OAAO,EACP,WAAW,GAAG,IAAI,EAClB,KAAK,GAAG,aAAa,GAKxB;IACG,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAA;IACjE,OAAO,IAAI,gBAAgB,CACvB,IAAI,YAAY,EAAE,EAClB;QACI,CAAC,eAAe,CAAC,EAAE,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;KACrE,CACJ,CAAA;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAC1C,OAAO,EACP,KAAK,GAAG,aAAa,EACrB,WAAW,GAAG,IAAI,EAClB,GAAG,OAAO,EACmB;IAC7B,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAA;IACjE,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;QAChD,OAAO;QACP,WAAW;QACX,GAAG,OAAO;KACb,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAChC,IAAI,YAAY,EAAE,EAClB;QACI,CAAC,eAAe,CAAC,EAAE,YAAY;KAClC,CACJ,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,kBAAkB,EAAE,IAAa,EAAE,CAAC,CAAA;AACxE,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { Command, type HITLRequest, type HITLResponse, type HitlUserDecision } from "../../imports";
2
+ import type { CreateDeepAgentParams, DynamicStructuredTool } from "../../imports";
3
+ import type { LocalShellBackend } from "deepagents";
4
+ import type { DenoSandbox } from "@langchain/deno";
5
+ import type { DaytonaSandbox } from "@langchain/daytona";
6
+ import type { DeepAgentInterrupt, DeepAgentInterruptConfig, DeepAgentUserDecision } from "./interruptTypes";
7
+ export type { DeepAgentAllowedDecision, DeepAgentInterrupt, DeepAgentInterruptSingle, DeepAgentInterruptBatch, DeepAgentStreamChunk, DeepAgentUserDecision, DeepAgentRunInputBase, DeepAgentHitlFields, DeepAgentInterruptConfig, DeepAgentInterruptToolCall, DeepAgentInterruptQuestion, } from "./interruptTypes";
8
+ /** Immer verfügbare Filesystem-Tools von DeepAgents (Middleware). */
9
+ export declare const DEEP_AGENT_FILESYSTEM_TOOLS: readonly ["ls", "read_file", "write_file", "edit_file", "glob", "grep"];
10
+ /** Shell-Tool — nur wenn Backend `execute()` unterstützt (LocalShell, Deno, Daytona). */
11
+ export declare const DEEP_AGENT_EXECUTE_TOOL: "execute";
12
+ export type DeepAgentFilesystemTool = (typeof DEEP_AGENT_FILESYSTEM_TOOLS)[number];
13
+ export type DeepAgentExecuteTool = typeof DEEP_AGENT_EXECUTE_TOOL;
14
+ type ExecuteCapableBackend = LocalShellBackend | DenoSandbox | DaytonaSandbox;
15
+ /** Von `createLocalShellBackend()` etc. — aktiviert `execute` im interruptOn-Autocomplete. */
16
+ export type ExecuteCapableDeepAgentBackend = {
17
+ readonly __deepAgentExecute?: true;
18
+ };
19
+ /** Runtime: `execute` nur bei Shell/Sandbox-Backend — nicht bei `createWorkspaceBackend()` / Composite+StateBackend. */
20
+ export type BackendSupportsExecute<TBackend> = TBackend extends ExecuteCapableBackend | ExecuteCapableDeepAgentBackend ? true : false;
21
+ type LiteralToolName<TName extends string> = string extends TName ? never : TName;
22
+ export type ToolNamesOf<TTools extends readonly {
23
+ name: string;
24
+ }[]> = {
25
+ [K in keyof TTools]: TTools[K] extends {
26
+ name: infer TName extends string;
27
+ } ? LiteralToolName<TName> : never;
28
+ }[number];
29
+ /** Alle Tool-Namen die der Agent haben kann — Keys für `interruptOn`. */
30
+ export type DeepAgentInterruptableToolName<TTools extends readonly {
31
+ name: string;
32
+ }[] = readonly [], TBackend = unknown> = DeepAgentFilesystemTool | ToolNamesOf<TTools> | (BackendSupportsExecute<TBackend> extends true ? DeepAgentExecuteTool : never);
33
+ export type InterruptOnFor<TToolName extends string> = {
34
+ [K in TToolName]?: DeepAgentInterruptConfig;
35
+ };
36
+ /** Untyped fallback — prefer `InterruptOnFor<DeepAgentInterruptableToolName<...>>` via DeepAgent generics. */
37
+ export type InterruptOn = InterruptOnFor<string>;
38
+ /**
39
+ * Human-in-the-Loop (`interruptOn`-Prop) — pausiert den Agent **vor** Tool-Ausführung.
40
+ *
41
+ * Keys = Tool-Namen die der Agent hat (Autocomplete via DeepAgent-Generics):
42
+ * - immer: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
43
+ * - plus deine `tools: []` (`.name`, z.B. aus ToolRegistry)
44
+ * - plus `execute` nur bei Shell/Sandbox-Backend (LocalShell, Deno, Daytona)
45
+ *
46
+ * Tools die **nicht** im Objekt stehen, laufen ohne Pause.
47
+ *
48
+ * @example
49
+ * new DeepAgent({
50
+ * tools: [pingTool] as const,
51
+ * checkpointer: new MemorySaver(),
52
+ * interruptOn: {
53
+ * ping: {
54
+ * decisions: ["approve", "reject"],
55
+ * question: "Ping ausführen?",
56
+ * },
57
+ * write_file: {
58
+ * decisions: ["approve", "edit", "reject"],
59
+ * question: (call) =>
60
+ * `Datei schreiben?\n\nPfad: ${call.args.path ?? "?"}`,
61
+ * },
62
+ * },
63
+ * })
64
+ *
65
+ * `question` als Function: wird von LangGraph **vor** der Pause mit dem
66
+ * geplanten Tool-Call aufgerufen — `call.name` + `call.args`.
67
+ */
68
+ export declare function mapInterruptOnToNative(interruptOn: InterruptOnFor<string> | undefined): NonNullable<CreateDeepAgentParams["interruptOn"]> | undefined;
69
+ export type InferInterruptOn<TTools extends readonly DynamicStructuredTool[] = readonly DynamicStructuredTool[], TBackend = unknown> = InterruptOnFor<DeepAgentInterruptableToolName<TTools, TBackend>>;
70
+ type InterruptResult = {
71
+ __interrupt__?: Array<{
72
+ value: HITLRequest;
73
+ }>;
74
+ };
75
+ /**
76
+ * Prüft ob ein Agent-Result pausiert hat (Human-in-the-Loop).
77
+ */
78
+ export declare function isInterruptResult(result: unknown): result is InterruptResult & {
79
+ __interrupt__: NonNullable<InterruptResult["__interrupt__"]>;
80
+ };
81
+ export declare function getHitlRequest(result: InterruptResult): HITLRequest | undefined;
82
+ export declare function approveDecision(): HitlUserDecision;
83
+ export declare function rejectDecision(message?: string): HitlUserDecision;
84
+ export declare function editDecision(name: string, args: Record<string, unknown>): HitlUserDecision;
85
+ export declare function approveAll(count: number): HITLResponse;
86
+ export declare function createResumeCommand(decisions: HitlUserDecision[] | HITLResponse): Command;
87
+ export declare function mapHitlToInterrupt(hitl: HITLRequest): DeepAgentInterrupt;
88
+ export declare function mapResultToInterrupt(result: unknown): DeepAgentInterrupt | undefined;
89
+ export declare function userDecisionToHitl(decision: DeepAgentUserDecision, toolName?: string): HitlUserDecision;
90
+ export declare function expandResumeDecisions(decision: DeepAgentUserDecision | undefined, decisions: DeepAgentUserDecision[] | undefined, pendingCount: number, defaultToolName?: string): HitlUserDecision[];
91
+ export declare function getPendingInterruptCount(agent: any, config: Record<string, unknown> | undefined): Promise<number>;
92
+ export declare function extractInterruptFromStreamUpdate(data: unknown): DeepAgentInterrupt | undefined;
93
+ //# sourceMappingURL=interruptOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruptOn.d.ts","sourceRoot":"","sources":["../../../src/helpers/deepagent/interruptOn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ import { Command } from "../../imports";
2
+ /** Immer verfügbare Filesystem-Tools von DeepAgents (Middleware). */
3
+ export const DEEP_AGENT_FILESYSTEM_TOOLS = [
4
+ "ls",
5
+ "read_file",
6
+ "write_file",
7
+ "edit_file",
8
+ "glob",
9
+ "grep",
10
+ ];
11
+ /** Shell-Tool — nur wenn Backend `execute()` unterstützt (LocalShell, Deno, Daytona). */
12
+ export const DEEP_AGENT_EXECUTE_TOOL = "execute";
13
+ /**
14
+ * Human-in-the-Loop (`interruptOn`-Prop) — pausiert den Agent **vor** Tool-Ausführung.
15
+ *
16
+ * Keys = Tool-Namen die der Agent hat (Autocomplete via DeepAgent-Generics):
17
+ * - immer: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`
18
+ * - plus deine `tools: []` (`.name`, z.B. aus ToolRegistry)
19
+ * - plus `execute` nur bei Shell/Sandbox-Backend (LocalShell, Deno, Daytona)
20
+ *
21
+ * Tools die **nicht** im Objekt stehen, laufen ohne Pause.
22
+ *
23
+ * @example
24
+ * new DeepAgent({
25
+ * tools: [pingTool] as const,
26
+ * checkpointer: new MemorySaver(),
27
+ * interruptOn: {
28
+ * ping: {
29
+ * decisions: ["approve", "reject"],
30
+ * question: "Ping ausführen?",
31
+ * },
32
+ * write_file: {
33
+ * decisions: ["approve", "edit", "reject"],
34
+ * question: (call) =>
35
+ * `Datei schreiben?\n\nPfad: ${call.args.path ?? "?"}`,
36
+ * },
37
+ * },
38
+ * })
39
+ *
40
+ * `question` als Function: wird von LangGraph **vor** der Pause mit dem
41
+ * geplanten Tool-Call aufgerufen — `call.name` + `call.args`.
42
+ */
43
+ export function mapInterruptOnToNative(interruptOn) {
44
+ if (!interruptOn)
45
+ return undefined;
46
+ return Object.fromEntries(Object.entries(interruptOn)
47
+ .filter((entry) => entry[1] !== undefined)
48
+ .map(([tool, config]) => [
49
+ tool,
50
+ {
51
+ allowedDecisions: config.decisions,
52
+ description: config.question,
53
+ },
54
+ ]));
55
+ }
56
+ /**
57
+ * Prüft ob ein Agent-Result pausiert hat (Human-in-the-Loop).
58
+ */
59
+ export function isInterruptResult(result) {
60
+ return (typeof result === "object"
61
+ && result !== null
62
+ && "__interrupt__" in result
63
+ && Array.isArray(result.__interrupt__)
64
+ && (result.__interrupt__?.length ?? 0) > 0);
65
+ }
66
+ export function getHitlRequest(result) {
67
+ return result.__interrupt__?.[0]?.value;
68
+ }
69
+ export function approveDecision() {
70
+ return { type: "approve" };
71
+ }
72
+ export function rejectDecision(message) {
73
+ return message ? { type: "reject", message } : { type: "reject" };
74
+ }
75
+ export function editDecision(name, args) {
76
+ return { type: "edit", editedAction: { name, args } };
77
+ }
78
+ export function approveAll(count) {
79
+ return {
80
+ decisions: Array.from({ length: count }, () => approveDecision()),
81
+ };
82
+ }
83
+ export function createResumeCommand(decisions) {
84
+ const resume = Array.isArray(decisions)
85
+ ? { decisions }
86
+ : decisions;
87
+ return new Command({ resume });
88
+ }
89
+ export function mapHitlToInterrupt(hitl) {
90
+ const requests = hitl.actionRequests ?? [];
91
+ const reviews = hitl.reviewConfigs ?? [];
92
+ if (requests.length <= 1) {
93
+ const action = requests[0];
94
+ const review = reviews[0];
95
+ return {
96
+ kind: "interrupt",
97
+ question: action?.description ?? `Tool: ${action?.name ?? "unknown"}`,
98
+ decisions: (review?.allowedDecisions ?? ["approve", "reject"]),
99
+ ...(action?.name ? { toolName: action.name } : {}),
100
+ ...(action?.args ? { args: action.args } : {}),
101
+ };
102
+ }
103
+ return {
104
+ kind: "interrupt",
105
+ items: requests.map((action, i) => ({
106
+ question: action.description ?? `Tool: ${action.name}`,
107
+ decisions: (reviews[i]?.allowedDecisions ?? ["approve", "reject"]),
108
+ toolName: action.name,
109
+ args: (action.args ?? {}),
110
+ })),
111
+ };
112
+ }
113
+ export function mapResultToInterrupt(result) {
114
+ if (!isInterruptResult(result))
115
+ return undefined;
116
+ const hitl = getHitlRequest(result);
117
+ if (!hitl)
118
+ return undefined;
119
+ return mapHitlToInterrupt(hitl);
120
+ }
121
+ export function userDecisionToHitl(decision, toolName) {
122
+ if (decision === "approve")
123
+ return approveDecision();
124
+ if (decision === "reject")
125
+ return rejectDecision();
126
+ if (decision.type === "reject")
127
+ return rejectDecision(decision.message);
128
+ if (!toolName) {
129
+ throw new Error("toolName is required for edit decisions");
130
+ }
131
+ return editDecision(toolName, decision.args);
132
+ }
133
+ export function expandResumeDecisions(decision, decisions, pendingCount, defaultToolName) {
134
+ if (decisions) {
135
+ if (decisions.length !== pendingCount) {
136
+ throw new Error(`Expected ${pendingCount} decisions, got ${decisions.length}`);
137
+ }
138
+ return decisions.map((d) => userDecisionToHitl(d, defaultToolName));
139
+ }
140
+ const single = decision ?? "approve";
141
+ return Array.from({ length: pendingCount }, () => userDecisionToHitl(single, defaultToolName));
142
+ }
143
+ export async function getPendingInterruptCount(agent, config) {
144
+ if (!agent?.getState || !config)
145
+ return 1;
146
+ try {
147
+ const state = await agent.getState(config);
148
+ const tasks = state?.tasks ?? [];
149
+ for (const task of tasks) {
150
+ const interrupts = task?.interrupts ?? [];
151
+ if (interrupts.length > 0) {
152
+ const value = interrupts[0]?.value ?? interrupts[0];
153
+ if (value?.actionRequests?.length)
154
+ return value.actionRequests.length;
155
+ }
156
+ }
157
+ const values = state?.values;
158
+ if (values?.__interrupt__?.length) {
159
+ const hitl = values.__interrupt__[0]?.value;
160
+ if (hitl?.actionRequests?.length)
161
+ return hitl.actionRequests.length;
162
+ }
163
+ }
164
+ catch {
165
+ return 1;
166
+ }
167
+ return 1;
168
+ }
169
+ export function extractInterruptFromStreamUpdate(data) {
170
+ if (!data || typeof data !== "object")
171
+ return undefined;
172
+ const record = data;
173
+ if ("__interrupt__" in record && Array.isArray(record.__interrupt__)) {
174
+ const hitl = record.__interrupt__[0]?.value;
175
+ if (hitl)
176
+ return mapHitlToInterrupt(hitl);
177
+ }
178
+ for (const value of Object.values(record)) {
179
+ if (!value || typeof value !== "object")
180
+ continue;
181
+ const nested = value;
182
+ if ("__interrupt__" in nested && Array.isArray(nested.__interrupt__)) {
183
+ const hitl = nested.__interrupt__[0]?.value;
184
+ if (hitl)
185
+ return mapHitlToInterrupt(hitl);
186
+ }
187
+ }
188
+ return undefined;
189
+ }
190
+ //# sourceMappingURL=interruptOn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruptOn.js","sourceRoot":"","sources":["../../../src/helpers/deepagent/interruptOn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { InvokeInputBase } from "../../heart/chain";
2
+ export type DeepAgentAllowedDecision = "approve" | "edit" | "reject";
3
+ export type DeepAgentInterruptSingle = {
4
+ kind: "interrupt";
5
+ question: string;
6
+ decisions: DeepAgentAllowedDecision[];
7
+ toolName?: string;
8
+ args?: Record<string, unknown>;
9
+ };
10
+ export type DeepAgentInterruptBatch = {
11
+ kind: "interrupt";
12
+ items: Array<{
13
+ question: string;
14
+ decisions: DeepAgentAllowedDecision[];
15
+ toolName: string;
16
+ args: Record<string, unknown>;
17
+ }>;
18
+ };
19
+ export type DeepAgentInterrupt = DeepAgentInterruptSingle | DeepAgentInterruptBatch;
20
+ export type DeepAgentToolEvent = {
21
+ kind: "tool";
22
+ phase: "start";
23
+ toolName: string;
24
+ args?: Record<string, unknown>;
25
+ } | {
26
+ kind: "tool";
27
+ phase: "end";
28
+ toolName: string;
29
+ output?: string;
30
+ };
31
+ export type DeepAgentStreamChunk = string | DeepAgentInterrupt;
32
+ export type DeepAgentStreamChunkWithTools = DeepAgentStreamChunk | DeepAgentToolEvent;
33
+ export type DeepAgentUserDecision = "approve" | "reject" | {
34
+ type: "reject";
35
+ message: string;
36
+ } | {
37
+ type: "edit";
38
+ args: Record<string, unknown>;
39
+ };
40
+ /** Basis-Input für invoke/stream — immer (mit/ohne interruptOn). */
41
+ export type DeepAgentRunInputBase = InvokeInputBase & {
42
+ thread_id?: string;
43
+ context?: Record<string, unknown>;
44
+ };
45
+ /** HITL-Felder — nur im Typ wenn interruptOn konfiguriert. */
46
+ export type DeepAgentHitlFields = {
47
+ decision?: DeepAgentUserDecision;
48
+ decisions?: DeepAgentUserDecision[];
49
+ };
50
+ /** stream()-only — Return-Typ enthält dann DeepAgentToolEvent. */
51
+ export type DeepAgentShowToolCallsField = {
52
+ showToolCalls: true;
53
+ };
54
+ /** Tool-Call der an `question`-Functions übergeben wird (vor der Pause). */
55
+ export type DeepAgentInterruptToolCall = {
56
+ name: string;
57
+ args: Record<string, unknown>;
58
+ };
59
+ export type DeepAgentInterruptQuestion = string | ((toolCall: DeepAgentInterruptToolCall) => string | Promise<string>);
60
+ /** User-Config pro Tool für `interruptOn` auf DeepAgent. */
61
+ export type DeepAgentInterruptConfig = {
62
+ decisions: DeepAgentAllowedDecision[];
63
+ question: DeepAgentInterruptQuestion;
64
+ };
65
+ //# sourceMappingURL=interruptTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruptTypes.d.ts","sourceRoot":"","sources":["../../../src/helpers/deepagent/interruptTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEpE,MAAM,MAAM,wBAAwB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,wBAAwB,EAAE,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IAClC,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,KAAK,CAAC;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,wBAAwB,EAAE,CAAA;QACrC,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAChC,CAAC,CAAA;CACL,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,uBAAuB,CAAA;AAEnF,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,kBAAkB,CAAA;AAE9D,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,GAAG,kBAAkB,CAAA;AAErF,MAAM,MAAM,qBAAqB,GAC3B,SAAS,GACT,QAAQ,GACR;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAA;AAErD,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACtC,CAAA;AAED,kEAAkE;AAClE,MAAM,MAAM,2BAA2B,GAAG;IACtC,aAAa,EAAE,IAAI,CAAA;CACtB,CAAA;AAED,4EAA4E;AAC5E,MAAM,MAAM,0BAA0B,GAAG;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAChC,MAAM,GACN,CAAC,CAAC,QAAQ,EAAE,0BAA0B,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAE1E,4DAA4D;AAC5D,MAAM,MAAM,wBAAwB,GAAG;IACnC,SAAS,EAAE,wBAAwB,EAAE,CAAA;IACrC,QAAQ,EAAE,0BAA0B,CAAA;CACvC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interruptTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruptTypes.js","sourceRoot":"","sources":["../../../src/helpers/deepagent/interruptTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ import type { FilesystemPermission } from "../../imports";
2
+ /**
3
+ * Statische Filesystem-Regeln für DeepAgent (`permissions`-Prop).
4
+ *
5
+ * Das ist **kein** `interruptOn` — kein User-Dialog, keine Pause.
6
+ * Regeln gelten nur für Filesystem-Tools: `ls`, `read_file`, `write_file`,
7
+ * `edit_file`, `glob`, `grep`. Custom-Tools (z.B. `getCandidates`) sind nicht betroffen.
8
+ *
9
+ * Auswertung: Regeln in Reihenfolge, erste passende Regel gewinnt.
10
+ * Kein Match → Zugriff erlaubt (permissive default).
11
+ *
12
+ * Pfade: absolute Globs ab `/` (z.B. `/workspace/**`, `/**`).
13
+ */
14
+ /**
15
+ * Erlaubt Lesen (`read`) auf den angegebenen Pfad-Globs.
16
+ * Betrifft: `ls`, `read_file`, `glob`, `grep`.
17
+ *
18
+ * @example
19
+ * allowRead(["/candidates/**", "/workspace/**"])
20
+ */
21
+ export declare function allowRead(paths: string[]): FilesystemPermission;
22
+ /**
23
+ * Blockiert Lesen (`read`) auf den angegebenen Pfad-Globs.
24
+ * Betrifft: `ls`, `read_file`, `glob`, `grep`.
25
+ *
26
+ * @example
27
+ * denyRead(["/secrets/**", "/**"])
28
+ */
29
+ export declare function denyRead(paths: string[]): FilesystemPermission;
30
+ /**
31
+ * Erlaubt Schreiben (`write`) auf den angegebenen Pfad-Globs.
32
+ * Betrifft: `write_file`, `edit_file`.
33
+ *
34
+ * @example
35
+ * allowWrite(["/workspace/**"])
36
+ */
37
+ export declare function allowWrite(paths: string[]): FilesystemPermission;
38
+ /**
39
+ * Blockiert Schreiben (`write`) auf den angegebenen Pfad-Globs.
40
+ * Betrifft: `write_file`, `edit_file`.
41
+ *
42
+ * @example
43
+ * denyWrite(["/**"])
44
+ */
45
+ export declare function denyWrite(paths: string[]): FilesystemPermission;
46
+ /**
47
+ * Standard-Preset: lesen + schreiben nur unter `route` (default `/workspace/`),
48
+ * überall sonst lesen und schreiben verboten.
49
+ *
50
+ * Sinnvoll zusammen mit `createWorkspaceBackend()` — Agent darf nur
51
+ * im Workspace arbeiten, interne State-Pfade bleiben unberührt.
52
+ *
53
+ * @example
54
+ * permissions: workspacePermissions()
55
+ * permissions: workspacePermissions("/projects/my-app/")
56
+ */
57
+ export declare function workspacePermissions(route?: string): FilesystemPermission[];
58
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/helpers/deepagent/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzD;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAE/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAgB,GAAG,oBAAoB,EAAE,CAOlF"}