@namzu/sdk 3.0.0 → 3.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.
- package/CHANGELOG.md +223 -0
- package/dist/advisory/__tests__/consultation-context.test.d.ts +2 -0
- package/dist/advisory/__tests__/consultation-context.test.d.ts.map +1 -0
- package/dist/advisory/__tests__/consultation-context.test.js +124 -0
- package/dist/advisory/__tests__/consultation-context.test.js.map +1 -0
- package/dist/advisory/context.d.ts +25 -0
- package/dist/advisory/context.d.ts.map +1 -1
- package/dist/advisory/context.js +18 -0
- package/dist/advisory/context.js.map +1 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +25 -3
- package/dist/advisory/executor.js.map +1 -1
- package/dist/compaction/__tests__/context-reducer.test.d.ts +2 -0
- package/dist/compaction/__tests__/context-reducer.test.d.ts.map +1 -0
- package/dist/compaction/__tests__/context-reducer.test.js +197 -0
- package/dist/compaction/__tests__/context-reducer.test.js.map +1 -0
- package/dist/compaction/factory.d.ts +7 -0
- package/dist/compaction/factory.d.ts.map +1 -1
- package/dist/compaction/factory.js +7 -0
- package/dist/compaction/factory.js.map +1 -1
- package/dist/compaction/index.d.ts +2 -0
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +1 -0
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/interface.d.ts +13 -0
- package/dist/compaction/interface.d.ts.map +1 -1
- package/dist/compaction/managers/null.d.ts +3 -0
- package/dist/compaction/managers/null.d.ts.map +1 -1
- package/dist/compaction/managers/null.js +3 -0
- package/dist/compaction/managers/null.js.map +1 -1
- package/dist/compaction/managers/slidingWindow.d.ts +6 -0
- package/dist/compaction/managers/slidingWindow.d.ts.map +1 -1
- package/dist/compaction/managers/slidingWindow.js +6 -0
- package/dist/compaction/managers/slidingWindow.js.map +1 -1
- package/dist/compaction/managers/structured.d.ts +10 -0
- package/dist/compaction/managers/structured.d.ts.map +1 -1
- package/dist/compaction/managers/structured.js +10 -0
- package/dist/compaction/managers/structured.js.map +1 -1
- package/dist/compaction/reducer.d.ts +86 -0
- package/dist/compaction/reducer.d.ts.map +1 -0
- package/dist/compaction/reducer.js +77 -0
- package/dist/compaction/reducer.js.map +1 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts +2 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts.map +1 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.js +54 -0
- package/dist/connector/builtins/__tests__/oauth2-auth.test.js.map +1 -0
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +24 -2
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/http.test.js +18 -2
- package/dist/connector/builtins/http.test.js.map +1 -1
- package/dist/connector/index.d.ts +2 -2
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +1 -1
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts +2 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts.map +1 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js +214 -0
- package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js.map +1 -0
- package/dist/connector/mcp/client.d.ts +52 -1
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +86 -0
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/discovery.d.ts +12 -1
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +19 -4
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +2 -2
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +1 -1
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/server.d.ts +42 -1
- package/dist/connector/mcp/server.d.ts.map +1 -1
- package/dist/connector/mcp/server.js +77 -4
- package/dist/connector/mcp/server.js.map +1 -1
- package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts +2 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts.map +1 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.js +58 -0
- package/dist/manager/agent/__tests__/depth-limit-authority.test.js.map +1 -0
- package/dist/plugin/__tests__/discovery-scopes.test.d.ts +2 -0
- package/dist/plugin/__tests__/discovery-scopes.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/discovery-scopes.test.js +97 -0
- package/dist/plugin/__tests__/discovery-scopes.test.js.map +1 -0
- package/dist/plugin/__tests__/enable-contributions.test.js +5 -1
- package/dist/plugin/__tests__/enable-contributions.test.js.map +1 -1
- package/dist/plugin/__tests__/mcp-admission.test.d.ts +2 -0
- package/dist/plugin/__tests__/mcp-admission.test.d.ts.map +1 -0
- package/dist/plugin/__tests__/mcp-admission.test.js +192 -0
- package/dist/plugin/__tests__/mcp-admission.test.js.map +1 -0
- package/dist/plugin/lifecycle.d.ts +41 -0
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +29 -1
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +39 -3
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +37 -4
- package/dist/plugin/loader.js.map +1 -1
- package/dist/public-runtime.d.ts +5 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +11 -3
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +2 -2
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/__tests__/namespace-isolation.test.d.ts +2 -0
- package/dist/rag/__tests__/namespace-isolation.test.d.ts.map +1 -0
- package/dist/rag/__tests__/namespace-isolation.test.js +80 -0
- package/dist/rag/__tests__/namespace-isolation.test.js.map +1 -0
- package/dist/rag/ingestion.d.ts.map +1 -1
- package/dist/rag/ingestion.js +1 -0
- package/dist/rag/ingestion.js.map +1 -1
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/retriever.js +2 -0
- package/dist/rag/retriever.js.map +1 -1
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js +6 -0
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +113 -109
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/runtime/query/__tests__/capability-negotiation.test.js +59 -0
- package/dist/runtime/query/__tests__/capability-negotiation.test.js.map +1 -1
- package/dist/runtime/query/__tests__/per-step-skills.test.d.ts +10 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.js +122 -0
- package/dist/runtime/query/__tests__/per-step-skills.test.js.map +1 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.js +153 -0
- package/dist/runtime/query/__tests__/per-step-tool-choice.test.js.map +1 -0
- package/dist/runtime/query/__tests__/resume-run.test.d.ts +2 -0
- package/dist/runtime/query/__tests__/resume-run.test.d.ts.map +1 -0
- package/dist/runtime/query/__tests__/resume-run.test.js +211 -0
- package/dist/runtime/query/__tests__/resume-run.test.js.map +1 -0
- package/dist/runtime/query/executor.d.ts +1 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +10 -1
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +10 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +26 -0
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +118 -34
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js +96 -0
- package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +95 -5
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts +2 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts.map +1 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js +180 -0
- package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js.map +1 -0
- package/dist/runtime/query/iteration/phases/context.d.ts +9 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/resume-run.d.ts +70 -0
- package/dist/runtime/query/resume-run.d.ts.map +1 -0
- package/dist/runtime/query/resume-run.js +46 -0
- package/dist/runtime/query/resume-run.js.map +1 -0
- package/dist/telemetry/__tests__/model-call-span.test.d.ts +2 -0
- package/dist/telemetry/__tests__/model-call-span.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/model-call-span.test.js +147 -0
- package/dist/telemetry/__tests__/model-call-span.test.js.map +1 -0
- package/dist/telemetry/__tests__/span-closure.test.d.ts +2 -0
- package/dist/telemetry/__tests__/span-closure.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/span-closure.test.js +124 -0
- package/dist/telemetry/__tests__/span-closure.test.js.map +1 -0
- package/dist/tools/advisory/index.js +1 -1
- package/dist/tools/advisory/index.js.map +1 -1
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.d.ts +2 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.d.ts.map +1 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.js +78 -0
- package/dist/tools/builtins/__tests__/edit-commits-atomically.test.js.map +1 -0
- package/dist/tools/builtins/__tests__/edit.test.js +242 -1
- package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.d.ts +2 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.d.ts.map +1 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.js +187 -0
- package/dist/tools/builtins/__tests__/stale-file-refusal.test.js.map +1 -0
- package/dist/tools/builtins/atomic-write-file.d.ts +1 -1
- package/dist/tools/builtins/atomic-write-file.d.ts.map +1 -1
- package/dist/tools/builtins/atomic-write-file.js +31 -2
- package/dist/tools/builtins/atomic-write-file.js.map +1 -1
- package/dist/tools/builtins/content-fingerprint.d.ts +23 -0
- package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -0
- package/dist/tools/builtins/content-fingerprint.js +30 -0
- package/dist/tools/builtins/content-fingerprint.js.map +1 -0
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +172 -31
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +5 -2
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +75 -27
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js +55 -0
- package/dist/tools/coordinator/__tests__/ask-user-question.test.js.map +1 -1
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts +2 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts.map +1 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.js +126 -0
- package/dist/tools/coordinator/__tests__/plan-dependencies.test.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +75 -5
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/plan-dependencies.d.ts +43 -0
- package/dist/tools/coordinator/plan-dependencies.d.ts.map +1 -0
- package/dist/tools/coordinator/plan-dependencies.js +148 -0
- package/dist/tools/coordinator/plan-dependencies.js.map +1 -0
- package/dist/types/agent/supervisor.d.ts +15 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/connector/core.d.ts +34 -0
- package/dist/types/connector/core.d.ts.map +1 -1
- package/dist/types/connector/definition.d.ts +10 -0
- package/dist/types/connector/definition.d.ts.map +1 -1
- package/dist/types/connector/mcp.d.ts +13 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/rag/retrieval.d.ts +16 -0
- package/dist/types/rag/retrieval.d.ts.map +1 -1
- package/dist/types/rag/storage.d.ts +9 -0
- package/dist/types/rag/storage.d.ts.map +1 -1
- package/dist/types/rag/vector.d.ts +11 -0
- package/dist/types/rag/vector.d.ts.map +1 -1
- package/dist/types/router/task-router.d.ts +19 -0
- package/dist/types/router/task-router.d.ts.map +1 -1
- package/dist/types/run/prepare-step.d.ts +56 -3
- package/dist/types/run/prepare-step.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +17 -1
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/toolset/index.d.ts +22 -0
- package/dist/types/toolset/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/advisory/__tests__/consultation-context.test.ts +191 -0
- package/src/advisory/context.ts +32 -0
- package/src/advisory/executor.ts +30 -3
- package/src/compaction/__tests__/context-reducer.test.ts +239 -0
- package/src/compaction/factory.ts +7 -0
- package/src/compaction/index.ts +8 -0
- package/src/compaction/interface.ts +13 -0
- package/src/compaction/managers/null.ts +3 -0
- package/src/compaction/managers/slidingWindow.ts +6 -0
- package/src/compaction/managers/structured.ts +10 -0
- package/src/compaction/reducer.ts +154 -0
- package/src/connector/builtins/__tests__/oauth2-auth.test.ts +73 -0
- package/src/connector/builtins/http.test.ts +28 -2
- package/src/connector/builtins/http.ts +26 -2
- package/src/connector/index.ts +6 -2
- package/src/connector/mcp/__tests__/prompts-and-lifecycle.test.ts +286 -0
- package/src/connector/mcp/client.ts +95 -0
- package/src/connector/mcp/discovery.ts +19 -4
- package/src/connector/mcp/index.ts +6 -2
- package/src/connector/mcp/server.ts +101 -3
- package/src/manager/agent/__tests__/depth-limit-authority.test.ts +74 -0
- package/src/plugin/__tests__/discovery-scopes.test.ts +133 -0
- package/src/plugin/__tests__/enable-contributions.test.ts +5 -1
- package/src/plugin/__tests__/mcp-admission.test.ts +242 -0
- package/src/plugin/lifecycle.ts +57 -1
- package/src/plugin/loader.ts +57 -3
- package/src/public-runtime.ts +16 -1
- package/src/public-types.ts +5 -0
- package/src/rag/__tests__/namespace-isolation.test.ts +109 -0
- package/src/rag/ingestion.ts +1 -0
- package/src/rag/retriever.ts +2 -0
- package/src/rag/vector-store.ts +5 -0
- package/src/registry/tool/execute.ts +123 -119
- package/src/runtime/query/__tests__/capability-negotiation.test.ts +69 -0
- package/src/runtime/query/__tests__/per-step-skills.test.ts +154 -0
- package/src/runtime/query/__tests__/per-step-tool-choice.test.ts +180 -0
- package/src/runtime/query/__tests__/resume-run.test.ts +262 -0
- package/src/runtime/query/executor.ts +9 -1
- package/src/runtime/query/index.ts +39 -0
- package/src/runtime/query/iteration/index.ts +130 -34
- package/src/runtime/query/iteration/phases/compaction-model-routing.test.ts +125 -0
- package/src/runtime/query/iteration/phases/compaction.ts +106 -5
- package/src/runtime/query/iteration/phases/context-reducer-dispatch.test.ts +238 -0
- package/src/runtime/query/iteration/phases/context.ts +11 -0
- package/src/runtime/query/resume-run.ts +93 -0
- package/src/telemetry/__tests__/model-call-span.test.ts +189 -0
- package/src/telemetry/__tests__/span-closure.test.ts +153 -0
- package/src/tools/advisory/index.ts +1 -1
- package/src/tools/builtins/__tests__/edit-commits-atomically.test.ts +103 -0
- package/src/tools/builtins/__tests__/edit.test.ts +324 -1
- package/src/tools/builtins/__tests__/stale-file-refusal.test.ts +258 -0
- package/src/tools/builtins/atomic-write-file.ts +30 -2
- package/src/tools/builtins/content-fingerprint.ts +33 -0
- package/src/tools/builtins/edit.ts +188 -36
- package/src/tools/builtins/read-file.ts +5 -2
- package/src/tools/builtins/write-file.ts +79 -28
- package/src/tools/coordinator/__tests__/ask-user-question.test.ts +68 -0
- package/src/tools/coordinator/__tests__/plan-dependencies.test.ts +186 -0
- package/src/tools/coordinator/index.ts +116 -42
- package/src/tools/coordinator/plan-dependencies.ts +175 -0
- package/src/types/agent/supervisor.ts +15 -0
- package/src/types/connector/core.ts +34 -0
- package/src/types/connector/definition.ts +10 -0
- package/src/types/connector/mcp.ts +14 -0
- package/src/types/rag/retrieval.ts +16 -0
- package/src/types/rag/storage.ts +9 -0
- package/src/types/rag/vector.ts +11 -0
- package/src/types/router/task-router.ts +19 -0
- package/src/types/run/prepare-step.ts +58 -3
- package/src/types/tool/index.ts +17 -1
- package/src/types/toolset/index.ts +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depth-limit-authority.test.js","sourceRoot":"","sources":["../../../../src/manager/agent/__tests__/depth-limit-authority.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAIjD;;;;;;;;;;;;;GAaG;AAEH,KAAK,UAAU,OAAO,CAAC,QAAgB;IACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC5E,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;IAC3D,OAAO,IAAI,YAAY,CAAC,QAAiB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAa,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACpC,OAAO;QACN,WAAW,EAAE,OAAO;QACpB,aAAa,EAAE,SAAS;QACxB,qBAAqB,EAAE,IAAI,eAAe,EAAE;QAC5C,KAAK;QACL,QAAQ,EAAE,OAAO;KACc,CAAA;AACjC,CAAC;AAED,SAAS,IAAI,CAAC,CAAsC,EAAE,KAAa;IAClE,OAAO,CAAC,CAAC,WAAW,CACnB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAW,EAC1D,cAAc,CAAC,KAAK,CAAC,CACrB,CAAA;AACF,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,sEAAsE;QACtE,uDAAuD;QACvD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;QAE5B,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;QAE5B,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;QAE5B,oEAAoE;QACpE,yCAAyC;QACzC,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;QAE5B,6DAA6D;QAC7D,2DAA2D;QAC3D,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-scopes.test.d.ts","sourceRoot":"","sources":["../../../src/plugin/__tests__/discovery-scopes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
import { PluginRuntimeConfigSchema } from '../../config/runtime.js';
|
|
6
|
+
import { PLUGIN_MANIFEST_FILENAME, PROJECT_PLUGIN_DIR, USER_PLUGIN_DIR, } from '../../constants/plugin/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* `allowedScopes` read exactly like a trust boundary and enforced nothing.
|
|
9
|
+
*
|
|
10
|
+
* A plugin is arbitrary code with hooks into tool execution, and the two
|
|
11
|
+
* scopes are not equally trusted: a project plugin is reviewable in the repo
|
|
12
|
+
* the agent works on, a user plugin comes from a home directory the repo's
|
|
13
|
+
* reviewers never see. `PluginRuntimeConfig` carried `enabled`,
|
|
14
|
+
* `autoDiscovery` and `allowedScopes`; nothing anywhere consulted any of the
|
|
15
|
+
* three, and discovery scanned both locations unconditionally.
|
|
16
|
+
*/
|
|
17
|
+
let home;
|
|
18
|
+
let workdir;
|
|
19
|
+
vi.mock('node:os', async () => {
|
|
20
|
+
const actual = await vi.importActual('node:os');
|
|
21
|
+
return { ...actual, homedir: () => home };
|
|
22
|
+
});
|
|
23
|
+
async function plantPlugin(dir, name) {
|
|
24
|
+
const pluginDir = join(dir, name);
|
|
25
|
+
await mkdir(pluginDir, { recursive: true });
|
|
26
|
+
await writeFile(join(pluginDir, PLUGIN_MANIFEST_FILENAME), JSON.stringify({ name, version: '1.0.0' }), 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
beforeEach(async () => {
|
|
29
|
+
home = await mkdtemp(join(tmpdir(), 'namzu-home-'));
|
|
30
|
+
workdir = await mkdtemp(join(tmpdir(), 'namzu-work-'));
|
|
31
|
+
await plantPlugin(join(workdir, PROJECT_PLUGIN_DIR), 'project-plugin');
|
|
32
|
+
await plantPlugin(join(home, USER_PLUGIN_DIR), 'user-plugin');
|
|
33
|
+
});
|
|
34
|
+
afterEach(async () => {
|
|
35
|
+
await Promise.all([
|
|
36
|
+
rm(home, { recursive: true, force: true }),
|
|
37
|
+
rm(workdir, { recursive: true, force: true }),
|
|
38
|
+
]);
|
|
39
|
+
});
|
|
40
|
+
async function discover(options) {
|
|
41
|
+
const { discoverAllPluginDirs } = await import('../loader.js');
|
|
42
|
+
return discoverAllPluginDirs(workdir, options);
|
|
43
|
+
}
|
|
44
|
+
describe('a scope the host did not allow is not scanned', () => {
|
|
45
|
+
it('finds both when nothing is said', async () => {
|
|
46
|
+
const found = await discover();
|
|
47
|
+
expect(found.project).toHaveLength(1);
|
|
48
|
+
expect(found.user).toHaveLength(1);
|
|
49
|
+
});
|
|
50
|
+
it('keeps user plugins out when only project is allowed', async () => {
|
|
51
|
+
const found = await discover({ allowedScopes: ['project'] });
|
|
52
|
+
expect(found.project).toHaveLength(1);
|
|
53
|
+
// The setting that reads like a boundary now is one.
|
|
54
|
+
expect(found.user).toEqual([]);
|
|
55
|
+
});
|
|
56
|
+
it('keeps project plugins out when only user is allowed', async () => {
|
|
57
|
+
const found = await discover({ allowedScopes: ['user'] });
|
|
58
|
+
expect(found.project).toEqual([]);
|
|
59
|
+
expect(found.user).toHaveLength(1);
|
|
60
|
+
});
|
|
61
|
+
it('finds nothing when neither scope is allowed', async () => {
|
|
62
|
+
const found = await discover({ allowedScopes: [] });
|
|
63
|
+
expect(found).toEqual({ project: [], user: [] });
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('the runtime switches turn discovery off', () => {
|
|
67
|
+
it('discovers nothing when the plugin runtime is disabled', async () => {
|
|
68
|
+
const found = await discover({ enabled: false });
|
|
69
|
+
expect(found).toEqual({ project: [], user: [] });
|
|
70
|
+
});
|
|
71
|
+
it('discovers nothing when auto-discovery is off', async () => {
|
|
72
|
+
const found = await discover({ autoDiscovery: false });
|
|
73
|
+
expect(found).toEqual({ project: [], user: [] });
|
|
74
|
+
});
|
|
75
|
+
it('a default-parsed config discovers nothing, because the runtime ships off', async () => {
|
|
76
|
+
// `enabled` defaults to false in the schema. A host who parses the
|
|
77
|
+
// config and passes it gets the documented default rather than a
|
|
78
|
+
// silently-on plugin runtime.
|
|
79
|
+
const found = await discover(PluginRuntimeConfigSchema.parse({}));
|
|
80
|
+
expect(found).toEqual({ project: [], user: [] });
|
|
81
|
+
});
|
|
82
|
+
it('an enabled default-parsed config finds both scopes', async () => {
|
|
83
|
+
const found = await discover(PluginRuntimeConfigSchema.parse({ enabled: true }));
|
|
84
|
+
expect(found.project).toHaveLength(1);
|
|
85
|
+
expect(found.user).toHaveLength(1);
|
|
86
|
+
});
|
|
87
|
+
it('a parsed config carries its scope restriction through', async () => {
|
|
88
|
+
const config = PluginRuntimeConfigSchema.parse({
|
|
89
|
+
enabled: true,
|
|
90
|
+
allowedScopes: ['project'],
|
|
91
|
+
});
|
|
92
|
+
const found = await discover(config);
|
|
93
|
+
expect(found.project).toHaveLength(1);
|
|
94
|
+
expect(found.user).toEqual([]);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=discovery-scopes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-scopes.test.js","sourceRoot":"","sources":["../../../src/plugin/__tests__/discovery-scopes.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,15 @@ const mockConnect = vi.fn(async () => undefined);
|
|
|
4
4
|
const mockDisconnect = vi.fn(async () => undefined);
|
|
5
5
|
const mockListTools = vi.fn(async () => []);
|
|
6
6
|
vi.mock('../../connector/mcp/client.js', () => ({
|
|
7
|
-
MCPClient: vi.fn().mockImplementation(() => ({
|
|
7
|
+
MCPClient: vi.fn().mockImplementation((config) => ({
|
|
8
8
|
id: 'mcp-client-mock',
|
|
9
9
|
connect: mockConnect,
|
|
10
10
|
disconnect: mockDisconnect,
|
|
11
11
|
listTools: mockListTools,
|
|
12
|
+
// The real client has always had this; the mock did not, which went
|
|
13
|
+
// unnoticed while nothing on this path asked the client which server
|
|
14
|
+
// it was talking to. Admission does — a policy is per server name.
|
|
15
|
+
getState: () => ({ serverName: config.serverName }),
|
|
12
16
|
})),
|
|
13
17
|
}));
|
|
14
18
|
vi.mock('../../connector/mcp/adapter.js', () => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable-contributions.test.js","sourceRoot":"","sources":["../../../src/plugin/__tests__/enable-contributions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAM7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAsB,EAAE,CAAC,SAAS,CAAC,CAAA;AAClE,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAmB,EAAE,CAAC,SAAS,CAAC,CAAA;AAClE,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAwB,EAAE,CAAC,EAAE,CAAC,CAAA;AAE/D,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"enable-contributions.test.js","sourceRoot":"","sources":["../../../src/plugin/__tests__/enable-contributions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-admission.test.d.ts","sourceRoot":"","sources":["../../../src/plugin/__tests__/mcp-admission.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
/**
|
|
6
|
+
* A plugin's MCP server decided what entered the agent's tool registry.
|
|
7
|
+
*
|
|
8
|
+
* `MCPToolDiscovery` has held the admission boundary — a per-server
|
|
9
|
+
* allow/deny policy, and detection for a server whose tool set changes
|
|
10
|
+
* between discoveries — since it was written, and nothing outside its own
|
|
11
|
+
* tests ever constructed one. `PluginLifecycleManager.attachMCPServer`, the
|
|
12
|
+
* only code in the tree that connects a real MCP server, called
|
|
13
|
+
* `client.listTools()` and registered whatever came back.
|
|
14
|
+
*
|
|
15
|
+
* So least privilege was inverted at the one place it mattered: the remote
|
|
16
|
+
* side chose. Tools land as `deferred` and a run's `allowedTools` filters the
|
|
17
|
+
* model-visible catalogue, so this was not "arbitrary tools reach the model
|
|
18
|
+
* immediately" — but the check written for exactly this was not on the path.
|
|
19
|
+
*/
|
|
20
|
+
let advertised = [];
|
|
21
|
+
let clientCount = 0;
|
|
22
|
+
vi.mock('../../connector/mcp/client.js', () => ({
|
|
23
|
+
MCPClient: class {
|
|
24
|
+
id;
|
|
25
|
+
serverName;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.id = `client_${clientCount++}`;
|
|
28
|
+
this.serverName = config.serverName;
|
|
29
|
+
}
|
|
30
|
+
async connect() { }
|
|
31
|
+
async disconnect() { }
|
|
32
|
+
isConnected() {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
getState() {
|
|
36
|
+
return { serverName: this.serverName };
|
|
37
|
+
}
|
|
38
|
+
async listTools() {
|
|
39
|
+
return advertised;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
}));
|
|
43
|
+
function tool(name) {
|
|
44
|
+
return { name, description: name, inputSchema: { type: 'object', properties: {} } };
|
|
45
|
+
}
|
|
46
|
+
const log = {
|
|
47
|
+
debug: vi.fn(),
|
|
48
|
+
info: vi.fn(),
|
|
49
|
+
warn: vi.fn(),
|
|
50
|
+
error: vi.fn(),
|
|
51
|
+
child: () => log,
|
|
52
|
+
};
|
|
53
|
+
let root;
|
|
54
|
+
async function harness(config = {}) {
|
|
55
|
+
const { PluginLifecycleManager } = await import('../lifecycle.js');
|
|
56
|
+
const { PluginRegistry } = await import('../../registry/plugin/index.js');
|
|
57
|
+
const registered = [];
|
|
58
|
+
const toolRegistry = {
|
|
59
|
+
register: (definition) => registered.push(definition.name),
|
|
60
|
+
unregister: () => undefined,
|
|
61
|
+
get: () => undefined,
|
|
62
|
+
};
|
|
63
|
+
const manager = new PluginLifecycleManager({
|
|
64
|
+
pluginRegistry: new PluginRegistry(),
|
|
65
|
+
toolRegistry,
|
|
66
|
+
log,
|
|
67
|
+
...config,
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
registered,
|
|
71
|
+
manager,
|
|
72
|
+
enable: async (name) => {
|
|
73
|
+
const dir = join(root, name);
|
|
74
|
+
await mkdir(dir, { recursive: true });
|
|
75
|
+
await writeFile(join(dir, 'plugin.json'), JSON.stringify({
|
|
76
|
+
name,
|
|
77
|
+
version: '1.0.0',
|
|
78
|
+
description: 'MCP server plugin fixture',
|
|
79
|
+
mcpServers: [{ name: 'files', command: 'node', args: ['server.js'] }],
|
|
80
|
+
}), 'utf-8');
|
|
81
|
+
const plugin = await manager.install(dir, 'project');
|
|
82
|
+
await manager.enable(plugin.id);
|
|
83
|
+
return plugin.id;
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
beforeEach(async () => {
|
|
88
|
+
root = await mkdtemp(join(tmpdir(), 'namzu-mcp-admit-'));
|
|
89
|
+
clientCount = 0;
|
|
90
|
+
advertised = [tool('read_file'), tool('write_file'), tool('delete_everything')];
|
|
91
|
+
});
|
|
92
|
+
afterEach(async () => {
|
|
93
|
+
await rm(root, { recursive: true, force: true });
|
|
94
|
+
vi.clearAllMocks();
|
|
95
|
+
});
|
|
96
|
+
describe('what a plugin server advertises is not what the registry gets', () => {
|
|
97
|
+
it('admits only the tools an allowlist names', async () => {
|
|
98
|
+
const h = await harness({ mcpToolPolicies: { files: { allow: ['read_file', 'write_file'] } } });
|
|
99
|
+
await h.enable('srv');
|
|
100
|
+
expect(h.registered.some((n) => n.endsWith('read_file'))).toBe(true);
|
|
101
|
+
expect(h.registered.some((n) => n.endsWith('write_file'))).toBe(true);
|
|
102
|
+
// The one the server offered and the host never agreed to.
|
|
103
|
+
expect(h.registered.some((n) => n.endsWith('delete_everything'))).toBe(false);
|
|
104
|
+
});
|
|
105
|
+
it('refuses a denied tool through the wildcard policy', async () => {
|
|
106
|
+
const h = await harness({ mcpToolPolicies: { '*': { deny: ['delete_everything'] } } });
|
|
107
|
+
await h.enable('srv');
|
|
108
|
+
expect(h.registered).toHaveLength(2);
|
|
109
|
+
expect(h.registered.some((n) => n.endsWith('delete_everything'))).toBe(false);
|
|
110
|
+
});
|
|
111
|
+
it('still admits everything when no policy is configured', async () => {
|
|
112
|
+
// Adding a boundary must not turn every existing host's working plugin
|
|
113
|
+
// into a broken one.
|
|
114
|
+
const h = await harness();
|
|
115
|
+
await h.enable('srv');
|
|
116
|
+
expect(h.registered).toHaveLength(3);
|
|
117
|
+
});
|
|
118
|
+
it('namespaces what it admits, exactly as before', async () => {
|
|
119
|
+
const h = await harness({ mcpToolPolicies: { files: { allow: ['read_file'] } } });
|
|
120
|
+
await h.enable('srv');
|
|
121
|
+
expect(h.registered[0]).toContain('mcp__files__read_file');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('a server that changes its tools between connections is reported', () => {
|
|
125
|
+
it('says nothing the first time, having nothing to compare against', async () => {
|
|
126
|
+
const onMCPToolDrift = vi.fn();
|
|
127
|
+
const h = await harness({ onMCPToolDrift });
|
|
128
|
+
await h.enable('srv');
|
|
129
|
+
expect(onMCPToolDrift).not.toHaveBeenCalled();
|
|
130
|
+
});
|
|
131
|
+
it('reports a tool the server grew after it was first approved', async () => {
|
|
132
|
+
const onMCPToolDrift = vi.fn();
|
|
133
|
+
const h = await harness({ onMCPToolDrift });
|
|
134
|
+
const first = await h.enable('srv-a');
|
|
135
|
+
// The rug pull: advertise something benign while a host is deciding,
|
|
136
|
+
// swap it afterwards. A NEW client connects to the SAME server, which
|
|
137
|
+
// is why the remembered set is keyed by server name — keyed by client
|
|
138
|
+
// id, as it was, every connection was its own first and this could
|
|
139
|
+
// never fire.
|
|
140
|
+
await h.manager.disable(first);
|
|
141
|
+
advertised = [...advertised, tool('exfiltrate')];
|
|
142
|
+
await h.enable('srv-b');
|
|
143
|
+
expect(onMCPToolDrift).toHaveBeenCalledTimes(1);
|
|
144
|
+
expect(onMCPToolDrift.mock.calls[0]?.[0]).toMatchObject({
|
|
145
|
+
serverName: 'files',
|
|
146
|
+
drift: { added: ['exfiltrate'] },
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
it('reports a tool whose shape changed under the same name', async () => {
|
|
150
|
+
const onMCPToolDrift = vi.fn();
|
|
151
|
+
const h = await harness({ onMCPToolDrift });
|
|
152
|
+
const first = await h.enable('srv-a');
|
|
153
|
+
await h.manager.disable(first);
|
|
154
|
+
// Same name, different input shape — the version a name-only check
|
|
155
|
+
// misses entirely.
|
|
156
|
+
advertised = [
|
|
157
|
+
{
|
|
158
|
+
name: 'read_file',
|
|
159
|
+
description: 'read a file',
|
|
160
|
+
inputSchema: { type: 'object', properties: { path: { type: 'string' } } },
|
|
161
|
+
},
|
|
162
|
+
tool('write_file'),
|
|
163
|
+
tool('delete_everything'),
|
|
164
|
+
];
|
|
165
|
+
await h.enable('srv-b');
|
|
166
|
+
expect(onMCPToolDrift).toHaveBeenCalledTimes(1);
|
|
167
|
+
expect(onMCPToolDrift.mock.calls[0]?.[0]).toMatchObject({ drift: { changed: ['read_file'] } });
|
|
168
|
+
});
|
|
169
|
+
it('says nothing when the server offers exactly what it offered before', async () => {
|
|
170
|
+
const onMCPToolDrift = vi.fn();
|
|
171
|
+
const h = await harness({ onMCPToolDrift });
|
|
172
|
+
const first = await h.enable('srv-a');
|
|
173
|
+
await h.manager.disable(first);
|
|
174
|
+
await h.enable('srv-b');
|
|
175
|
+
expect(onMCPToolDrift).not.toHaveBeenCalled();
|
|
176
|
+
});
|
|
177
|
+
it('compares what was ADMITTED, not what was advertised', async () => {
|
|
178
|
+
const onMCPToolDrift = vi.fn();
|
|
179
|
+
const h = await harness({
|
|
180
|
+
mcpToolPolicies: { files: { allow: ['read_file'] } },
|
|
181
|
+
onMCPToolDrift,
|
|
182
|
+
});
|
|
183
|
+
const first = await h.enable('srv-a');
|
|
184
|
+
await h.manager.disable(first);
|
|
185
|
+
// A tool the policy refuses either way. Reporting drift for it would
|
|
186
|
+
// train a host to ignore the warning that matters.
|
|
187
|
+
advertised = [...advertised, tool('another_denied_one')];
|
|
188
|
+
await h.enable('srv-b');
|
|
189
|
+
expect(onMCPToolDrift).not.toHaveBeenCalled();
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=mcp-admission.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-admission.test.js","sourceRoot":"","sources":["../../../src/plugin/__tests__/mcp-admission.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { MCPToolDiscoveryOptions } from '../connector/mcp/discovery.js';
|
|
2
|
+
import type { MCPToolPolicy } from '../connector/mcp/policy.js';
|
|
1
3
|
import type { PluginRegistry } from '../registry/plugin/index.js';
|
|
2
4
|
import type { PluginId } from '../types/ids/index.js';
|
|
3
5
|
import type { PluginDefinition, PluginEventListener, PluginHookContext, PluginHookDefinition, PluginHookEvent, PluginHookResult, PluginScope } from '../types/plugin/index.js';
|
|
@@ -9,6 +11,30 @@ export interface PluginLifecycleManagerConfig {
|
|
|
9
11
|
toolRegistry: ToolRegistryContract;
|
|
10
12
|
log: Logger;
|
|
11
13
|
hookTimeoutMs?: number;
|
|
14
|
+
/**
|
|
15
|
+
* What each MCP server a plugin brings is allowed to contribute, keyed by
|
|
16
|
+
* server name. `'*'` covers every server not named explicitly.
|
|
17
|
+
*
|
|
18
|
+
* Absent admits everything, which is what this path did unconditionally
|
|
19
|
+
* until now. `MCPToolDiscovery` has held this boundary — and the drift
|
|
20
|
+
* detection below — since it was written, and nothing outside its own
|
|
21
|
+
* tests ever constructed one: `attachMCPServer` called `listTools()`
|
|
22
|
+
* directly and registered whatever came back. So the least-privilege
|
|
23
|
+
* check existed, was tested, was exported, and was not on the path any
|
|
24
|
+
* real MCP server takes.
|
|
25
|
+
*/
|
|
26
|
+
mcpToolPolicies?: Readonly<Record<string, MCPToolPolicy>>;
|
|
27
|
+
/**
|
|
28
|
+
* Called when a server's admitted tool set differs from the last time it
|
|
29
|
+
* was discovered.
|
|
30
|
+
*
|
|
31
|
+
* Reported rather than blocked, for the reason `MCPToolDiscovery`
|
|
32
|
+
* already gives: a development server legitimately changes between runs,
|
|
33
|
+
* while a production one changing mid-session is the rug pull — advertise
|
|
34
|
+
* something benign at approval time, swap it afterwards. Only the host
|
|
35
|
+
* knows which it is looking at.
|
|
36
|
+
*/
|
|
37
|
+
onMCPToolDrift?: MCPToolDiscoveryOptions['onDrift'];
|
|
12
38
|
}
|
|
13
39
|
export declare class PluginLifecycleManager {
|
|
14
40
|
private pluginRegistry;
|
|
@@ -18,6 +44,21 @@ export declare class PluginLifecycleManager {
|
|
|
18
44
|
private pluginContributions;
|
|
19
45
|
private hookTimeoutMs;
|
|
20
46
|
private log;
|
|
47
|
+
/**
|
|
48
|
+
* The admission boundary for everything a plugin's MCP servers advertise.
|
|
49
|
+
*
|
|
50
|
+
* One instance for the whole manager rather than one per plugin, and that
|
|
51
|
+
* is the part that matters: the instance is what remembers each server's
|
|
52
|
+
* previously admitted tool set, so a server that changes between one
|
|
53
|
+
* plugin being disabled and the next being enabled is still noticed. A
|
|
54
|
+
* per-plugin instance would forget on every teardown, which is precisely
|
|
55
|
+
* the window a rug pull uses.
|
|
56
|
+
*
|
|
57
|
+
* Its client list is deliberately left empty — `discoverFrom` takes the
|
|
58
|
+
* client directly, so registering it here would be bookkeeping nothing
|
|
59
|
+
* reads.
|
|
60
|
+
*/
|
|
61
|
+
private mcpDiscovery;
|
|
21
62
|
constructor(config: PluginLifecycleManagerConfig);
|
|
22
63
|
/**
|
|
23
64
|
* Attach a hook without installing a plugin from disk.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAM/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EACX,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAGhB,WAAW,EACX,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAQhD,MAAM,WAAW,4BAA4B;IAC5C,cAAc,EAAE,cAAc,CAAA;IAC9B,YAAY,EAAE,oBAAoB,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAEzD;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAA;CACnD;AAED,qBAAa,sBAAsB;IAClC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAQP;IACb,OAAO,CAAC,mBAAmB,CAAqD;IAChF,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,GAAG,CAAQ;IACnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY,CAAkB;gBAE1B,MAAM,EAAE,4BAA4B;IAYhD;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAgBlE,EAAE,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIvC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKlC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCzE,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAsGjC,eAAe;YAsCf,qBAAqB;IAkC7B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D1C,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5C,YAAY,CACjB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,EACtD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqH9B,OAAO,CAAC,IAAI;CAWZ"}
|
package/dist/plugin/lifecycle.js
CHANGED
|
@@ -2,6 +2,7 @@ import { join } from 'node:path';
|
|
|
2
2
|
import { pathToFileURL } from 'node:url';
|
|
3
3
|
import { mcpToolToToolDefinition } from '../connector/mcp/adapter.js';
|
|
4
4
|
import { MCPClient } from '../connector/mcp/client.js';
|
|
5
|
+
import { MCPToolDiscovery } from '../connector/mcp/discovery.js';
|
|
5
6
|
import { DEFAULT_HOOK_PRIORITY, HOOK_TIMEOUT_MS, PLUGIN_NAMESPACE_SEPARATOR, } from '../constants/plugin/index.js';
|
|
6
7
|
import { toErrorMessage } from '../utils/error.js';
|
|
7
8
|
import { generatePluginId } from '../utils/id.js';
|
|
@@ -14,11 +15,31 @@ export class PluginLifecycleManager {
|
|
|
14
15
|
pluginContributions = new Map();
|
|
15
16
|
hookTimeoutMs;
|
|
16
17
|
log;
|
|
18
|
+
/**
|
|
19
|
+
* The admission boundary for everything a plugin's MCP servers advertise.
|
|
20
|
+
*
|
|
21
|
+
* One instance for the whole manager rather than one per plugin, and that
|
|
22
|
+
* is the part that matters: the instance is what remembers each server's
|
|
23
|
+
* previously admitted tool set, so a server that changes between one
|
|
24
|
+
* plugin being disabled and the next being enabled is still noticed. A
|
|
25
|
+
* per-plugin instance would forget on every teardown, which is precisely
|
|
26
|
+
* the window a rug pull uses.
|
|
27
|
+
*
|
|
28
|
+
* Its client list is deliberately left empty — `discoverFrom` takes the
|
|
29
|
+
* client directly, so registering it here would be bookkeeping nothing
|
|
30
|
+
* reads.
|
|
31
|
+
*/
|
|
32
|
+
mcpDiscovery;
|
|
17
33
|
constructor(config) {
|
|
18
34
|
this.pluginRegistry = config.pluginRegistry;
|
|
19
35
|
this.toolRegistry = config.toolRegistry;
|
|
20
36
|
this.hookTimeoutMs = config.hookTimeoutMs ?? HOOK_TIMEOUT_MS;
|
|
21
37
|
this.log = config.log.child({ component: 'PluginLifecycleManager' });
|
|
38
|
+
this.mcpDiscovery = new MCPToolDiscovery([], {
|
|
39
|
+
...(config.mcpToolPolicies ? { policies: config.mcpToolPolicies } : {}),
|
|
40
|
+
...(config.onMCPToolDrift ? { onDrift: config.onMCPToolDrift } : {}),
|
|
41
|
+
logger: this.log,
|
|
42
|
+
});
|
|
22
43
|
}
|
|
23
44
|
/**
|
|
24
45
|
* Attach a hook without installing a plugin from disk.
|
|
@@ -179,7 +200,14 @@ export class PluginLifecycleManager {
|
|
|
179
200
|
});
|
|
180
201
|
await client.connect();
|
|
181
202
|
contributions.mcpClients.push(client);
|
|
182
|
-
|
|
203
|
+
// Through the boundary, not around it. This used to call
|
|
204
|
+
// `client.listTools()` and register everything the server answered
|
|
205
|
+
// with, so the remote side decided what entered the agent's registry
|
|
206
|
+
// — least privilege inverted. `discoverFrom` applies the per-server
|
|
207
|
+
// allow/deny policy and reports a tool set that changed since the
|
|
208
|
+
// last discovery.
|
|
209
|
+
const discovered = await this.mcpDiscovery.discoverFrom(client);
|
|
210
|
+
const mcpTools = discovered.map((d) => d.tool);
|
|
183
211
|
for (const mcpTool of mcpTools) {
|
|
184
212
|
const baseDef = mcpToolToToolDefinition(mcpTool, client, config.name);
|
|
185
213
|
// Double-underscore between serverName and toolName so that e.g.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACtD,OAAO,EACN,qBAAqB,EACrB,eAAe,EACf,0BAA0B,GAC1B,MAAM,8BAA8B,CAAA;AAgBrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAclE,MAAM,OAAO,sBAAsB;IAC1B,cAAc,CAAgB;IAC9B,YAAY,CAAsB;IAClC,SAAS,GAA0B,EAAE,CAAA;IACrC,YAAY,GAQhB,IAAI,GAAG,EAAE,CAAA;IACL,mBAAmB,GAA4C,IAAI,GAAG,EAAE,CAAA;IACxE,aAAa,CAAQ;IACrB,GAAG,CAAQ;IAEnB,YAAY,MAAoC;QAC/C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,eAAe,CAAA;QAC5D,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAA;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,QAAkB,EAAE,IAA0B;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QACxD,QAAQ,CAAC,IAAI,CAAC;YACb,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,qBAAqB;YAChD,+DAA+D;YAC/D,qCAAqC;YACrC,GAAG,EAAE,QAAQ,CAAC,MAAM;SACpB,CAAC,CAAA;QACF,kEAAkE;QAClE,qEAAqE;QACrE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,EAAE,CAAC,QAA6B;QAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,QAA6B;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,KAAkB;QAClD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,CAAC,IAAI,+BAA+B,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAA;QACvF,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;QACnC,MAAM,UAAU,GAAqB;YACpC,EAAE,EAAE,QAAQ;YACZ,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAA;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAExC,IAAI,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,kBAAkB;YACxB,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK;SACL,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,EAAE;YACnD,QAAQ;YACR,KAAK;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;SACzB,CAAC,CAAA;QAEF,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAkB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACd,yBAAyB,MAAM,CAAC,QAAQ,CAAC,IAAI,iBAAiB,MAAM,CAAC,MAAM,wCAAwC,CACnH,CAAA;QACF,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;QAE3B,mEAAmE;QACnE,gEAAgE;QAChE,+DAA+D;QAC/D,kEAAkE;QAClE,2DAA2D;QAC3D,kEAAkE;QAClE,mDAAmD;QACnD,IAAI,CAAC;YACJ,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YAC5D,MAAM,GAAG,CAAA;QACV,CAAC;QAED,MAAM,aAAa,GAA6B,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;QAEjF,IAAI,CAAC;YACJ,aAAa;YACb,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBACnD,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAA;oBAChD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAiC,CAAA;oBAEnE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7C,MAAM,IAAI,KAAK,CACd,WAAW,QAAQ,CAAC,IAAI,mBAAmB,QAAQ,+BAA+B,CAClF,CAAA;oBACF,CAAC;oBAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;wBAC9B,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,GAAG,0BAA0B,GAAG,IAAI,CAAC,IAAI,CAAA;wBAC7E,MAAM,cAAc,GAAmB,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;wBACxE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;wBACtD,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;oBAC7C,CAAC;gBACF,CAAC;YACF,CAAC;YAED,aAAa;YACb,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBACnD,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAA;oBAChD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAuC,CAAA;oBAEzE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7C,MAAM,IAAI,KAAK,CACd,WAAW,QAAQ,CAAC,IAAI,mBAAmB,QAAQ,+BAA+B,CAClF,CAAA;oBACF,CAAC;oBAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;wBAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAClC,CAAC;gBACF,CAAC;YACF,CAAC;YAED,0CAA0C;YAC1C,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;gBACvE,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;YACzD,MAAM,GAAG,CAAA;QACV,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAErD,MAAM,OAAO,GAAqB;YACjC,GAAG,MAAM;YACT,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAA;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAErC,IAAI,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ;YACR,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;YACzC,cAAc,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM;SAC/C,CAAC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAC5B,UAAkB,EAClB,MAA6B,EAC7B,aAAuC;QAEvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YAC5B,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,SAAS,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChD,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;aAC/C;SACD,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACtB,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAErC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACrE,iEAAiE;YACjE,sEAAsE;YACtE,gCAAgC;YAChC,MAAM,cAAc,GAAG,GAAG,UAAU,GAAG,0BAA0B,QAAQ,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAA;YACvG,MAAM,cAAc,GAAmB,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;YAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;YACtD,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7C,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAClC,QAAkB,EAClB,aAAuC;QAEvC,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE;oBACjD,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC;iBAC/B,CAAC,CAAA;YACH,CAAC;QACF,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;YAC1B,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE;oBAChD,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;iBAC9B,CAAC,CAAA;YACH,CAAC;QACF,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;YAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvC,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACd,0BAA0B,MAAM,CAAC,QAAQ,CAAC,IAAI,iBAAiB,MAAM,CAAC,MAAM,wBAAwB,CACpG,CAAA;QACF,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;YAC/D,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE;SACd,CAAA;QAED,iFAAiF;QACjF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE;oBAC5D,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;iBAC1B,CAAC,CAAA;YACH,CAAC;QACF,CAAC;QAED,kEAAkE;QAClE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;QAED,uCAAuC;QACvC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;YAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEzC,4BAA4B;QAC5B,MAAM,QAAQ,GAAqB;YAClC,GAAG,MAAM;YACT,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,SAAS;SACpB,CAAA;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAEtC,IAAI,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,iBAAiB;YACvB,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAkB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAExC,IAAI,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,oBAAoB;YAC1B,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CACjB,KAAsB,EACtB,OAAsD,EACtD,YAAiD;QAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAA;QACV,CAAC;QAED,MAAM,OAAO,GAAuB,EAAE,CAAA;QAEtC,+EAA+E;QAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAExC,qFAAqF;QACrF,MAAM,gBAAgB,GAAa,EAAE,CAAA;QACrC,IAAI,MAAM,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACzB,CAAC;QACF,CAAC;QAED,2EAA2E;QAC3E,8DAA8D;QAC9D,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAA;QAExC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,CAAC,SAAS;gBAAE,SAAQ;YACxB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAAA;YAClD,MAAM,WAAW,GAAsB;gBACtC,GAAG,OAAO;gBACV,SAAS,EAAE,gBAAgB;gBAC3B,QAAQ;gBACR,KAAK;aACL,CAAA;YAED,IAAI,YAAY,EAAE,CAAC;gBAClB,MAAM,YAAY,CAAC;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ;oBACR,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAA;YACH,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YAC/B,IAAI,MAAwB,CAAA;YAE5B,2DAA2D;YAC3D,+DAA+D;YAC/D,6DAA6D;YAC7D,gEAAgE;YAChE,+DAA+D;YAC/D,iEAAiE;YACjE,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;YACtC,IAAI,KAAgD,CAAA;YAEpD,IAAI,CAAC;gBACJ,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC3B,SAAS,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtD,IAAI,OAAO,CAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;wBAC3C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;4BACvB,oDAAoD;4BACpD,qBAAqB;4BACrB,QAAQ,CAAC,KAAK,EAAE,CAAA;4BAChB,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAA;wBAClC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;oBACvB,CAAC,CAAC;iBACF,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;gBACnC,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;YACtC,CAAC;oBAAS,CAAC;gBACV,IAAI,KAAK,KAAK,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC7C,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;YAExD,IAAI,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ;gBACR,SAAS,EAAE,KAAK;gBAChB,UAAU;aACV,CAAC,CAAA;YAEF,IAAI,YAAY,EAAE,CAAC;gBAClB,MAAM,YAAY,CAAC;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ;oBACR,SAAS,EAAE,KAAK;oBAChB,MAAM;iBACN,CAAC,CAAA;YACH,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAA;YAChC,CAAC;YAED,+FAA+F;YAC/F,wEAAwE;YACxE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3D,MAAK;YACN,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAK;YACN,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAA;IACf,CAAC;IAEO,IAAI,CAAC,KAA2B;QACvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,QAAQ,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE;oBAC7C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC;iBAC1B,CAAC,CAAA;YACH,CAAC;QACF,CAAC;IACF,CAAC;CACD"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugin/lifecycle.ts"],"names":[],"mappings":"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"}
|