@revealui/ai 0.8.0 → 0.8.1

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 (77) hide show
  1. package/README.md +25 -12
  2. package/dist/client/hooks/useAgentStream.d.ts.map +1 -1
  3. package/dist/client/hooks/useAgentStream.js +1 -29
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/inference/context-assembly.d.ts.map +1 -1
  8. package/dist/inference/context-assembly.js +1 -3
  9. package/dist/inference/overflow-compressor.d.ts.map +1 -1
  10. package/dist/inference/overflow-compressor.js +1 -3
  11. package/dist/ingestion/pipeline.d.ts.map +1 -1
  12. package/dist/ingestion/pipeline.js +1 -3
  13. package/dist/ingestion/text-splitter.d.ts.map +1 -1
  14. package/dist/ingestion/text-splitter.js +1 -3
  15. package/dist/internal/token-estimate.d.ts +6 -0
  16. package/dist/internal/token-estimate.d.ts.map +1 -0
  17. package/dist/internal/token-estimate.js +7 -0
  18. package/dist/llm/client.d.ts +4 -3
  19. package/dist/llm/client.d.ts.map +1 -1
  20. package/dist/llm/client.js +11 -4
  21. package/dist/llm/local-ai-profile.d.ts +39 -0
  22. package/dist/llm/local-ai-profile.d.ts.map +1 -0
  23. package/dist/llm/local-ai-profile.js +165 -0
  24. package/dist/llm/providers/inference-snaps.d.ts +24 -13
  25. package/dist/llm/providers/inference-snaps.d.ts.map +1 -1
  26. package/dist/llm/providers/inference-snaps.js +21 -17
  27. package/dist/llm/providers/us-origin-snaps.d.ts +79 -0
  28. package/dist/llm/providers/us-origin-snaps.d.ts.map +1 -0
  29. package/dist/llm/providers/us-origin-snaps.js +108 -0
  30. package/dist/observability/export.d.ts +78 -0
  31. package/dist/observability/export.d.ts.map +1 -0
  32. package/dist/observability/export.js +229 -0
  33. package/dist/observability/index.d.ts +19 -0
  34. package/dist/observability/index.d.ts.map +1 -0
  35. package/dist/observability/index.js +16 -0
  36. package/dist/observability/instrumentation.d.ts +68 -0
  37. package/dist/observability/instrumentation.d.ts.map +1 -0
  38. package/dist/observability/instrumentation.js +219 -0
  39. package/dist/observability/storage.d.ts +39 -0
  40. package/dist/observability/storage.d.ts.map +1 -0
  41. package/dist/observability/storage.js +184 -0
  42. package/dist/orchestration/runtime.d.ts +7 -0
  43. package/dist/orchestration/runtime.d.ts.map +1 -1
  44. package/dist/orchestration/runtime.js +9 -2
  45. package/dist/orchestration/ticket-agent.d.ts +10 -0
  46. package/dist/orchestration/ticket-agent.d.ts.map +1 -1
  47. package/dist/orchestration/ticket-agent.js +7 -1
  48. package/dist/skills/index.d.ts +4 -0
  49. package/dist/skills/index.d.ts.map +1 -1
  50. package/dist/skills/index.js +4 -0
  51. package/dist/skills/integration/agent-skill-provider.d.ts +0 -5
  52. package/dist/skills/integration/agent-skill-provider.d.ts.map +1 -1
  53. package/dist/skills/integration/agent-skill-provider.js +3 -9
  54. package/dist/tools/admin/factory.d.ts +6 -0
  55. package/dist/tools/admin/factory.d.ts.map +1 -1
  56. package/dist/tools/admin/factory.js +3 -2
  57. package/dist/tools/coding/index.d.ts +6 -0
  58. package/dist/tools/coding/index.d.ts.map +1 -1
  59. package/dist/tools/coding/index.js +7 -2
  60. package/dist/tools/governance.d.ts +37 -0
  61. package/dist/tools/governance.d.ts.map +1 -0
  62. package/dist/tools/governance.js +42 -0
  63. package/dist/tools/integrity-audit.d.ts +27 -0
  64. package/dist/tools/integrity-audit.d.ts.map +1 -0
  65. package/dist/tools/integrity-audit.js +64 -0
  66. package/dist/tools/mcp-adapter.d.ts +23 -3
  67. package/dist/tools/mcp-adapter.d.ts.map +1 -1
  68. package/dist/tools/mcp-adapter.js +189 -132
  69. package/dist/tools/mcp-sampling.d.ts +3 -3
  70. package/dist/tools/mcp-sampling.js +3 -3
  71. package/dist/tools/web/duck-duck-go.d.ts.map +1 -1
  72. package/dist/tools/web/duck-duck-go.js +1 -4
  73. package/dist/tools/web/exa.d.ts.map +1 -1
  74. package/dist/tools/web/exa.js +1 -4
  75. package/dist/tools/web/tavily.d.ts.map +1 -1
  76. package/dist/tools/web/tavily.js +1 -4
  77. package/package.json +68 -33
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Agent Skills
3
3
  *
