@agent-native/dispatch 0.15.1 → 0.15.3

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 (191) hide show
  1. package/dist/actions/delete-staged-dataset.d.ts +3 -1
  2. package/dist/actions/delete-staged-dataset.js +3 -26
  3. package/dist/actions/delete-staged-dataset.js.map +1 -1
  4. package/dist/actions/delete-workspace-resource.d.ts +13 -13
  5. package/dist/actions/list-staged-datasets.d.ts +1 -1
  6. package/dist/actions/list-staged-datasets.js +3 -28
  7. package/dist/actions/list-staged-datasets.js.map +1 -1
  8. package/dist/actions/provider-api-catalog.d.ts +6 -4
  9. package/dist/actions/provider-api-catalog.js +3 -17
  10. package/dist/actions/provider-api-catalog.js.map +1 -1
  11. package/dist/actions/provider-api-docs.d.ts +21 -2
  12. package/dist/actions/provider-api-docs.js +6 -51
  13. package/dist/actions/provider-api-docs.js.map +1 -1
  14. package/dist/actions/provider-api-register.d.ts +39 -15
  15. package/dist/actions/provider-api-register.js +4 -193
  16. package/dist/actions/provider-api-register.js.map +1 -1
  17. package/dist/actions/provider-api-request.d.ts +34 -2
  18. package/dist/actions/provider-api-request.js +6 -171
  19. package/dist/actions/provider-api-request.js.map +1 -1
  20. package/dist/actions/query-staged-dataset.d.ts +18 -1
  21. package/dist/actions/query-staged-dataset.d.ts.map +1 -1
  22. package/dist/actions/query-staged-dataset.js +3 -100
  23. package/dist/actions/query-staged-dataset.js.map +1 -1
  24. package/dist/actions/upsert-destination.d.ts +12 -12
  25. package/dist/components/action-query-error.js +1 -1
  26. package/dist/components/action-query-error.js.map +1 -1
  27. package/dist/components/agents-panel.js +1 -1
  28. package/dist/components/agents-panel.js.map +1 -1
  29. package/dist/components/app-keys-popover.d.ts.map +1 -1
  30. package/dist/components/app-keys-popover.js +1 -1
  31. package/dist/components/app-keys-popover.js.map +1 -1
  32. package/dist/components/create-app-popover.js +5 -1
  33. package/dist/components/create-app-popover.js.map +1 -1
  34. package/dist/components/dispatch-control-plane.js +5 -1
  35. package/dist/components/dispatch-control-plane.js.map +1 -1
  36. package/dist/components/dispatch-shell.js +1 -1
  37. package/dist/components/dispatch-shell.js.map +1 -1
  38. package/dist/components/layout/Header.d.ts.map +1 -1
  39. package/dist/components/layout/Header.js +2 -1
  40. package/dist/components/layout/Header.js.map +1 -1
  41. package/dist/components/layout/Layout.d.ts.map +1 -1
  42. package/dist/components/layout/Layout.js +31 -65
  43. package/dist/components/layout/Layout.js.map +1 -1
  44. package/dist/components/messaging-setup-panel.d.ts.map +1 -1
  45. package/dist/components/messaging-setup-panel.js +2 -1
  46. package/dist/components/messaging-setup-panel.js.map +1 -1
  47. package/dist/components/task-queue-health.d.ts.map +1 -1
  48. package/dist/components/task-queue-health.js +2 -1
  49. package/dist/components/task-queue-health.js.map +1 -1
  50. package/dist/components/workspace-app-card.d.ts.map +1 -1
  51. package/dist/components/workspace-app-card.js +1 -1
  52. package/dist/components/workspace-app-card.js.map +1 -1
  53. package/dist/components/workspace-resource-effective-stack.js +1 -1
  54. package/dist/components/workspace-resource-effective-stack.js.map +1 -1
  55. package/dist/components/workspace-resource-impact-preview.js +1 -1
  56. package/dist/components/workspace-resource-impact-preview.js.map +1 -1
  57. package/dist/components/workspace-template-card.js +1 -1
  58. package/dist/components/workspace-template-card.js.map +1 -1
  59. package/dist/hooks/use-navigation-state.d.ts.map +1 -1
  60. package/dist/hooks/use-navigation-state.js +2 -1
  61. package/dist/hooks/use-navigation-state.js.map +1 -1
  62. package/dist/lib/automations.js +1 -1
  63. package/dist/lib/automations.js.map +1 -1
  64. package/dist/lib/overview-chat.d.ts.map +1 -1
  65. package/dist/lib/overview-chat.js +2 -1
  66. package/dist/lib/overview-chat.js.map +1 -1
  67. package/dist/lib/task-queue.js +1 -1
  68. package/dist/lib/task-queue.js.map +1 -1
  69. package/dist/routes/pages/$appId.d.ts.map +1 -1
  70. package/dist/routes/pages/$appId.js +3 -1
  71. package/dist/routes/pages/$appId.js.map +1 -1
  72. package/dist/routes/pages/_index.js +1 -1
  73. package/dist/routes/pages/_index.js.map +1 -1
  74. package/dist/routes/pages/agents.js +2 -1
  75. package/dist/routes/pages/agents.js.map +1 -1
  76. package/dist/routes/pages/approval.d.ts.map +1 -1
  77. package/dist/routes/pages/approval.js +3 -1
  78. package/dist/routes/pages/approval.js.map +1 -1
  79. package/dist/routes/pages/approvals.d.ts.map +1 -1
  80. package/dist/routes/pages/approvals.js +1 -1
  81. package/dist/routes/pages/approvals.js.map +1 -1
  82. package/dist/routes/pages/apps.$appId.d.ts.map +1 -1
  83. package/dist/routes/pages/apps.$appId.js +2 -1
  84. package/dist/routes/pages/apps.$appId.js.map +1 -1
  85. package/dist/routes/pages/apps.d.ts.map +1 -1
  86. package/dist/routes/pages/apps.js +2 -1
  87. package/dist/routes/pages/apps.js.map +1 -1
  88. package/dist/routes/pages/audit.js +1 -1
  89. package/dist/routes/pages/audit.js.map +1 -1
  90. package/dist/routes/pages/automations.d.ts.map +1 -1
  91. package/dist/routes/pages/automations.js +3 -1
  92. package/dist/routes/pages/automations.js.map +1 -1
  93. package/dist/routes/pages/chat.d.ts.map +1 -1
  94. package/dist/routes/pages/chat.js +3 -1
  95. package/dist/routes/pages/chat.js.map +1 -1
  96. package/dist/routes/pages/destinations.js +2 -1
  97. package/dist/routes/pages/destinations.js.map +1 -1
  98. package/dist/routes/pages/dreams.d.ts.map +1 -1
  99. package/dist/routes/pages/dreams.js +1 -1
  100. package/dist/routes/pages/dreams.js.map +1 -1
  101. package/dist/routes/pages/identities.d.ts.map +1 -1
  102. package/dist/routes/pages/identities.js +1 -1
  103. package/dist/routes/pages/identities.js.map +1 -1
  104. package/dist/routes/pages/integrations.d.ts.map +1 -1
  105. package/dist/routes/pages/integrations.js +1 -1
  106. package/dist/routes/pages/integrations.js.map +1 -1
  107. package/dist/routes/pages/metrics.d.ts.map +1 -1
  108. package/dist/routes/pages/metrics.js +2 -1
  109. package/dist/routes/pages/metrics.js.map +1 -1
  110. package/dist/routes/pages/new-app.d.ts.map +1 -1
  111. package/dist/routes/pages/new-app.js +2 -1
  112. package/dist/routes/pages/new-app.js.map +1 -1
  113. package/dist/routes/pages/operations.d.ts.map +1 -1
  114. package/dist/routes/pages/operations.js +3 -1
  115. package/dist/routes/pages/operations.js.map +1 -1
  116. package/dist/routes/pages/settings.d.ts.map +1 -1
  117. package/dist/routes/pages/settings.js +3 -1
  118. package/dist/routes/pages/settings.js.map +1 -1
  119. package/dist/routes/pages/thread-debug.d.ts.map +1 -1
  120. package/dist/routes/pages/thread-debug.js +2 -1
  121. package/dist/routes/pages/thread-debug.js.map +1 -1
  122. package/dist/routes/pages/vault.d.ts.map +1 -1
  123. package/dist/routes/pages/vault.js +1 -1
  124. package/dist/routes/pages/vault.js.map +1 -1
  125. package/dist/routes/pages/workspace.d.ts.map +1 -1
  126. package/dist/routes/pages/workspace.js +1 -1
  127. package/dist/routes/pages/workspace.js.map +1 -1
  128. package/package.json +4 -3
  129. package/src/actions/delete-staged-dataset.ts +3 -33
  130. package/src/actions/list-staged-datasets.ts +3 -30
  131. package/src/actions/provider-api-audit.spec.ts +2 -3
  132. package/src/actions/provider-api-catalog.ts +10 -23
  133. package/src/actions/provider-api-docs.ts +19 -68
  134. package/src/actions/provider-api-register.ts +5 -233
  135. package/src/actions/provider-api-request.ts +19 -232
  136. package/src/actions/query-staged-dataset.ts +3 -119
  137. package/src/components/action-query-error.spec.tsx +1 -1
  138. package/src/components/action-query-error.tsx +1 -1
  139. package/src/components/agents-panel.tsx +1 -1
  140. package/src/components/app-keys-popover.spec.tsx +4 -1
  141. package/src/components/app-keys-popover.tsx +4 -1
  142. package/src/components/create-app-popover.tsx +5 -5
  143. package/src/components/dispatch-control-plane.spec.tsx +20 -8
  144. package/src/components/dispatch-control-plane.tsx +5 -5
  145. package/src/components/dispatch-shell.tsx +1 -1
  146. package/src/components/layout/Header.tsx +2 -1
  147. package/src/components/layout/Layout.spec.tsx +24 -19
  148. package/src/components/layout/Layout.tsx +47 -151
  149. package/src/components/messaging-setup-panel.spec.tsx +4 -1
  150. package/src/components/messaging-setup-panel.tsx +2 -3
  151. package/src/components/task-queue-health.tsx +2 -1
  152. package/src/components/workspace-app-card.spec.tsx +1 -1
  153. package/src/components/workspace-app-card.tsx +4 -1
  154. package/src/components/workspace-resource-effective-stack.spec.tsx +1 -1
  155. package/src/components/workspace-resource-effective-stack.tsx +1 -1
  156. package/src/components/workspace-resource-impact-preview.spec.tsx +1 -1
  157. package/src/components/workspace-resource-impact-preview.tsx +1 -1
  158. package/src/components/workspace-template-card.spec.tsx +1 -1
  159. package/src/components/workspace-template-card.tsx +1 -1
  160. package/src/hooks/use-navigation-state.ts +5 -3
  161. package/src/lib/automations.ts +1 -1
  162. package/src/lib/overview-chat.spec.ts +5 -2
  163. package/src/lib/overview-chat.ts +2 -1
  164. package/src/lib/task-queue.ts +1 -1
  165. package/src/routes/pages/$appId.tsx +3 -1
  166. package/src/routes/pages/_index.tsx +1 -1
  167. package/src/routes/pages/agents.tsx +2 -2
  168. package/src/routes/pages/approval.tsx +4 -2
  169. package/src/routes/pages/approvals.tsx +4 -1
  170. package/src/routes/pages/apps.$appId.tsx +2 -1
  171. package/src/routes/pages/apps.tsx +2 -1
  172. package/src/routes/pages/audit.tsx +1 -1
  173. package/src/routes/pages/automations.tsx +3 -5
  174. package/src/routes/pages/chat.spec.tsx +15 -4
  175. package/src/routes/pages/chat.tsx +3 -4
  176. package/src/routes/pages/destinations.tsx +2 -2
  177. package/src/routes/pages/dreams.tsx +4 -1
  178. package/src/routes/pages/identities.tsx +4 -1
  179. package/src/routes/pages/integrations.tsx +4 -1
  180. package/src/routes/pages/metrics.tsx +2 -1
  181. package/src/routes/pages/new-app.tsx +2 -1
  182. package/src/routes/pages/operations.tsx +3 -5
  183. package/src/routes/pages/settings.tsx +4 -5
  184. package/src/routes/pages/thread-debug.tsx +2 -1
  185. package/src/routes/pages/vault.tsx +4 -1
  186. package/src/routes/pages/workspace.tsx +4 -1
  187. package/dist/actions/provider-api-audit.d.ts +0 -7
  188. package/dist/actions/provider-api-audit.d.ts.map +0 -1
  189. package/dist/actions/provider-api-audit.js +0 -74
  190. package/dist/actions/provider-api-audit.js.map +0 -1
  191. package/src/actions/provider-api-audit.ts +0 -88
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  useActionMutation,
3
3
  useActionQuery,
4
- useT,
5
- } from "@agent-native/core/client";
4
+ } from "@agent-native/core/client/hooks";
5
+ import { useT } from "@agent-native/core/client/i18n";
6
6
  import { IconCheck, IconCopy, IconPlugConnected } from "@tabler/icons-react";
7
7
  import { useMemo, useState } from "react";
8
8
  import { toast } from "sonner";
@@ -1,10 +1,12 @@
1
+ import { appPath } from "@agent-native/core/client/api-path";
1
2
  import {
2
3
  useActionMutation,
3
4
  useActionQuery,
5
+ } from "@agent-native/core/client/hooks";
6
+ import {
4
7
  isInAgentEmbed,
5
8
  postNavigate,
6
- appPath,
7
- } from "@agent-native/core/client";
9
+ } from "@agent-native/core/client/navigation";
8
10
  import {
9
11
  IconCheck,
10
12
  IconX,
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import { useOrg } from "@agent-native/core/client/org";
3
6
  import { useMemo, useState } from "react";
4
7
  import { toast } from "sonner";
@@ -1,4 +1,5 @@
1
- import { useActionQuery, useT } from "@agent-native/core/client";
1
+ import { useActionQuery } from "@agent-native/core/client/hooks";
2
+ import { useT } from "@agent-native/core/client/i18n";
2
3
  import {
3
4
  IconArrowLeft,
4
5
  IconArrowUpRight,
@@ -1,4 +1,5 @@
1
- import { useActionQuery, useT } from "@agent-native/core/client";
1
+ import { useActionQuery } from "@agent-native/core/client/hooks";
2
+ import { useT } from "@agent-native/core/client/i18n";
2
3
  import {
3
4
  IconApps,
4
5
  IconArrowUpRight,
@@ -1,4 +1,4 @@
1
- import { useActionQuery } from "@agent-native/core/client";
1
+ import { useActionQuery } from "@agent-native/core/client/hooks";
2
2
 
3
3
  import { ActionQueryError } from "../../components/action-query-error";
4
4
  import { DispatchShell } from "../../components/dispatch-shell";
@@ -1,8 +1,6 @@
1
- import {
2
- PromptComposer,
3
- sendToAgentChat,
4
- useChangeVersions,
5
- } from "@agent-native/core/client";
1
+ import { sendToAgentChat } from "@agent-native/core/client/agent-chat";
2
+ import { PromptComposer } from "@agent-native/core/client/composer";
3
+ import { useChangeVersions } from "@agent-native/core/client/hooks";
6
4
  import { IconPlus, IconSettingsAutomation } from "@tabler/icons-react";
7
5
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
8
6
  import { useMemo, useState } from "react";
@@ -10,16 +10,27 @@ const clientState = vi.hoisted(() => ({
10
10
  surfaceProps: null as Record<string, unknown> | null,
11
11
  }));
12
12
 
13
- vi.mock("@agent-native/core/client", () => ({
13
+ vi.mock("@agent-native/core/client/agent-chat", () => ({
14
14
  AgentChatSurface: (props: Record<string, unknown>) => {
15
15
  clientState.surfaceProps = props;
16
16
  return <>{props.composerSlot as ReactNode}</>;
17
17
  },
18
- appBasePath: () => "",
19
- appPath: (path: string) => path,
20
- isInBuilderFrame: () => false,
21
18
  markAgentChatHomeHandoff: vi.fn(),
19
+ navigateWithAgentChatViewTransition: (
20
+ navigate: (path: string) => void,
21
+ path: string,
22
+ ) => navigate(path),
22
23
  sendToAgentChat: vi.fn(),
24
+ }));
25
+
26
+ vi.mock("@agent-native/core/client/api-path", () => ({
27
+ agentNativePath: (path: string) => path,
28
+ appApiPath: (path: string) => path,
29
+ appBasePath: () => "",
30
+ appPath: (path: string) => path,
31
+ }));
32
+
33
+ vi.mock("@agent-native/core/client/i18n", () => ({
23
34
  useT: () => (key: string, values?: { defaultValue?: string }) =>
24
35
  values?.defaultValue ?? key,
25
36
  }));
@@ -1,10 +1,9 @@
1
1
  import {
2
2
  AgentChatSurface,
3
- appBasePath,
4
- appPath,
5
3
  markAgentChatHomeHandoff,
6
- useT,
7
- } from "@agent-native/core/client";
4
+ } from "@agent-native/core/client/agent-chat";
5
+ import { appBasePath, appPath } from "@agent-native/core/client/api-path";
6
+ import { useT } from "@agent-native/core/client/i18n";
8
7
  import {
9
8
  useCallback,
10
9
  useEffect,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  useActionMutation,
3
3
  useActionQuery,
4
- useT,
5
- } from "@agent-native/core/client";
4
+ } from "@agent-native/core/client/hooks";
5
+ import { useT } from "@agent-native/core/client/i18n";
6
6
  import { useState } from "react";
7
7
  import { toast } from "sonner";
8
8
 
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import {
3
6
  IconAlertTriangle,
4
7
  IconBrain,
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import { toast } from "sonner";
3
6
 
4
7
  import { ActionQueryError } from "../../components/action-query-error";
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import {
3
6
  IconCheck,
4
7
  IconChevronRight,
@@ -1,4 +1,5 @@
1
- import { useActionQuery, useT } from "@agent-native/core/client";
1
+ import { useActionQuery } from "@agent-native/core/client/hooks";
2
+ import { useT } from "@agent-native/core/client/i18n";
2
3
  import {
3
4
  IconActivity,
4
5
  IconAlertTriangle,
@@ -1,4 +1,5 @@
1
- import { NewWorkspaceAppFlow, useT } from "@agent-native/core/client";
1
+ import { useT } from "@agent-native/core/client/i18n";
2
+ import { NewWorkspaceAppFlow } from "@agent-native/core/client/ui";
2
3
 
3
4
  import { DispatchShell } from "../../components/dispatch-shell";
4
5
 
@@ -1,8 +1,6 @@
1
- import {
2
- DbAdminPage,
3
- ObservabilityDashboard,
4
- useT,
5
- } from "@agent-native/core/client";
1
+ import { DbAdminPage } from "@agent-native/core/client/db-admin";
2
+ import { useT } from "@agent-native/core/client/i18n";
3
+ import { ObservabilityDashboard } from "@agent-native/core/client/observability";
6
4
  import {
7
5
  IconActivity,
8
6
  IconArrowUpRight,
@@ -1,11 +1,10 @@
1
+ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
+ import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
+ import { TeamPage } from "@agent-native/core/client/org";
1
4
  import {
2
- ChangelogSettingsCard,
3
- LanguagePicker,
4
5
  SettingsTabsPage,
5
6
  useAgentSettingsTabs,
6
- useT,
7
- } from "@agent-native/core/client";
8
- import { TeamPage } from "@agent-native/core/client/org";
7
+ } from "@agent-native/core/client/settings";
9
8
  import { Link } from "react-router";
10
9
 
11
10
  import changelog from "../../../CHANGELOG.md?raw";
@@ -1,4 +1,5 @@
1
- import { agentNativePath, useActionQuery } from "@agent-native/core/client";
1
+ import { agentNativePath } from "@agent-native/core/client/api-path";
2
+ import { useActionQuery } from "@agent-native/core/client/hooks";
2
3
  import {
3
4
  IconDatabase,
4
5
  IconFileSearch,
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import {
3
6
  IconChevronDown,
4
7
  IconChevronRight,
@@ -1,4 +1,7 @@
1
- import { useActionMutation, useActionQuery } from "@agent-native/core/client";
1
+ import {
2
+ useActionMutation,
3
+ useActionQuery,
4
+ } from "@agent-native/core/client/hooks";
2
5
  import {
3
6
  IconAlertCircle,
4
7
  IconBook,
@@ -1,7 +0,0 @@
1
- export declare function sanitizeProviderApiAuditPath(path: unknown): string;
2
- export declare function buildProviderApiAuditSummary(args: {
3
- method?: unknown;
4
- provider?: unknown;
5
- path?: unknown;
6
- }): string;
7
- //# sourceMappingURL=provider-api-audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-api-audit.d.ts","sourceRoot":"","sources":["../../src/actions/provider-api-audit.ts"],"names":[],"mappings":"AA8DA,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAclE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,MAAM,CAKT"}
@@ -1,74 +0,0 @@
1
- const REDACTED = "[redacted]";
2
- const CREDENTIAL_NAME = /^(?:api[-_]?key|access[-_]?token|auth(?:orization)?|bearer|credential|password|secret|signature|sig|token|x-amz-credential|x-amz-signature)$/i;
3
- function decodePathSegment(segment) {
4
- try {
5
- return decodeURIComponent(segment);
6
- }
7
- catch {
8
- return segment;
9
- }
10
- }
11
- function looksLikeCredentialValue(segment) {
12
- const value = decodePathSegment(segment);
13
- if (/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value)) {
14
- return true;
15
- }
16
- if (/^(?:sk|pk|rk|ghp|github_pat|xox[baprs]|ya29|AIza)[-_][A-Za-z0-9_-]+$/i.test(value)) {
17
- return true;
18
- }
19
- return value.length >= 32 && /^[A-Za-z0-9._~-]+$/.test(value);
20
- }
21
- function sanitizePathname(pathname) {
22
- let redactNext = false;
23
- return pathname
24
- .split("/")
25
- .map((segment) => {
26
- if (!segment)
27
- return segment;
28
- const decoded = decodePathSegment(segment);
29
- if (redactNext) {
30
- redactNext = false;
31
- return REDACTED;
32
- }
33
- const assignment = decoded.match(/^([^=:]+)([=:])(.+)$/);
34
- if (assignment && CREDENTIAL_NAME.test(assignment[1])) {
35
- return `${assignment[1]}${assignment[2]}${REDACTED}`;
36
- }
37
- if (CREDENTIAL_NAME.test(decoded)) {
38
- redactNext = true;
39
- return segment;
40
- }
41
- return looksLikeCredentialValue(segment) ? REDACTED : segment;
42
- })
43
- .join("/");
44
- }
45
- function sanitizeQuery(search) {
46
- if (!search)
47
- return "";
48
- const redacted = Array.from(new URLSearchParams(search).keys(), (key) => {
49
- const safeKey = encodeURIComponent(key.slice(0, 100));
50
- return `${safeKey}=${REDACTED}`;
51
- });
52
- return redacted.length > 0 ? `?${redacted.join("&")}` : "";
53
- }
54
- export function sanitizeProviderApiAuditPath(path) {
55
- const raw = String(path ?? "");
56
- const withoutFragment = raw.split("#", 1)[0] ?? "";
57
- try {
58
- const url = new URL(withoutFragment);
59
- return `${url.protocol}//${url.host}${sanitizePathname(url.pathname)}${sanitizeQuery(url.search)}`;
60
- }
61
- catch {
62
- const queryIndex = withoutFragment.indexOf("?");
63
- const pathname = queryIndex >= 0 ? withoutFragment.slice(0, queryIndex) : withoutFragment;
64
- const search = queryIndex >= 0 ? withoutFragment.slice(queryIndex + 1) : "";
65
- return `${sanitizePathname(pathname)}${sanitizeQuery(search)}`;
66
- }
67
- }
68
- export function buildProviderApiAuditSummary(args) {
69
- const method = String(args.method || "GET").toUpperCase();
70
- const provider = String(args.provider ?? "");
71
- const path = sanitizeProviderApiAuditPath(args.path);
72
- return `${method} ${provider} ${path}`.slice(0, 200);
73
- }
74
- //# sourceMappingURL=provider-api-audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-api-audit.js","sourceRoot":"","sources":["../../src/actions/provider-api-audit.ts"],"names":[],"mappings":"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","sourcesContent":["const REDACTED = \"[redacted]\";\n\nconst CREDENTIAL_NAME =\n /^(?:api[-_]?key|access[-_]?token|auth(?:orization)?|bearer|credential|password|secret|signature|sig|token|x-amz-credential|x-amz-signature)$/i;\n\nfunction decodePathSegment(segment: string): string {\n try {\n return decodeURIComponent(segment);\n } catch {\n return segment;\n }\n}\n\nfunction looksLikeCredentialValue(segment: string): boolean {\n const value = decodePathSegment(segment);\n if (/^eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$/.test(value)) {\n return true;\n }\n if (\n /^(?:sk|pk|rk|ghp|github_pat|xox[baprs]|ya29|AIza)[-_][A-Za-z0-9_-]+$/i.test(\n value,\n )\n ) {\n return true;\n }\n return value.length >= 32 && /^[A-Za-z0-9._~-]+$/.test(value);\n}\n\nfunction sanitizePathname(pathname: string): string {\n let redactNext = false;\n return pathname\n .split(\"/\")\n .map((segment) => {\n if (!segment) return segment;\n const decoded = decodePathSegment(segment);\n if (redactNext) {\n redactNext = false;\n return REDACTED;\n }\n\n const assignment = decoded.match(/^([^=:]+)([=:])(.+)$/);\n if (assignment && CREDENTIAL_NAME.test(assignment[1]!)) {\n return `${assignment[1]}${assignment[2]}${REDACTED}`;\n }\n if (CREDENTIAL_NAME.test(decoded)) {\n redactNext = true;\n return segment;\n }\n return looksLikeCredentialValue(segment) ? REDACTED : segment;\n })\n .join(\"/\");\n}\n\nfunction sanitizeQuery(search: string): string {\n if (!search) return \"\";\n const redacted = Array.from(new URLSearchParams(search).keys(), (key) => {\n const safeKey = encodeURIComponent(key.slice(0, 100));\n return `${safeKey}=${REDACTED}`;\n });\n return redacted.length > 0 ? `?${redacted.join(\"&\")}` : \"\";\n}\n\nexport function sanitizeProviderApiAuditPath(path: unknown): string {\n const raw = String(path ?? \"\");\n const withoutFragment = raw.split(\"#\", 1)[0] ?? \"\";\n\n try {\n const url = new URL(withoutFragment);\n return `${url.protocol}//${url.host}${sanitizePathname(url.pathname)}${sanitizeQuery(url.search)}`;\n } catch {\n const queryIndex = withoutFragment.indexOf(\"?\");\n const pathname =\n queryIndex >= 0 ? withoutFragment.slice(0, queryIndex) : withoutFragment;\n const search = queryIndex >= 0 ? withoutFragment.slice(queryIndex + 1) : \"\";\n return `${sanitizePathname(pathname)}${sanitizeQuery(search)}`;\n }\n}\n\nexport function buildProviderApiAuditSummary(args: {\n method?: unknown;\n provider?: unknown;\n path?: unknown;\n}): string {\n const method = String(args.method || \"GET\").toUpperCase();\n const provider = String(args.provider ?? \"\");\n const path = sanitizeProviderApiAuditPath(args.path);\n return `${method} ${provider} ${path}`.slice(0, 200);\n}\n"]}
@@ -1,88 +0,0 @@
1
- const REDACTED = "[redacted]";
2
-
3
- const CREDENTIAL_NAME =
4
- /^(?:api[-_]?key|access[-_]?token|auth(?:orization)?|bearer|credential|password|secret|signature|sig|token|x-amz-credential|x-amz-signature)$/i;
5
-
6
- function decodePathSegment(segment: string): string {
7
- try {
8
- return decodeURIComponent(segment);
9
- } catch {
10
- return segment;
11
- }
12
- }
13
-
14
- function looksLikeCredentialValue(segment: string): boolean {
15
- const value = decodePathSegment(segment);
16
- if (/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(value)) {
17
- return true;
18
- }
19
- if (
20
- /^(?:sk|pk|rk|ghp|github_pat|xox[baprs]|ya29|AIza)[-_][A-Za-z0-9_-]+$/i.test(
21
- value,
22
- )
23
- ) {
24
- return true;
25
- }
26
- return value.length >= 32 && /^[A-Za-z0-9._~-]+$/.test(value);
27
- }
28
-
29
- function sanitizePathname(pathname: string): string {
30
- let redactNext = false;
31
- return pathname
32
- .split("/")
33
- .map((segment) => {
34
- if (!segment) return segment;
35
- const decoded = decodePathSegment(segment);
36
- if (redactNext) {
37
- redactNext = false;
38
- return REDACTED;
39
- }
40
-
41
- const assignment = decoded.match(/^([^=:]+)([=:])(.+)$/);
42
- if (assignment && CREDENTIAL_NAME.test(assignment[1]!)) {
43
- return `${assignment[1]}${assignment[2]}${REDACTED}`;
44
- }
45
- if (CREDENTIAL_NAME.test(decoded)) {
46
- redactNext = true;
47
- return segment;
48
- }
49
- return looksLikeCredentialValue(segment) ? REDACTED : segment;
50
- })
51
- .join("/");
52
- }
53
-
54
- function sanitizeQuery(search: string): string {
55
- if (!search) return "";
56
- const redacted = Array.from(new URLSearchParams(search).keys(), (key) => {
57
- const safeKey = encodeURIComponent(key.slice(0, 100));
58
- return `${safeKey}=${REDACTED}`;
59
- });
60
- return redacted.length > 0 ? `?${redacted.join("&")}` : "";
61
- }
62
-
63
- export function sanitizeProviderApiAuditPath(path: unknown): string {
64
- const raw = String(path ?? "");
65
- const withoutFragment = raw.split("#", 1)[0] ?? "";
66
-
67
- try {
68
- const url = new URL(withoutFragment);
69
- return `${url.protocol}//${url.host}${sanitizePathname(url.pathname)}${sanitizeQuery(url.search)}`;
70
- } catch {
71
- const queryIndex = withoutFragment.indexOf("?");
72
- const pathname =
73
- queryIndex >= 0 ? withoutFragment.slice(0, queryIndex) : withoutFragment;
74
- const search = queryIndex >= 0 ? withoutFragment.slice(queryIndex + 1) : "";
75
- return `${sanitizePathname(pathname)}${sanitizeQuery(search)}`;
76
- }
77
- }
78
-
79
- export function buildProviderApiAuditSummary(args: {
80
- method?: unknown;
81
- provider?: unknown;
82
- path?: unknown;
83
- }): string {
84
- const method = String(args.method || "GET").toUpperCase();
85
- const provider = String(args.provider ?? "");
86
- const path = sanitizeProviderApiAuditPath(args.path);
87
- return `${method} ${provider} ${path}`.slice(0, 200);
88
- }