4
+ * **INCUBATING (fleet-redundancy C11 / ADR-007).** Library exports for skill
5
+ * install/activation remain. No RevealUI app currently mounts the skills
6
+ * registry as a product path; wire only under a dedicated WIRE ticket.
7
+ *
4
8
  * Implementation of the Agent Skills open standard (skills.sh).
5
9
  * Allows RevealUI agents to install and use skill packages.
6
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,KAAK,YAAY,EACjB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,WAAW,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,mBAAmB,EACnB,WAAW,EACX,KAAK,WAAW,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,KAAK,YAAY,EACjB,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,WAAW,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,aAAa,EAClB,mBAAmB,EACnB,WAAW,EACX,KAAK,WAAW,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Agent Skills
3
3
  *
4
+ * **INCUBATING (fleet-redundancy C11 / ADR-007).** Library exports for skill
5
+ * install/activation remain. No RevealUI app currently mounts the skills
6
+ * registry as a product path; wire only under a dedicated WIRE ticket.
7
+ *
4
8
  * Implementation of the Agent Skills open standard (skills.sh).
5
9
  * Allows RevealUI agents to install and use skill packages.
6
10
  *
@@ -56,11 +56,6 @@ export declare class AgentSkillProvider {
56
56
  * Format multiple skill instructions into a single block.
57
57
  */
58
58
  private formatSkillInstructions;
59
- /**
60
- * Estimate token count for text (rough approximation).
61
- * Uses ~4 characters per token as a rough estimate.
62
- */
63
- private estimateTokens;
64
59
  /**
65
60
  * Build a system prompt augmentation from activated skills.
66
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent-skill-provider.d.ts","sourceRoot":"","sources":["../../../src/skills/integration/agent-skill-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,SAAS,EAAE,cAAc,CAAC;IAE1B,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB,iCAAiC;IACjC,eAAe,EAAE,KAAK,EAAE,CAAC;IAEzB,yBAAyB;IACzB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAE9D,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,mBAAmB,CAA2B;gBAE1C,MAAM,EAAE,wBAAwB;IAM5C;;;;;;OAMG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAItB;;;;;OAKG;IACH,4BAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;IAsBrD;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE;IAc9C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;IAI1C;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnE;AAuBD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAC1C,kBAAkB,CAKpB"}
1
+ {"version":3,"file":"agent-skill-provider.d.ts","sourceRoot":"","sources":["../../../src/skills/integration/agent-skill-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,SAAS,EAAE,cAAc,CAAC;IAE1B,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB,iCAAiC;IACjC,eAAe,EAAE,KAAK,EAAE,CAAC;IAEzB,yBAAyB;IACzB,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAE9D,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,mBAAmB,CAA2B;gBAE1C,MAAM,EAAE,wBAAwB;IAM5C;;;;;;OAMG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC;IA8ChC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;;;;OAKG;IACH,4BAA4B,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;IAsBrD;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE;IAc9C;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;IAI1C;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAGnE;AAuBD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAC1C,kBAAkB,CAKpB"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Integrates skills into agent system prompts.
5
5
  */
6
+ import { estimateTokens } from '../../internal/token-estimate.js';
6
7
  /**
7
8
  * Provider for injecting skill instructions into agent prompts.
8
9
  */
@@ -35,7 +36,7 @@ export class AgentSkillProvider {
35
36
  }
36
37
  // Format skill instructions
37
38
  const skillInstructions = this.formatSkillInstructions(activatedSkills);
38
- const estimatedTokens = this.estimateTokens(skillInstructions);
39
+ const estimatedTokens = estimateTokens(skillInstructions);
39
40
  // Find system message or create one
40
41
  const updatedMessages = [...messages];
41
42
  const systemIndex = updatedMessages.findIndex((m) => m.role === 'system');
@@ -72,13 +73,6 @@ export class AgentSkillProvider {
72
73
  ${skillBlocks.join('\n\n')}
73
74
  </activated-skills>`;
74
75
  }
75
- /**
76
- * Estimate token count for text (rough approximation).
77
- * Uses ~4 characters per token as a rough estimate.
78
- */
79
- estimateTokens(text) {
80
- return Math.ceil(text.length / 4);
81
- }
82
76
  /**
83
77
  * Build a system prompt augmentation from activated skills.
84
78
  *
@@ -93,7 +87,7 @@ ${skillBlocks.join('\n\n')}
93
87
  // Add skills until we hit token budget
94
88
  for (const skill of skills) {
95
89
  const formatted = this.instructionTemplate(skill);
96
- const tokens = this.estimateTokens(formatted);
90
+ const tokens = estimateTokens(formatted);
97
91
  if (totalTokens + tokens <= this.maxTokenBudget) {
98
92
  includedSkills.push(skill);
99
93
  totalTokens += tokens;
@@ -3,6 +3,7 @@
3
3
  * Creates admin tools with API client injected for actual execution
4
4
  */
5
5
  import type { Tool } from '../base.js';
6
+ import { type ToolIntegrityAuditHandler } from '../integrity-audit.js';
6
7
  /**
7
8
  * API Client interface (compatible with @revealui/core/admin/utils/apiClient)
8
9
  */
@@ -80,6 +81,11 @@ export interface AdminToolsConfig {
80
81
  globals?: GlobalMetadata[];
81
82
  /** Current user context (for permission checks) */
82
83
  user?: UserContext;
84
+ /**
85
+ * GAP-355 S5-4 integrity audit. When set, every tool execute is awaited and
86
+ * successful results fail closed if the audit write throws.
87
+ */
88
+ onToolAudit?: ToolIntegrityAuditHandler;
83
89
  }
84
90
  /**
85
91
  * Create admin tools with API client injected
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/tools/admin/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAyBvC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QACV,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,YAAY,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,SAAS,EAAE,cAAc,CAAC;IAE1B,kEAAkE;IAClE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAE3B,mDAAmD;IACnD,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAggBjE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/tools/admin/factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAyB/B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QACV,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE,YAAY,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,SAAS,EAAE,cAAc,CAAC;IAE1B,kEAAkE;IAClE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAE3B,mDAAmD;IACnD,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAggBjE"}
@@ -2,6 +2,7 @@
2
2
  * admin Tools Factory
3
3
  * Creates admin tools with API client injected for actual execution
4
4
  */
5
+ import { maybeWrapToolsWithIntegrityAudit, } from '../integrity-audit.js';
5
6
  import { createDocumentTool, deleteDocumentTool, findDocumentsTool, getDocumentTool, listCollectionsTool, updateDocumentTool, } from './collection-tools.js';
6
7
  import { getGlobalTool, listGlobalsTool, updateGlobalTool } from './global-tools.js';
7
8
  import { deleteMediaTool, getMediaTool, listMediaTool, updateMediaTool, uploadMediaTool, } from './media-tools.js';
@@ -11,7 +12,7 @@ import { createUserTool, deleteUserTool, getCurrentUserTool, listUsersTool, upda
11
12
  * This factory function creates functional tools by injecting the actual API implementation
12
13
  */
13
14
  export function createAdminTools(config) {
14
- const { apiClient, collections, globals, user } = config;
15
+ const { apiClient, collections, globals, user, onToolAudit } = config;
15
16
  // Clone tools and inject API client implementation
16
17
  const tools = [];
17
18
  // Collection Tools
@@ -458,5 +459,5 @@ export function createAdminTools(config) {
458
459
  }
459
460
  },
460
461
  });
461
- return tools;
462
+ return maybeWrapToolsWithIntegrityAudit(tools, onToolAudit);
462
463
  }
@@ -4,6 +4,7 @@
4
4
  * for the RevealUI standalone coding agent.
5
5
  */
6
6
  import type { Tool } from '../base.js';
7
+ import { type ToolIntegrityAuditHandler } from '../integrity-audit.js';
7
8
  export { fileEditTool } from './file-edit.js';
8
9
  export { fileGlobTool } from './file-glob.js';
9
10
  export { fileGrepTool } from './file-grep.js';
@@ -30,6 +31,11 @@ export interface CodingToolsConfig {
30
31
  deniedPathPatterns?: RegExp[];
31
32
  /** Which tools to include (default: all) */
32
33
  include?: Array<'file_read' | 'file_write' | 'file_edit' | 'file_glob' | 'file_grep' | 'shell_exec' | 'git_ops' | 'project_context' | 'test_runner' | 'lint_fix'>;
34
+ /**
35
+ * GAP-355 S5-4 integrity audit. When set, every tool execute is awaited and
36
+ * successful results fail closed if the audit write throws.
37
+ */
38
+ onToolAudit?: ToolIntegrityAuditHandler;
33
39
  }
34
40
  /**
35
41
  * Create coding tools with safety configuration applied.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/coding/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAevC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,KAAK,CACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,UAAU,CACb,CAAC;CACH;AAgBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,CAmBnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/coding/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,KAAK,CACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,UAAU,CACb,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAgBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,CAsBnE"}
@@ -3,6 +3,7 @@
3
3
  * File operations, search, shell, git, and project context tools
4
4
  * for the RevealUI standalone coding agent.
5
5
  */
6
+ import { maybeWrapToolsWithIntegrityAudit, } from '../integrity-audit.js';
6
7
  import { fileEditTool } from './file-edit.js';
7
8
  import { fileGlobTool } from './file-glob.js';
8
9
  import { fileGrepTool } from './file-grep.js';
@@ -54,9 +55,13 @@ export function createCodingTools(config) {
54
55
  };
55
56
  configureSafety(safetyConfig);
56
57
  // Filter tools if include list is provided
58
+ let tools;
57
59
  if (config.include) {
58
60
  const includeSet = new Set(config.include);
59
- return ALL_CODING_TOOLS.filter((t) => includeSet.has(t.name));
61
+ tools = ALL_CODING_TOOLS.filter((t) => includeSet.has(t.name));
60
62
  }
61
- return [...ALL_CODING_TOOLS];
63
+ else {
64
+ tools = [...ALL_CODING_TOOLS];
65
+ }
66
+ return maybeWrapToolsWithIntegrityAudit(tools, config.onToolAudit);
62
67
  }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Tool governance wrapper (GAP-355 Stage 6 S6-3).
3
+ *
4
+ * Pre-authorize before side effects; soft-fail (return ToolResult error) when
5
+ * denied so the model can recover. Compose outside integrity audit wraps:
6
+ * governance(integrity(realTool))
7
+ * so authorize runs first and denied tools never execute or integrity-audit success.
8
+ *
9
+ * MCP server tools are not wrapped here (remote / governed-MCP gated).
10
+ */
11
+ import type { Tool } from './base.js';
12
+ export interface ToolAuthorizeDecision {
13
+ allowed: boolean;
14
+ /** Machine-readable deny reason (e.g. exec_requires_grant). */
15
+ reason: string;
16
+ }
17
+ export type ToolAuthorizeFn = (toolName: string) => ToolAuthorizeDecision;
18
+ export type ToolDeniedHandler = (info: {
19
+ toolName: string;
20
+ reason: string;
21
+ }) => void | Promise<void>;
22
+ export interface WrapToolWithGovernanceOptions {
23
+ authorize: ToolAuthorizeFn;
24
+ /**
25
+ * Called when authorize denies. Soft-fail: errors here do not rethrow —
26
+ * the tool still returns a denial ToolResult (owner: soft fail UX).
27
+ */
28
+ onDenied?: ToolDeniedHandler;
29
+ }
30
+ /**
31
+ * Wrap a tool so execute is gated by authorize. Denied → no execute.
32
+ * Returns a new tool object; does not mutate the input.
33
+ */
34
+ export declare function wrapToolWithGovernance(tool: Tool, options: WrapToolWithGovernanceOptions): Tool;
35
+ /** Map a tool list through wrapToolWithGovernance. */
36
+ export declare function wrapToolsWithGovernance(tools: Tool[], options: WrapToolWithGovernanceOptions): Tool[];
37
+ //# sourceMappingURL=governance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/tools/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,WAAW,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,qBAAqB,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,GAAG,IAAI,CAsB/F;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,6BAA6B,GACrC,IAAI,EAAE,CAER"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Tool governance wrapper (GAP-355 Stage 6 S6-3).
3
+ *
4
+ * Pre-authorize before side effects; soft-fail (return ToolResult error) when
5
+ * denied so the model can recover. Compose outside integrity audit wraps:
6
+ * governance(integrity(realTool))
7
+ * so authorize runs first and denied tools never execute or integrity-audit success.
8
+ *
9
+ * MCP server tools are not wrapped here (remote / governed-MCP gated).
10
+ */
11
+ /**
12
+ * Wrap a tool so execute is gated by authorize. Denied → no execute.
13
+ * Returns a new tool object; does not mutate the input.
14
+ */
15
+ export function wrapToolWithGovernance(tool, options) {
16
+ return {
17
+ ...tool,
18
+ async execute(params) {
19
+ const decision = options.authorize(tool.name);
20
+ if (!decision.allowed) {
21
+ try {
22
+ await options.onDenied?.({
23
+ toolName: tool.name,
24
+ reason: decision.reason,
25
+ });
26
+ }
27
+ catch {
28
+ // Soft-fail: still return denial to the model if deny-audit fails.
29
+ }
30
+ return {
31
+ success: false,
32
+ error: `Permission denied (${decision.reason}): ${tool.name}`,
33
+ };
34
+ }
35
+ return tool.execute(params);
36
+ },
37
+ };
38
+ }
39
+ /** Map a tool list through wrapToolWithGovernance. */
40
+ export function wrapToolsWithGovernance(tools, options) {
41
+ return tools.map((tool) => wrapToolWithGovernance(tool, options));
42
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Tool integrity audit wrapper (GAP-355 Stage 5 S5-4).
3
+ *
4
+ * Same fail-closed contract as `createToolsFromMcpClient({ onToolAudit })`:
5
+ * after a successful tool execution, await the audit hook and rethrow so an
6
+ * unrecorded success cannot complete. On tool failure, prefer the tool error
7
+ * if a secondary audit write fails.
8
+ *
9
+ * Used for admin CMS + coding tools that are not MCP server tools.
10
+ */
11
+ import type { Tool } from './base.js';
12
+ /** Summary event for one tool execution (no raw args / results). */
13
+ export interface ToolIntegrityAuditEvent {
14
+ toolName: string;
15
+ success: boolean;
16
+ duration_ms: number;
17
+ error?: string;
18
+ }
19
+ export type ToolIntegrityAuditHandler = (event: ToolIntegrityAuditEvent) => void | Promise<void>;
20
+ /**
21
+ * Wrap a tool so each `execute` emits an integrity audit event.
22
+ * Returns a new tool object; does not mutate the input.
23
+ */
24
+ export declare function wrapToolWithIntegrityAudit(tool: Tool, onToolAudit: ToolIntegrityAuditHandler): Tool;
25
+ /** Map over a tool list when a handler is provided; otherwise return as-is. */
26
+ export declare function maybeWrapToolsWithIntegrityAudit(tools: Tool[], onToolAudit: ToolIntegrityAuditHandler | undefined): Tool[];
27
+ //# sourceMappingURL=integrity-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity-audit.d.ts","sourceRoot":"","sources":["../../src/tools/integrity-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,WAAW,CAAC;AAElD,oEAAoE;AACpE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjG;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,yBAAyB,GACrC,IAAI,CA4CN;AAED,+EAA+E;AAC/E,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,yBAAyB,GAAG,SAAS,GACjD,IAAI,EAAE,CAGR"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Tool integrity audit wrapper (GAP-355 Stage 5 S5-4).
3
+ *
4
+ * Same fail-closed contract as `createToolsFromMcpClient({ onToolAudit })`:
5
+ * after a successful tool execution, await the audit hook and rethrow so an
6
+ * unrecorded success cannot complete. On tool failure, prefer the tool error
7
+ * if a secondary audit write fails.
8
+ *
9
+ * Used for admin CMS + coding tools that are not MCP server tools.
10
+ */
11
+ /**
12
+ * Wrap a tool so each `execute` emits an integrity audit event.
13
+ * Returns a new tool object; does not mutate the input.
14
+ */
15
+ export function wrapToolWithIntegrityAudit(tool, onToolAudit) {
16
+ return {
17
+ ...tool,
18
+ async execute(params) {
19
+ const started = Date.now();
20
+ let result;
21
+ try {
22
+ result = await tool.execute(params);
23
+ }
24
+ catch (error) {
25
+ const errorText = error instanceof Error ? error.message : String(error);
26
+ try {
27
+ await onToolAudit({
28
+ toolName: tool.name,
29
+ success: false,
30
+ duration_ms: Date.now() - started,
31
+ error: errorText,
32
+ });
33
+ }
34
+ catch {
35
+ // Prefer the original tool exception over a secondary audit failure.
36
+ }
37
+ throw error;
38
+ }
39
+ const event = {
40
+ toolName: tool.name,
41
+ success: result.success,
42
+ duration_ms: Date.now() - started,
43
+ ...(result.error !== undefined ? { error: result.error } : {}),
44
+ };
45
+ if (result.success) {
46
+ await onToolAudit(event);
47
+ return result;
48
+ }
49
+ try {
50
+ await onToolAudit(event);
51
+ }
52
+ catch {
53
+ // Prefer the tool failure over a secondary audit failure.
54
+ }
55
+ return result;
56
+ },
57
+ };
58
+ }
59
+ /** Map over a tool list when a handler is provided; otherwise return as-is. */
60
+ export function maybeWrapToolsWithIntegrityAudit(tools, onToolAudit) {
61
+ if (!onToolAudit)
62
+ return tools;
63
+ return tools.map((tool) => wrapToolWithIntegrityAudit(tool, onToolAudit));
64
+ }
@@ -21,7 +21,7 @@
21
21
  * `McpClientLike` / `MCPToolSource` with whichever client they construct.
22
22
  */
23
23
  import type { Tool } from './base.js';
24
- import { type McpEventSink } from './mcp-events.js';
24
+ import { type McpEventSink, type McpToolCallEvent } from './mcp-events.js';
25
25
  export interface MCPTool {
26
26
  name: string;
27
27
  description: string;
@@ -176,6 +176,14 @@ export interface CreateToolsFromMcpClientOptions {
176
176
  * Safe to pass a throwing sink — adapter swallows sink errors.
177
177
  */
178
178
  onEvent?: McpEventSink;
179
+ /**
180
+ * Integrity audit hook (GAP-355 Stage 5). Fires once per server tool **and**
181
+ * resource/prompt meta-tool call with the `mcp.tool.call` summary shape
182
+ * (`toolName` is the bare primitive name, e.g. `read_resource`). Unlike
183
+ * `onEvent`, this is **awaited** and **rethrows** so a failed audit write
184
+ * fails the tool execution (fail-closed).
185
+ */
186
+ onToolAudit?: (event: McpToolCallEvent) => void | Promise<void>;
179
187
  }
180
188
  /** Spec-shaped `Progress` notification subset. */
181
189
  export interface McpProgressLike {
@@ -236,6 +244,15 @@ export declare function registerMCPTools(mcpClient: MCPClient, registry: {
236
244
  * - Circular references → replaced with "[Circular]"
237
245
  */
238
246
  export declare function serializeMCPResult(value: unknown): unknown;
247
+ /** Options for the legacy hypervisor discovery path (GAP-355 integrity). */
248
+ export interface DiscoverMCPToolsOptions {
249
+ /**
250
+ * Integrity audit hook (awaited, fail-closed on success). Same contract as
251
+ * `createToolsFromMcpClient({ onToolAudit })`. `namespace` on the event is
252
+ * the MCP server name from the hypervisor source.
253
+ */
254
+ onToolAudit?: (event: McpToolCallEvent) => void | Promise<void>;
255
+ }
239
256
  /**
240
257
  * Discover all tools from a running MCPHypervisor (or any MCPToolSource)
241
258
  * and return them as RevealUI Tool instances.
@@ -243,15 +260,18 @@ export declare function serializeMCPResult(value: unknown): unknown;
243
260
  * Tool names use the hypervisor's namespacing (@@mcp_{server}_{tool}) so
244
261
  * collisions across servers are impossible.
245
262
  *
263
+ * @deprecated Prefer `createToolsFromMcpClient` (Stage 5.1a). Kept for
264
+ * AgentRuntime `mcpToolSource` compatibility.
265
+ *
246
266
  * @example
247
267
  * ```typescript
248
268
  * import { MCPHypervisor } from '@revealui/mcp'
249
269
  * import { discoverMCPTools } from '@revealui/ai'
250
270
  *
251
271
  * const hypervisor = MCPHypervisor.getInstance()
252
- * const tools = discoverMCPTools(hypervisor)
272
+ * const tools = discoverMCPTools(hypervisor, { onToolAudit })
253
273
  * agent.tools.push(...tools)
254
274
  * ```
255
275
  */
256
- export declare function discoverMCPTools(source: MCPToolSource): Tool[];
276
+ export declare function discoverMCPTools(source: MCPToolSource, options?: DiscoverMCPToolsOptions): Tool[];
257
277
  //# sourceMappingURL=mcp-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-adapter.ts"],"names":[],"mappings":"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"}