@tickernelz/paperclip-pro-server 2026.925.1 → 2026.926.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/build-info.json +1 -1
  2. package/dist/redaction.js +1 -1
  3. package/dist/redaction.js.map +1 -1
  4. package/dist/routes/access.d.ts.map +1 -1
  5. package/dist/routes/access.js +37 -13
  6. package/dist/routes/access.js.map +1 -1
  7. package/dist/routes/adapters.d.ts.map +1 -1
  8. package/dist/routes/adapters.js +14 -22
  9. package/dist/routes/adapters.js.map +1 -1
  10. package/dist/routes/agents.d.ts.map +1 -1
  11. package/dist/routes/agents.js +48 -16
  12. package/dist/routes/agents.js.map +1 -1
  13. package/dist/routes/approvals.d.ts.map +1 -1
  14. package/dist/routes/approvals.js +28 -10
  15. package/dist/routes/approvals.js.map +1 -1
  16. package/dist/routes/costs.d.ts.map +1 -1
  17. package/dist/routes/costs.js +6 -2
  18. package/dist/routes/costs.js.map +1 -1
  19. package/dist/routes/issues.d.ts.map +1 -1
  20. package/dist/routes/issues.js +80 -1
  21. package/dist/routes/issues.js.map +1 -1
  22. package/dist/routes/openapi.d.ts.map +1 -1
  23. package/dist/routes/openapi.js +32 -1
  24. package/dist/routes/openapi.js.map +1 -1
  25. package/dist/services/adapter-config-schema.d.ts +11 -0
  26. package/dist/services/adapter-config-schema.d.ts.map +1 -0
  27. package/dist/services/adapter-config-schema.js +23 -0
  28. package/dist/services/adapter-config-schema.js.map +1 -0
  29. package/dist/services/heartbeat.d.ts +4 -4
  30. package/dist/services/heartbeat.d.ts.map +1 -1
  31. package/dist/services/heartbeat.js +113 -9
  32. package/dist/services/heartbeat.js.map +1 -1
  33. package/dist/services/issue-run-model-override.d.ts +31 -0
  34. package/dist/services/issue-run-model-override.d.ts.map +1 -0
  35. package/dist/services/issue-run-model-override.js +171 -0
  36. package/dist/services/issue-run-model-override.js.map +1 -0
  37. package/node_modules/@types/node/README.md +1 -1
  38. package/node_modules/@types/node/crypto.d.ts +2 -2
  39. package/node_modules/@types/node/dgram.d.ts +1 -1
  40. package/node_modules/@types/node/package.json +2 -2
  41. package/package.json +20 -20
  42. package/ui-dist/assets/{AgentAvatar-BR1Z_L_Z.js → AgentAvatar-CWNp7Eqe.js} +1 -1
  43. package/ui-dist/assets/{AgentIdentity-BgihkjQU.js → AgentIdentity-Bqzrcghn.js} +1 -1
  44. package/ui-dist/assets/{Agents.production-CSsrqqG3.js → Agents.production-Cs7mMvAL.js} +2 -2
  45. package/ui-dist/assets/{CompanyActivity.production-C3D5uiX9.js → CompanyActivity.production-4bljbHSU.js} +1 -1
  46. package/ui-dist/assets/{CompanyExport-CrTwKkGN.js → CompanyExport-CBh7R3lQ.js} +1 -1
  47. package/ui-dist/assets/{CompanySkills.production-22PSRfdH.js → CompanySkills.production-DEleeGzs.js} +1 -1
  48. package/ui-dist/assets/{Costs.production-hPGllSho.js → Costs.production-Dm5j2nxX.js} +1 -1
  49. package/ui-dist/assets/{EmptyState-DOb3I5aU.js → EmptyState-D62UDLDa.js} +1 -1
  50. package/ui-dist/assets/{MarkdownBody-AdwNLx7A.js → MarkdownBody-DfGkmx3G.js} +1 -1
  51. package/ui-dist/assets/{MarkdownEditor-B3NYD32f.js → MarkdownEditor-ZwstkvWb.js} +1 -1
  52. package/ui-dist/assets/{OrgChart.production-yz5AfR-F.js → OrgChart.production-BWKofGdO.js} +1 -1
  53. package/ui-dist/assets/{PageSkeleton-C-C3Xlc_.js → PageSkeleton-C0pPO_Gb.js} +1 -1
  54. package/ui-dist/assets/{RoutineDetail.production-BJLGGgbv.js → RoutineDetail.production-_auZa0K9.js} +1 -1
  55. package/ui-dist/assets/RoutineRunVariablesDialog-CUcwhS7L.js +5 -0
  56. package/ui-dist/assets/{Routines.production-BLDTlRLI.js → Routines.production-D8R6Ujt6.js} +1 -1
  57. package/ui-dist/assets/{SidebarContext-9UFQ2Pex.js → SidebarContext-B3vvFvTk.js} +1 -1
  58. package/ui-dist/assets/{StatusIcon-DMDp_WJw.js → StatusIcon-BYqGFWup.js} +1 -1
  59. package/ui-dist/assets/{agents-DrLpWAcm.js → agents-CNina7HI.js} +1 -1
  60. package/ui-dist/assets/{badge-BLr1M3ne.js → badge-CW7lQ_Zd.js} +1 -1
  61. package/ui-dist/assets/{bot-CET4VfU-.js → bot-DIsSOxfs.js} +1 -1
  62. package/ui-dist/assets/{button-DCI8NFig.js → button-BYQHEF4e.js} +1 -1
  63. package/ui-dist/assets/{card-BD8MkPAL.js → card-CFXZOYds.js} +1 -1
  64. package/ui-dist/assets/{check-C6myARng.js → check-Cniv3It0.js} +1 -1
  65. package/ui-dist/assets/{checkbox-CmYq-YMP.js → checkbox-MLVUJCCS.js} +1 -1
  66. package/ui-dist/assets/{chevron-down-D2wNtbQf.js → chevron-down-Dq0fsCvv.js} +1 -1
  67. package/ui-dist/assets/{chevron-right-CU6xIk8W.js → chevron-right-C4o2Lqna.js} +1 -1
  68. package/ui-dist/assets/{clipboard-BZT4l65i.js → clipboard-CfEDu5my.js} +1 -1
  69. package/ui-dist/assets/{company-members-C1IoXITE.js → company-members-tdITTHFY.js} +1 -1
  70. package/ui-dist/assets/createLucideIcon-CINAT48M.js +92 -0
  71. package/ui-dist/assets/{definition-P7Pcik2r.js → definition-B5Yyiufk.js} +1 -1
  72. package/ui-dist/assets/{dist-Cc3Bt6H4.js → dist-DCpDFPbp.js} +1 -1
  73. package/ui-dist/assets/{dist-B3Uu-urE.js → dist-bQQ2HFhw.js} +1 -1
  74. package/ui-dist/assets/{environments-Cd-g_MmN.js → environments-awDXeIDD.js} +1 -1
  75. package/ui-dist/assets/{external-link-BKz-OKDG.js → external-link-3uv6Ak2X.js} +1 -1
  76. package/ui-dist/assets/{file-text-DXa-cUrm.js → file-text-DWMD8a2i.js} +1 -1
  77. package/ui-dist/assets/{health-Dc13TJNg.js → health-DY_y3c9e.js} +1 -1
  78. package/ui-dist/assets/{heartbeats-CY77VTM_.js → heartbeats-BQipXQOf.js} +1 -1
  79. package/ui-dist/assets/index-BAoNTaz4.css +1 -0
  80. package/ui-dist/assets/{index-CsQMjEpO.js → index-N4w1Oco1.js} +158 -158
  81. package/ui-dist/assets/{input-BkGpMopE.js → input-B7ODc-rR.js} +1 -1
  82. package/ui-dist/assets/label-BnqmTeef.js +5 -0
  83. package/ui-dist/assets/{loader-circle-DwlcG9aS.js → loader-circle-DA6xS_rG.js} +1 -1
  84. package/ui-dist/assets/{mention-chips-pBjlxGok.js → mention-chips-r4UB4Eiw.js} +1 -1
  85. package/ui-dist/assets/{octagon-alert-CTp78pR9.js → octagon-alert-DsI0y-RL.js} +1 -1
  86. package/ui-dist/assets/{rotate-ccw-BhopZISX.js → rotate-ccw-D6pz3VoJ.js} +1 -1
  87. package/ui-dist/assets/{router-BxwR1PwE.js → router-DcMYq5w_.js} +4 -4
  88. package/ui-dist/assets/{save-D5KpMLil.js → save-CvrYa2yq.js} +1 -1
  89. package/ui-dist/assets/{select-BqqjvKLd.js → select-CV7s_3g2.js} +1 -1
  90. package/ui-dist/assets/{sheet-Z4n6AEBA.js → sheet-CrBXG9pk.js} +1 -1
  91. package/ui-dist/assets/{skeleton-BxD7FB8M.js → skeleton-efW_R0t3.js} +1 -1
  92. package/ui-dist/assets/{tabs-Dqn3cNzC.js → tabs-4RdauNv3.js} +1 -1
  93. package/ui-dist/assets/{triangle-alert-DOta-xfM.js → triangle-alert-DQUol3t5.js} +1 -1
  94. package/ui-dist/assets/{use-adapter-capabilities-0-4PhK9y.js → use-adapter-capabilities-pFfW1mOk.js} +1 -1
  95. package/ui-dist/assets/{useHiddenSettings-D9d6LOsg.js → useHiddenSettings-b1eurTXV.js} +1 -1
  96. package/ui-dist/assets/{zap-gf6Ev631.js → zap-CKzX0hdL.js} +1 -1
  97. package/ui-dist/index.html +46 -46
  98. package/ui-dist/sw.js +1 -1
  99. package/ui-dist/assets/RoutineRunVariablesDialog-BkLLbP3a.js +0 -5
  100. package/ui-dist/assets/createLucideIcon-D-iIM3hK.js +0 -92
  101. package/ui-dist/assets/index-CWuperHN.css +0 -1
  102. package/ui-dist/assets/label-C-aWneNy.js +0 -5
@@ -0,0 +1,31 @@
1
+ import type { IssueRunModelOverrideKey, IssueRunModelOverrideView } from "@tickernelz/paperclip-pro-shared";
2
+ type IssueRunModelOverrideValues = Partial<Record<IssueRunModelOverrideKey, string | null>>;
3
+ export declare class IssueRunModelOverrideError extends Error {
4
+ readonly status: number;
5
+ constructor(message: string, status?: number);
6
+ }
7
+ /** Merges the override into `assigneeAdapterOverrides`, leaving its other keys alone. */
8
+ export declare function writeIssueRunModelOverride(assigneeAdapterOverrides: unknown, values: IssueRunModelOverrideValues): Record<string, unknown> | null;
9
+ export interface IssueRunAdapterConfig {
10
+ config: Record<string, unknown>;
11
+ modelOverride: Record<IssueRunModelOverrideKey, string | null>;
12
+ }
13
+ /** Layers the per-issue adapter overrides onto the run's execution config. */
14
+ export declare function buildIssueRunAdapterConfig(workspaceManagedConfig: Record<string, unknown>, issueOverrides: {
15
+ adapterConfig: Record<string, unknown> | null;
16
+ } | null): IssueRunAdapterConfig;
17
+ export declare function buildIssueRunModelOverrideView(input: {
18
+ issueId: string;
19
+ assigneeAgent: {
20
+ id: string;
21
+ adapterType: string;
22
+ adapterConfig: Record<string, unknown> | null;
23
+ } | null;
24
+ assigneeAdapterOverrides: unknown;
25
+ }): Promise<IssueRunModelOverrideView>;
26
+ export declare function resolveIssueRunModelOverrideUpdate(input: {
27
+ adapterType: string | null;
28
+ values: IssueRunModelOverrideValues;
29
+ }): Promise<IssueRunModelOverrideValues>;
30
+ export {};
31
+ //# sourceMappingURL=issue-run-model-override.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-run-model-override.d.ts","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAW1C,KAAK,2BAA2B,GAAG,OAAO,CACxC,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAChD,CAAC;AAEF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,EAIxC;CACF;AAsBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,wBAAwB,EAAE,OAAO,EACjC,MAAM,EAAE,2BAA2B,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAChE;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,cAAc,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GACvE,qBAAqB,CAMvB;AAuFD,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KAC/C,GAAG,IAAI,CAAC;IACT,wBAAwB,EAAE,OAAO,CAAC;CACnC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAuCrC;AAED,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,2BAA2B,CAAC;CACrC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAkBvC"}
@@ -0,0 +1,171 @@
1
+ import { resolveAdapterConfigSchema } from "./adapter-config-schema.js";
2
+ const ISSUE_RUN_MODEL_OVERRIDE_KEYS = [
3
+ "model",
4
+ "thinking",
5
+ ];
6
+ const FREE_TEXT_FIELD_TYPES = { text: true, combobox: true };
7
+ export class IssueRunModelOverrideError extends Error {
8
+ status;
9
+ constructor(message, status = 422) {
10
+ super(message);
11
+ this.name = "IssueRunModelOverrideError";
12
+ this.status = status;
13
+ }
14
+ }
15
+ function asRecord(value) {
16
+ return value && typeof value === "object" && !Array.isArray(value)
17
+ ? value
18
+ : {};
19
+ }
20
+ function nonEmptyString(value) {
21
+ return typeof value === "string" && value.trim() ? value.trim() : null;
22
+ }
23
+ function readIssueRunModelOverride(assigneeAdapterOverrides) {
24
+ const adapterConfig = asRecord(asRecord(assigneeAdapterOverrides).adapterConfig);
25
+ return {
26
+ model: nonEmptyString(adapterConfig.model),
27
+ thinking: nonEmptyString(adapterConfig.thinking),
28
+ };
29
+ }
30
+ /** Merges the override into `assigneeAdapterOverrides`, leaving its other keys alone. */
31
+ export function writeIssueRunModelOverride(assigneeAdapterOverrides, values) {
32
+ const current = asRecord(assigneeAdapterOverrides);
33
+ const adapterConfig = { ...asRecord(current.adapterConfig) };
34
+ for (const key of ISSUE_RUN_MODEL_OVERRIDE_KEYS) {
35
+ if (!(key in values))
36
+ continue;
37
+ const value = values[key];
38
+ if (value === null || value === undefined)
39
+ delete adapterConfig[key];
40
+ else
41
+ adapterConfig[key] = value;
42
+ }
43
+ const next = {};
44
+ if (Object.keys(adapterConfig).length > 0)
45
+ next.adapterConfig = adapterConfig;
46
+ if (typeof current.useProjectWorkspace === "boolean") {
47
+ next.useProjectWorkspace = current.useProjectWorkspace;
48
+ }
49
+ return Object.keys(next).length > 0 ? next : null;
50
+ }
51
+ /** Layers the per-issue adapter overrides onto the run's execution config. */
52
+ export function buildIssueRunAdapterConfig(workspaceManagedConfig, issueOverrides) {
53
+ const issueAdapterConfig = issueOverrides?.adapterConfig ?? null;
54
+ return {
55
+ config: { ...workspaceManagedConfig, ...(issueAdapterConfig ?? {}) },
56
+ modelOverride: readIssueRunModelOverride({ adapterConfig: issueAdapterConfig }),
57
+ };
58
+ }
59
+ function findField(schema, key) {
60
+ return schema.fields.find((field) => field.key === key) ?? null;
61
+ }
62
+ function validateIssueRunModelOverrideValue(field, value) {
63
+ const trimmed = value.trim();
64
+ if (!trimmed) {
65
+ throw new IssueRunModelOverrideError(`${field.label} cannot be empty; clear the override instead.`);
66
+ }
67
+ if (field.type === "select") {
68
+ const allowed = (field.options ?? []).map((option) => option.value);
69
+ if (!allowed.includes(trimmed)) {
70
+ throw new IssueRunModelOverrideError(`${field.label} must be one of: ${allowed.join(", ")}.`);
71
+ }
72
+ return trimmed;
73
+ }
74
+ if (!FREE_TEXT_FIELD_TYPES[field.type]) {
75
+ throw new IssueRunModelOverrideError(`${field.label} cannot be overridden per task.`);
76
+ }
77
+ return trimmed;
78
+ }
79
+ /** Validates against the adapter's published config schema, not a server-side list. */
80
+ function validateIssueRunModelOverride(schema, values) {
81
+ const result = {};
82
+ for (const key of ISSUE_RUN_MODEL_OVERRIDE_KEYS) {
83
+ if (!(key in values))
84
+ continue;
85
+ const value = values[key];
86
+ if (value === null || value === undefined) {
87
+ result[key] = null;
88
+ continue;
89
+ }
90
+ const field = findField(schema, key);
91
+ if (!field) {
92
+ throw new IssueRunModelOverrideError(`This agent's adapter does not expose a "${key}" setting.`);
93
+ }
94
+ result[key] = validateIssueRunModelOverrideValue(field, value);
95
+ }
96
+ return result;
97
+ }
98
+ function buildField(key, field, agentConfig, override) {
99
+ if (!field)
100
+ return null;
101
+ const agentDefault = nonEmptyString(agentConfig[key]) ?? nonEmptyString(field.default);
102
+ return {
103
+ key,
104
+ label: field.label,
105
+ hint: field.hint ?? null,
106
+ freeText: Boolean(FREE_TEXT_FIELD_TYPES[field.type]),
107
+ options: (field.options ?? [])
108
+ .filter((option) => option.value.trim())
109
+ .map((option) => ({
110
+ value: option.value,
111
+ label: option.label,
112
+ ...(option.group ? { group: option.group } : {}),
113
+ })),
114
+ agentDefault,
115
+ override,
116
+ effective: override ?? agentDefault,
117
+ };
118
+ }
119
+ export async function buildIssueRunModelOverrideView(input) {
120
+ const stored = readIssueRunModelOverride(input.assigneeAdapterOverrides);
121
+ const base = {
122
+ issueId: input.issueId,
123
+ agentId: input.assigneeAgent?.id ?? null,
124
+ adapterType: input.assigneeAgent?.adapterType ?? null,
125
+ };
126
+ if (!input.assigneeAgent) {
127
+ return {
128
+ ...base,
129
+ supported: false,
130
+ unsupportedReason: "This task has no agent assignee.",
131
+ fields: [],
132
+ };
133
+ }
134
+ const resolved = await resolveAdapterConfigSchema(input.assigneeAgent.adapterType);
135
+ if (!resolved.ok) {
136
+ return {
137
+ ...base,
138
+ supported: false,
139
+ unsupportedReason: resolved.reason === "not_registered"
140
+ ? `Adapter "${input.assigneeAgent.adapterType}" is not registered.`
141
+ : `Adapter "${input.assigneeAgent.adapterType}" does not publish a config schema.`,
142
+ fields: [],
143
+ };
144
+ }
145
+ const agentConfig = asRecord(input.assigneeAgent.adapterConfig);
146
+ const fields = ISSUE_RUN_MODEL_OVERRIDE_KEYS.map((key) => buildField(key, findField(resolved.schema, key), agentConfig, stored[key])).filter((field) => field !== null);
147
+ return {
148
+ ...base,
149
+ supported: fields.length > 0,
150
+ unsupportedReason: fields.length
151
+ ? null
152
+ : `Adapter "${input.assigneeAgent.adapterType}" exposes no model or thinking setting.`,
153
+ fields,
154
+ };
155
+ }
156
+ export async function resolveIssueRunModelOverrideUpdate(input) {
157
+ const clearsOnly = ISSUE_RUN_MODEL_OVERRIDE_KEYS.every((key) => !(key in input.values) || input.values[key] == null);
158
+ if (!input.adapterType) {
159
+ if (clearsOnly)
160
+ return validateIssueRunModelOverride({ fields: [] }, input.values);
161
+ throw new IssueRunModelOverrideError("This task has no agent assignee, so there is no adapter to validate against.");
162
+ }
163
+ const resolved = await resolveAdapterConfigSchema(input.adapterType);
164
+ if (!resolved.ok) {
165
+ if (clearsOnly)
166
+ return validateIssueRunModelOverride({ fields: [] }, input.values);
167
+ throw new IssueRunModelOverrideError(`Adapter "${input.adapterType}" does not publish a config schema.`);
168
+ }
169
+ return validateIssueRunModelOverride(resolved.schema, input.values);
170
+ }
171
+ //# sourceMappingURL=issue-run-model-override.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-run-model-override.js","sourceRoot":"","sources":["../../src/services/issue-run-model-override.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Sat, 19 Sep 2026 00:09:37 GMT
11
+ * Last updated: Fri, 25 Sep 2026 22:04:07 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -3633,7 +3633,7 @@ declare module "node:crypto" {
3633
3633
  hash: HashAlgorithmIdentifier;
3634
3634
  length?: number;
3635
3635
  }
3636
- interface KangarooTwelveParams {
3636
+ interface KangarooTwelveParams extends Algorithm {
3637
3637
  customization?: NodeJS.BufferSource;
3638
3638
  outputLength: number;
3639
3639
  }
@@ -3706,7 +3706,7 @@ declare module "node:crypto" {
3706
3706
  interface RsaPssParams extends Algorithm {
3707
3707
  saltLength: number;
3708
3708
  }
3709
- interface TurboShakeParams {
3709
+ interface TurboShakeParams extends Algorithm {
3710
3710
  domainSeparation?: number;
3711
3711
  outputLength: number;
3712
3712
  }
@@ -284,7 +284,7 @@ declare module "node:dgram" {
284
284
  * and the `'connect'` event is emitted on the next tick. Trying to call
285
285
  * `connectSync()` on an already connected socket throws an
286
286
  * `ERR_SOCKET_DGRAM_IS_CONNECTED` exception, and calling it while an
287
- * asynchronous [`socket.bind()`][] is still in progress throws an
287
+ * asynchronous `socket.bind()` is still in progress throws an
288
288
  * `ERR_SOCKET_ALREADY_BOUND` exception.
289
289
  *
290
290
  * `address` must be a numeric IP literal; `connectSync()` never performs DNS
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "26.6.2",
3
+ "version": "26.6.3",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -135,6 +135,6 @@
135
135
  "undici-types": "~8.9.0"
136
136
  },
137
137
  "peerDependencies": {},
138
- "typesPublisherContentHash": "6fd8885e736abe0d2ec8284c43e09a6a80eeced090dc6974536c890169d46439",
138
+ "typesPublisherContentHash": "d205e8413ec98b6ead53b0e2aa6084db2f7fcdd0280e0098ec6349f7f7962bb4",
139
139
  "typeScriptVersion": "5.6"
140
140
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tickernelz/paperclip-pro-server",
3
- "version": "2026.925.1",
3
+ "version": "2026.926.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/tickernelz/paperclip-pro",
6
6
  "bugs": {
@@ -45,24 +45,24 @@
45
45
  "@discordjs/ws": "1.2.3",
46
46
  "@grpc/grpc-js": "1.14.4",
47
47
  "@opentelemetry/api": "^1.9.0",
48
- "@tickernelz/paperclip-pro-adapter-claude-local": "2026.925.1",
49
- "@tickernelz/paperclip-pro-adapter-codex-local": "2026.925.1",
50
- "@tickernelz/paperclip-pro-adapter-cursor-cloud": "2026.925.1",
51
- "@tickernelz/paperclip-pro-adapter-cursor-local": "2026.925.1",
52
- "@tickernelz/paperclip-pro-adapter-gemini-local": "2026.925.1",
53
- "@tickernelz/paperclip-pro-adapter-grok-local": "2026.925.1",
54
- "@tickernelz/paperclip-pro-adapter-kimi-local": "2026.925.1",
55
- "@tickernelz/paperclip-pro-adapter-openclaw-gateway": "2026.925.1",
56
- "@tickernelz/paperclip-pro-adapter-omp-local": "2026.925.1",
57
- "@tickernelz/paperclip-pro-adapter-opencode-local": "2026.925.1",
58
- "@tickernelz/paperclip-pro-adapter-pi-local": "2026.925.1",
59
- "@tickernelz/paperclip-pro-adapter-utils": "2026.925.1",
60
- "@tickernelz/paperclip-pro-db": "2026.925.1",
61
- "@tickernelz/paperclip-pro-hermes-paperclip-adapter": "2026.925.1",
62
- "@tickernelz/paperclip-pro-mcp-server": "2026.925.1",
63
- "@tickernelz/paperclip-pro-plugin-sdk": "2026.925.1",
64
- "@tickernelz/paperclip-pro-shared": "2026.925.1",
65
- "@tickernelz/paperclip-pro-skills-catalog": "2026.925.1",
48
+ "@tickernelz/paperclip-pro-adapter-claude-local": "2026.926.0",
49
+ "@tickernelz/paperclip-pro-adapter-codex-local": "2026.926.0",
50
+ "@tickernelz/paperclip-pro-adapter-cursor-cloud": "2026.926.0",
51
+ "@tickernelz/paperclip-pro-adapter-cursor-local": "2026.926.0",
52
+ "@tickernelz/paperclip-pro-adapter-gemini-local": "2026.926.0",
53
+ "@tickernelz/paperclip-pro-adapter-grok-local": "2026.926.0",
54
+ "@tickernelz/paperclip-pro-adapter-kimi-local": "2026.926.0",
55
+ "@tickernelz/paperclip-pro-adapter-openclaw-gateway": "2026.926.0",
56
+ "@tickernelz/paperclip-pro-adapter-omp-local": "2026.926.0",
57
+ "@tickernelz/paperclip-pro-adapter-opencode-local": "2026.926.0",
58
+ "@tickernelz/paperclip-pro-adapter-pi-local": "2026.926.0",
59
+ "@tickernelz/paperclip-pro-adapter-utils": "2026.926.0",
60
+ "@tickernelz/paperclip-pro-db": "2026.926.0",
61
+ "@tickernelz/paperclip-pro-hermes-paperclip-adapter": "2026.926.0",
62
+ "@tickernelz/paperclip-pro-mcp-server": "2026.926.0",
63
+ "@tickernelz/paperclip-pro-plugin-sdk": "2026.926.0",
64
+ "@tickernelz/paperclip-pro-shared": "2026.926.0",
65
+ "@tickernelz/paperclip-pro-skills-catalog": "2026.926.0",
66
66
  "@photon-ai/advanced-imessage": "2.1.0",
67
67
  "@vercel/connect": "0.6.1",
68
68
  "acorn": "8.18.0",
@@ -112,7 +112,7 @@
112
112
  "acpx"
113
113
  ],
114
114
  "devDependencies": {
115
- "@tickernelz/paperclip-pro-paperclip-runner": "2026.925.1",
115
+ "@tickernelz/paperclip-pro-paperclip-runner": "2026.926.0",
116
116
  "@types/express": "^5.0.0",
117
117
  "@types/express-serve-static-core": "^5.1.3",
118
118
  "@types/jsdom": "^30.0.0",
@@ -1 +1 @@
1
- var b=Object.defineProperty;var o=(a,e)=>b(a,"name",{value:e,configurable:!0});import{i as C}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as E,Lr as w,S as v,c as N,l as A,lt as h,n as R,o as z,pt as k}from"./createLucideIcon-D-iIM3hK.js";var m=C(w(),1),i=C(E(),1),y=Object.defineProperty,g=o((a,e)=>y(a,"name",{value:e,configurable:!0}),"__name"),I="Avatar",[T,X]=N(I),F=[0,()=>{}],[P,_]=T(I),M=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,...n}=e,[r,u]=m.useState("idle"),[c,l]=S();return(0,i.jsx)(P,{scope:s,imageLoadingStatus:r,setImageLoadingStatus:u,imageCount:c,setImageCount:l,children:(0,i.jsx)(A.span,{...n,ref:t})})},"Avatar2"),"Avatar")),U="AvatarImage",q=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,src:n,onLoadingStatusChange:r,...u}=e,c=_(U,s);c.setImageCount;const l=j(n,{referrerPolicy:u.referrerPolicy,crossOrigin:u.crossOrigin,loadingStatus:c.imageLoadingStatus,setLoadingStatus:c.setImageLoadingStatus}),d=R(f=>{r?.(f)}),p=m.useRef(l);return z(()=>{const f=p.current;p.current=l,l!==f&&d(l)},[l,d]),l==="loaded"?(0,i.jsx)(A.img,{...u,ref:t,src:n}):null},"AvatarImage2"),"AvatarImage")),O="AvatarFallback",G=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,delayMs:n,...r}=e,u=_(O,s),[c,l]=m.useState(n===void 0);return m.useEffect(()=>{if(n!==void 0){const d=window.setTimeout(()=>l(!0),n);return()=>window.clearTimeout(d)}},[n]),c&&u.imageLoadingStatus!=="loaded"?(0,i.jsx)(A.span,{...r,ref:t}):null},"AvatarFallback2"),"AvatarFallback"));function j(a,{loadingStatus:e,setLoadingStatus:t,referrerPolicy:s,crossOrigin:n}){return z(()=>{if(!a){t("error");return}const r=new window.Image,u=g(l=>{const d=l.currentTarget;t(x(d))},"handleLoad"),c=g(()=>t("error"),"handleError");return r.addEventListener("load",u),r.addEventListener("error",c),s&&(r.referrerPolicy=s),r.crossOrigin=n??null,r.src=a,t(x(r)),()=>{r.removeEventListener("load",u),r.removeEventListener("error",c),t("idle")}},[a,n,s,t]),e}o(j,"useImageLoadingStatus");g(j,"useImageLoadingStatus");function x(a){return a.complete?a.naturalWidth>0?"loaded":"error":"loading"}o(x,"getImageLoadingStatus");g(x,"getImageLoadingStatus");function S(){return F}o(S,"useImageCount");g(S,"useImageCount");function W(a){}o(W,"useUpdateImageCount");g(W,"useUpdateImageCount");function $({className:a,size:e="default",shape:t="circle",...s}){return(0,i.jsx)(M,{"data-slot":"avatar","data-size":e,"data-shape":t,className:v("group/avatar relative flex size-8 shrink-0 overflow-hidden select-none data-[size=lg]:size-10 data-[size=sm]:size-6 data-[size=xs]:size-5",t==="square"?"rounded-md":"rounded-full",a),...s})}o($,"Avatar");function B({className:a,...e}){return(0,i.jsx)(q,{"data-slot":"avatar-image",className:v("aspect-square size-full object-cover",a),...e})}o(B,"AvatarImage");function K({className:a,...e}){return(0,i.jsx)(G,{"data-slot":"avatar-fallback",className:v("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[shape=square]/avatar:rounded-md group-data-[size=sm]/avatar:text-xs group-data-[size=xs]/avatar:text-(length:--text-nano)",a),...e})}o(K,"AvatarFallback");function Y({className:a,...e}){return(0,i.jsx)("div",{"data-slot":"avatar-group",className:v("*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2",a),...e})}o(Y,"AvatarGroup");function Z({className:a,...e}){return(0,i.jsx)("div",{"data-slot":"avatar-group-count",className:v("bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",a),...e})}o(Z,"AvatarGroupCount");function L(a){const e=a.trim().split(/\s+/);return e.length>=2?(e[0][0]+e[e.length-1][0]).toUpperCase():a.slice(0,2).toUpperCase()}o(L,"deriveInitials");var V={xs:"text-sm",sm:"text-xs",default:"text-sm",lg:"text-sm"};function aa({name:a,avatarUrl:e,initials:t,size:s="default",shape:n="circle",className:r}){const u=t??L(a);return(0,i.jsxs)("span",{className:v("inline-flex min-w-0 gap-1.5 items-center",s==="xs"&&"gap-1",s==="lg"&&"gap-2",r),title:a,children:[(0,i.jsxs)($,{size:s,shape:n,children:[e&&(0,i.jsx)(B,{src:e,alt:a}),(0,i.jsx)(K,{children:u})]}),(0,i.jsx)("span",{className:v("truncate",V[s]),children:a})]})}o(aa,"Identity");var D={16:"size-4",20:"size-5",24:"size-6",32:"size-8",40:"size-10",48:"size-12",64:"size-16",96:"size-24",128:"size-32",256:"size-64",512:"size-128"};function ea({agent:a,appearance:e,size:t=24,name:s,label:n,pose:r="rest",muted:u=!1,className:c}){const l=k(e??a?.appearance,a?.id),d=h(l,t,1,r,u),[p,f]=(0,m.useState)(null);return(0,i.jsx)("span",{"data-slot":"agent-avatar",className:v("relative inline-flex shrink-0 items-center justify-center align-middle",D[t],c),role:n?"img":void 0,"aria-label":n,"aria-hidden":n?void 0:!0,children:p===d?(0,i.jsx)("span",{className:"text-xs text-muted-foreground",children:L(s??a?.name??"Agent")}):(0,i.jsx)("img",{src:d,srcSet:`${h(l,t,2,r,u)} 2x`,alt:"",width:t,height:t,decoding:"async",loading:"lazy",className:"size-full object-contain",onError:o(()=>f(d),"onError")})})}o(ea,"AgentAvatar");export{$ as a,Z as c,L as i,B as l,D as n,K as o,aa as r,Y as s,ea as t};
1
+ var b=Object.defineProperty;var o=(a,e)=>b(a,"name",{value:e,configurable:!0});import{i as C}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as E,Lr as w,S as v,c as N,l as A,lt as h,n as R,o as z,pt as k}from"./createLucideIcon-CINAT48M.js";var m=C(w(),1),i=C(E(),1),y=Object.defineProperty,g=o((a,e)=>y(a,"name",{value:e,configurable:!0}),"__name"),I="Avatar",[T,X]=N(I),F=[0,()=>{}],[P,_]=T(I),M=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,...n}=e,[r,u]=m.useState("idle"),[c,l]=S();return(0,i.jsx)(P,{scope:s,imageLoadingStatus:r,setImageLoadingStatus:u,imageCount:c,setImageCount:l,children:(0,i.jsx)(A.span,{...n,ref:t})})},"Avatar2"),"Avatar")),U="AvatarImage",q=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,src:n,onLoadingStatusChange:r,...u}=e,c=_(U,s);c.setImageCount;const l=j(n,{referrerPolicy:u.referrerPolicy,crossOrigin:u.crossOrigin,loadingStatus:c.imageLoadingStatus,setLoadingStatus:c.setImageLoadingStatus}),d=R(f=>{r?.(f)}),p=m.useRef(l);return z(()=>{const f=p.current;p.current=l,l!==f&&d(l)},[l,d]),l==="loaded"?(0,i.jsx)(A.img,{...u,ref:t,src:n}):null},"AvatarImage2"),"AvatarImage")),O="AvatarFallback",G=m.forwardRef(g(o(function(e,t){const{__scopeAvatar:s,delayMs:n,...r}=e,u=_(O,s),[c,l]=m.useState(n===void 0);return m.useEffect(()=>{if(n!==void 0){const d=window.setTimeout(()=>l(!0),n);return()=>window.clearTimeout(d)}},[n]),c&&u.imageLoadingStatus!=="loaded"?(0,i.jsx)(A.span,{...r,ref:t}):null},"AvatarFallback2"),"AvatarFallback"));function j(a,{loadingStatus:e,setLoadingStatus:t,referrerPolicy:s,crossOrigin:n}){return z(()=>{if(!a){t("error");return}const r=new window.Image,u=g(l=>{const d=l.currentTarget;t(x(d))},"handleLoad"),c=g(()=>t("error"),"handleError");return r.addEventListener("load",u),r.addEventListener("error",c),s&&(r.referrerPolicy=s),r.crossOrigin=n??null,r.src=a,t(x(r)),()=>{r.removeEventListener("load",u),r.removeEventListener("error",c),t("idle")}},[a,n,s,t]),e}o(j,"useImageLoadingStatus");g(j,"useImageLoadingStatus");function x(a){return a.complete?a.naturalWidth>0?"loaded":"error":"loading"}o(x,"getImageLoadingStatus");g(x,"getImageLoadingStatus");function S(){return F}o(S,"useImageCount");g(S,"useImageCount");function W(a){}o(W,"useUpdateImageCount");g(W,"useUpdateImageCount");function $({className:a,size:e="default",shape:t="circle",...s}){return(0,i.jsx)(M,{"data-slot":"avatar","data-size":e,"data-shape":t,className:v("group/avatar relative flex size-8 shrink-0 overflow-hidden select-none data-[size=lg]:size-10 data-[size=sm]:size-6 data-[size=xs]:size-5",t==="square"?"rounded-md":"rounded-full",a),...s})}o($,"Avatar");function B({className:a,...e}){return(0,i.jsx)(q,{"data-slot":"avatar-image",className:v("aspect-square size-full object-cover",a),...e})}o(B,"AvatarImage");function K({className:a,...e}){return(0,i.jsx)(G,{"data-slot":"avatar-fallback",className:v("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[shape=square]/avatar:rounded-md group-data-[size=sm]/avatar:text-xs group-data-[size=xs]/avatar:text-(length:--text-nano)",a),...e})}o(K,"AvatarFallback");function Y({className:a,...e}){return(0,i.jsx)("div",{"data-slot":"avatar-group",className:v("*:data-[slot=avatar]:ring-background group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2",a),...e})}o(Y,"AvatarGroup");function Z({className:a,...e}){return(0,i.jsx)("div",{"data-slot":"avatar-group-count",className:v("bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",a),...e})}o(Z,"AvatarGroupCount");function L(a){const e=a.trim().split(/\s+/);return e.length>=2?(e[0][0]+e[e.length-1][0]).toUpperCase():a.slice(0,2).toUpperCase()}o(L,"deriveInitials");var V={xs:"text-sm",sm:"text-xs",default:"text-sm",lg:"text-sm"};function aa({name:a,avatarUrl:e,initials:t,size:s="default",shape:n="circle",className:r}){const u=t??L(a);return(0,i.jsxs)("span",{className:v("inline-flex min-w-0 gap-1.5 items-center",s==="xs"&&"gap-1",s==="lg"&&"gap-2",r),title:a,children:[(0,i.jsxs)($,{size:s,shape:n,children:[e&&(0,i.jsx)(B,{src:e,alt:a}),(0,i.jsx)(K,{children:u})]}),(0,i.jsx)("span",{className:v("truncate",V[s]),children:a})]})}o(aa,"Identity");var D={16:"size-4",20:"size-5",24:"size-6",32:"size-8",40:"size-10",48:"size-12",64:"size-16",96:"size-24",128:"size-32",256:"size-64",512:"size-128"};function ea({agent:a,appearance:e,size:t=24,name:s,label:n,pose:r="rest",muted:u=!1,className:c}){const l=k(e??a?.appearance,a?.id),d=h(l,t,1,r,u),[p,f]=(0,m.useState)(null);return(0,i.jsx)("span",{"data-slot":"agent-avatar",className:v("relative inline-flex shrink-0 items-center justify-center align-middle",D[t],c),role:n?"img":void 0,"aria-label":n,"aria-hidden":n?void 0:!0,children:p===d?(0,i.jsx)("span",{className:"text-xs text-muted-foreground",children:L(s??a?.name??"Agent")}):(0,i.jsx)("img",{src:d,srcSet:`${h(l,t,2,r,u)} 2x`,alt:"",width:t,height:t,decoding:"async",loading:"lazy",className:"size-full object-contain",onError:o(()=>f(d),"onError")})})}o(ea,"AgentAvatar");export{$ as a,Z as c,L as i,B as l,D as n,K as o,aa as r,Y as s,ea as t};
@@ -1 +1 @@
1
- var m=Object.defineProperty;var r=(t,e)=>m(t,"name",{value:e,configurable:!0});import{i}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as x,S as n}from"./createLucideIcon-D-iIM3hK.js";import{t as l}from"./AgentAvatar-BR1Z_L_Z.js";var s=i(x(),1);function f({agent:t,size:e="default",className:a}){return(0,s.jsxs)("span",{title:t.name,className:n("inline-flex min-w-0 items-center gap-1.5",a),children:[(0,s.jsx)(l,{agent:t,size:{xs:20,sm:24,default:32,lg:40}[e]}),(0,s.jsx)("span",{className:n("truncate",e==="sm"?"text-xs":"text-sm"),children:t.name??"Agent"})]})}r(f,"AgentIdentity");export{f as t};
1
+ var m=Object.defineProperty;var r=(t,e)=>m(t,"name",{value:e,configurable:!0});import{i}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as x,S as n}from"./createLucideIcon-CINAT48M.js";import{t as l}from"./AgentAvatar-CWNp7Eqe.js";var s=i(x(),1);function f({agent:t,size:e="default",className:a}){return(0,s.jsxs)("span",{title:t.name,className:n("inline-flex min-w-0 items-center gap-1.5",a),children:[(0,s.jsx)(l,{agent:t,size:{xs:20,sm:24,default:32,lg:40}[e]}),(0,s.jsx)("span",{className:n("truncate",e==="sm"?"text-xs":"text-sm"),children:t.name??"Agent"})]})}r(f,"AgentIdentity");export{f as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CsQMjEpO.js","assets/rolldown-runtime-ZpX3ckPj.js","assets/createLucideIcon-D-iIM3hK.js","assets/preload-helper-CceJXRIF.js","assets/router-BxwR1PwE.js","assets/zap-gf6Ev631.js","assets/agents-DrLpWAcm.js","assets/EmptyState-DOb3I5aU.js","assets/button-DCI8NFig.js","assets/RoutineRunVariablesDialog-BkLLbP3a.js","assets/mention-chips-pBjlxGok.js","assets/bot-CET4VfU-.js","assets/MarkdownEditor-B3NYD32f.js","assets/dist-Cc3Bt6H4.js","assets/dist-B3Uu-urE.js","assets/AgentAvatar-BR1Z_L_Z.js","assets/dist-DCJXgQu0.js","assets/sheet-Z4n6AEBA.js","assets/checkbox-CmYq-YMP.js","assets/check-C6myARng.js","assets/chevron-right-CU6xIk8W.js","assets/label-C-aWneNy.js","assets/StatusIcon-DMDp_WJw.js","assets/clipboard-BZT4l65i.js","assets/loader-circle-DwlcG9aS.js","assets/octagon-alert-CTp78pR9.js","assets/select-BqqjvKLd.js","assets/chevron-down-D2wNtbQf.js","assets/heartbeats-CY77VTM_.js","assets/useHiddenSettings-D9d6LOsg.js","assets/health-Dc13TJNg.js","assets/rotate-ccw-BhopZISX.js","assets/triangle-alert-DOta-xfM.js","assets/badge-BLr1M3ne.js","assets/environments-Cd-g_MmN.js","assets/input-BkGpMopE.js","assets/company-members-C1IoXITE.js","assets/AgentIdentity-BgihkjQU.js","assets/card-BD8MkPAL.js","assets/PageSkeleton-C-C3Xlc_.js","assets/skeleton-BxD7FB8M.js","assets/tabs-Dqn3cNzC.js","assets/use-adapter-capabilities-0-4PhK9y.js","assets/save-D5KpMLil.js","assets/external-link-BKz-OKDG.js","assets/MarkdownBody-AdwNLx7A.js","assets/file-text-DXa-cUrm.js","assets/SidebarContext-9UFQ2Pex.js","assets/index-CWuperHN.css"])))=>i.map(i=>d[i]);
2
- var Pe=Object.defineProperty;var n=(e,a)=>Pe(e,"name",{value:a,configurable:!0});import{i as oe}from"./rolldown-runtime-ZpX3ckPj.js";import{En as ke,Fr as qe,Lr as Me,S as B,U as Fe,Y as j,_ as ce,g as U,nr as N,z as Re}from"./createLucideIcon-D-iIM3hK.js";import{t as $e}from"./preload-helper-CceJXRIF.js";import{it as Be,o as ze,t as de}from"./router-BxwR1PwE.js";import{S as Ke}from"./zap-gf6Ev631.js";import{t as ue}from"./AgentAvatar-BR1Z_L_Z.js";import{t as Oe}from"./tabs-Dqn3cNzC.js";import{t as ae}from"./agents-DrLpWAcm.js";import{r as De,t as re}from"./EmptyState-DOb3I5aU.js";import{t as ie}from"./bot-CET4VfU-.js";import{k as Ue,t as V}from"./button-DCI8NFig.js";import{i as Ve,o as He,t as Ge}from"./heartbeats-CY77VTM_.js";import{t as me}from"./triangle-alert-DOta-xfM.js";import{n as Qe}from"./SidebarContext-9UFQ2Pex.js";import{n as Je,t as le}from"./environments-Cd-g_MmN.js";import{t as Ye}from"./PageSkeleton-C-C3Xlc_.js";import{$t as We,It as Xe,Jt as Ze,Lt as pe,Wt as H,Yt as et,an as ge,cn as tt,dn as st,in as nt,nn as xe,on as G,rn as at,sn as rt,un as fe}from"./index-CsQMjEpO.js";var g=oe(Me(),1),t=oe(qe(),1),he=ke,it=(0,g.lazy)(()=>$e(()=>import("./index-CsQMjEpO.js").then(e=>e.wt).then(e=>({default:e.ConfigureBuiltInAgentModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48]))),lt=["all","active","paused","error","builtin"],ot=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"paused",label:"Paused"},{value:"error",label:"Error"},{value:"builtin",label:"Built-in"}];function ct(e){return lt.includes(e)}n(ct,"isFilterTab");var J={label:"Local",detail:"Paperclip host",title:"Local - Paperclip host"},ve={label:"—",detail:"Loading environment",title:"Loading environment"},be=new Set(["terminated","pending_approval"]);function je(e,a){return a==="all"?!0:a==="active"?e==="active"||e==="running"||e==="idle":a==="paused"?e==="paused":a==="error"?e==="error":!0}n(je,"matchesFilter");function dt(e,a,i){return e.filter(r=>be.has(r.status)?!1:a==="builtin"?i.has(r.id):je(r.status,a)).sort((r,o)=>r.name.localeCompare(o.name))}n(dt,"filterAgents");function ut(e){const a=e.adapterConfig?.model;if(typeof a!="string")return null;const i=a.trim();return i.length>0?i:null}n(ut,"getConfiguredModel");function mt(e){return e==="ssh"?"SSH":e.charAt(0).toUpperCase()+e.slice(1)}n(mt,"formatEnvironmentDriver");function pt(e,a){const i=typeof e.config.provider=="string"?e.config.provider.trim():"";return i?a?.sandboxProviders?.[i]?.displayName??i:"Sandbox"}n(pt,"getSandboxProviderLabel");function gt(e,a){const i=Ze(e)?"Managed by Paperclip":e.driver==="sandbox"?`${pt(e,a)} sandbox provider`:e.driver==="local"?"Paperclip host":mt(e.driver);return{label:e.name,detail:i,title:`${e.name} - ${i}`}}n(gt,"describeEnvironment");function xt(e){return{label:"Unknown environment",detail:e.slice(0,8),title:`Unknown environment - ${e}`}}n(xt,"describeMissingEnvironment");function ft(e,a,i,r){const o=e.defaultEnvironmentId??i;if(!o)return J;const x=a.get(o);return x?gt(x,r):xt(o)}n(ft,"resolveAgentEnvironment");function Ne(e,a,i){return e.reduce((r,o)=>{const x=Ne(o.reports,a,i);return be.has(o.status)?(r.push(...x),r):(((a==="builtin"?i.has(o.id):je(o.status,a))||x.length>0)&&r.push({...o,reports:x}),r)},[]).sort((r,o)=>r.name.localeCompare(o.name))}n(Ne,"filterOrgTree");function Mt(){const{selectedCompanyId:e}=Fe(),{openNewAgent:a}=Ve(),{setBreadcrumbs:i}=De(),r=ze(),o=Be(),{isMobile:x}=Qe(),C=o.pathname.split("/").pop()??"all",v=ct(C)?C:"all",[S,m]=(0,g.useState)("org"),A=x,p=A?"list":S,{data:l}=N({queryKey:j.instance.settings,queryFn:n(()=>Je.get(),"queryFn"),enabled:!!e}),u=l?.experimental.enableBuiltInAgents===!0,h=v==="builtin"&&!u?"all":v,z=(0,g.useMemo)(()=>ot.filter(s=>s.value!=="builtin"||u),[u]),{data:E}=N({queryKey:j.builtInAgents.list(e),queryFn:n(()=>st.list(e),"queryFn"),enabled:!!e&&u}),b=(0,g.useMemo)(()=>{const s=new Map;if(!u)return s;for(const c of E??[])c.agentId&&s.set(c.agentId,c);return s},[E,u]),k=(0,g.useMemo)(()=>new Set(b.keys()),[b]),[y,_]=(0,g.useState)(null),{data:d,isLoading:Ie,error:Y}=N({queryKey:j.agents.list(e),queryFn:n(()=>ae.list(e),"queryFn"),enabled:!!e}),{data:T}=N({queryKey:j.org(e),queryFn:n(()=>ae.org(e),"queryFn"),enabled:!!e&&p==="org"}),q=l?.experimental.enableEnvironments===!0,{data:L}=N({queryKey:j.environments.list(e),queryFn:n(()=>le.list(e),"queryFn"),enabled:!!e&&q}),{data:W}=N({queryKey:j.environments.capabilities(e),queryFn:n(()=>le.capabilities(e),"queryFn"),enabled:!!e&&q}),X=[...j.liveRuns(e),"agents-page"],K=nt({companyId:e,resourceKey:"live-runs:agents-page",queryKey:X,enabled:!!e,refetchInterval:15e3,leaderOnly:!0}),{data:O,dataUpdatedAt:Ce}=N({queryKey:X,queryFn:n(()=>Ge.liveRunsForCompany(e),"queryFn"),enabled:K.enabled,refetchInterval:K.refetchInterval});at(K,O,Ce);const M=tt(e),f=rt(e),F=(0,g.useMemo)(()=>{const s=new Map;for(const c of O??[]){if(c.status!=="running"&&c.status!=="queued")continue;const P=s.get(c.agentId);if(P){P.liveCount+=1;continue}s.set(c.agentId,{runId:c.id,liveCount:1})}return s},[O]),Se=(0,g.useMemo)(()=>{const s=new Map;for(const c of d??[])s.set(c.id,c);return s},[d]),Z=(0,g.useMemo)(()=>{const s=new Map;for(const c of L??[])s.set(c.id,c);return s},[L]),ee=(0,g.useMemo)(()=>{const s=new Map;for(const c of d??[])s.set(c.id,ft(c,Z,l?.defaultEnvironmentId??null,W));return s},[d,Z,W,l?.defaultEnvironmentId]);if((0,g.useEffect)(()=>{i([{label:"Agents"}])},[i]),(0,g.useEffect)(()=>{e&&v==="builtin"&&l&&!u&&r("/agents/all",{replace:!0})},[u,l,r,v,e]),!e)return(0,t.jsx)(re,{icon:ie,message:"Select a company to view agents."});if(Ie)return(0,t.jsx)(Ye,{variant:"list"});const w=dt(d??[],h,k),D=Ne(T??[],h,k),te=q&&L===void 0,se=q&&(L===void 0||L.length>1),Ae=n(s=>te?ve:ee.get(s)??J,"resolveRenderedEnvironment"),Ee=n(s=>{const c=s.orgChainHealth?.status==="invalid_org_chain",P=f.isPending&&f.variables?.resourceType==="agent"&&f.variables.resourceId===s.id,_e=P&&f.variables?.starred!==void 0,ne=P&&f.variables?.starred===void 0,Te=ge(M.data,"agent",s.id),I=b.get(s.id),Le=I?.status==="needs_setup"||I?.status==="pending_approval",R=I&&Le?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(fe,{status:I.status}),I.status==="needs_setup"&&(0,t.jsx)("span",{onClick:n($=>{$.preventDefault(),$.stopPropagation()},"onClick"),children:(0,t.jsx)(V,{size:"xs",variant:"outline",onClick:n(()=>_(I),"onClick"),children:"Set up"})})]}):null;return(0,t.jsx)(Xe,{title:s.name,titleClassName:"flex-1 xl:flex-none xl:w-56",titleTextClassName:"whitespace-normal break-words xl:truncate xl:whitespace-nowrap",subtitleClassName:"whitespace-normal break-words xl:truncate xl:whitespace-nowrap",subtitle:`${he[s.role]??s.role}${s.title?` - ${s.title}`:""}`,to:ce(s),className:B("group",s.pausedAt&&h!=="paused"?"opacity-50":"",G(M.data,"agent",s.id)==="left"?"sm:text-foreground/55":""),leading:c?(0,t.jsx)(me,{className:"h-3.5 w-3.5 text-amber-500","aria-label":"Invalid reporting chain"}):(0,t.jsx)(ue,{agent:s,size:32}),secondaryRow:R?(0,t.jsx)("div",{className:"xl:hidden flex flex-wrap items-center gap-1.5",children:R}):void 0,meta:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[R&&(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-1.5",children:R}),(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-3",children:(0,t.jsx)(we,{agent:s,environment:Ae(s.id),showEnvironment:se})})]}),metaSpacerClassName:"hidden xl:block",trailing:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("div",{className:"hidden sm:flex items-center gap-3",children:[F.has(s.id)&&(0,t.jsx)(Q,{agentRef:U(s),runId:F.get(s.id).runId,liveCount:F.get(s.id).liveCount}),(0,t.jsx)("span",{className:"w-20 flex justify-end",children:(0,t.jsx)(H,{status:s.status})}),(0,t.jsx)(xe,{size:"row",starred:Te,pending:_e,resourceName:s.name,onToggle:n($=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,starred:$}),"onToggle")})]}),(0,t.jsx)(pe,{state:G(M.data,"agent",s.id),pending:ne,pendingState:ne?f.variables?.state??null:null,resourceName:s.name,onJoin:n(()=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,state:"joined"}),"onJoin"),onLeave:n(()=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,state:"left"}),"onLeave")})]})},s.id)},"renderAgentRow");return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,t.jsx)(Oe,{value:h,onValueChange:n(s=>r(`/agents/${s}`),"onValueChange"),children:(0,t.jsx)(We,{items:z,value:h,onValueChange:n(s=>r(`/agents/${s}`),"onValueChange")})}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[!A&&(0,t.jsxs)("div",{className:"flex items-center border border-border",role:"group","aria-label":"View mode",children:[(0,t.jsx)("button",{className:B("p-1.5 transition-colors",p==="list"?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50"),onClick:n(()=>m("list"),"onClick"),title:"List view","aria-label":"List view","aria-pressed":p==="list",children:(0,t.jsx)(He,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{className:B("p-1.5 transition-colors",p==="org"?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50"),onClick:n(()=>m("org"),"onClick"),title:"Org chart view","aria-label":"Org chart view","aria-pressed":p==="org",children:(0,t.jsx)(Ke,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)(V,{size:"sm",variant:"outline",onClick:a,children:[(0,t.jsx)(Ue,{className:"h-3.5 w-3.5 mr-1.5"}),"New Agent"]})]})]}),w.length>0&&(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[w.length," agent",w.length!==1?"s":""]}),Y&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:Y.message}),d&&d.length===0&&(0,t.jsx)(re,{icon:ie,message:"Create your first agent to get started.",action:"New Agent",onAction:a}),p==="list"&&w.length>0&&(0,t.jsx)("div",{children:w.map(Ee)}),p==="list"&&d&&d.length>0&&w.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No agents match the selected status."}),p==="org"&&D.length>0&&(0,t.jsx)("div",{className:"py-1",children:D.map(s=>(0,t.jsx)(ye,{node:s,depth:0,agentMap:Se,liveRunByAgent:F,environmentByAgentId:ee,environmentDataLoading:te,showEnvironment:se,tab:h,memberships:M.data,membershipMutation:f,builtInByAgentId:b,onConfigureBuiltIn:_},s.id))}),p==="org"&&T&&T.length>0&&D.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No agents match the selected status."}),p==="org"&&T&&T.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No organizational hierarchy defined."}),y&&e&&(0,t.jsx)(g.Suspense,{fallback:null,children:(0,t.jsx)(it,{companyId:e,state:y,open:y!==null,onOpenChange:n(s=>{s||_(null)},"onOpenChange")})})]})}n(Mt,"Agents");function ye({node:e,depth:a,agentMap:i,liveRunByAgent:r,environmentByAgentId:o,environmentDataLoading:x,showEnvironment:C,tab:v,memberships:S,membershipMutation:m,builtInByAgentId:A,onConfigureBuiltIn:p}){const l=i.get(e.id),u=A.get(e.id),h=u?.status==="needs_setup"||u?.status==="pending_approval",z=!!(l&&l.orgChainHealth?.status==="invalid_org_chain"),E=G(S,"agent",e.id),b=m.isPending&&m.variables?.resourceType==="agent"&&m.variables.resourceId===e.id,k=b&&m.variables?.starred!==void 0,y=b&&m.variables?.starred===void 0,_=ge(S,"agent",e.id);return(0,t.jsxs)("div",{style:{paddingLeft:a*24},children:[(0,t.jsxs)(de,{to:l?ce(l):`/agents/${e.id}`,className:B("group flex items-center gap-3 rounded-lg px-3 py-2 hover:bg-accent/50 transition-colors w-full text-left no-underline text-inherit",l?.pausedAt&&v!=="paused"&&"opacity-50",E==="left"&&"sm:text-foreground/55"),children:[z?(0,t.jsx)(me,{className:"h-3.5 w-3.5 shrink-0 text-amber-500","aria-label":"Invalid reporting chain"}):(0,t.jsx)(ue,{agent:l??e,size:24}),(0,t.jsxs)("div",{className:"flex-1 min-w-0 flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("div",{className:"min-w-(--sz-7rem) truncate",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground ml-2",children:[he[e.role]??e.role,l?.title?` - ${l.title}`:""]})]}),u&&h&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,t.jsx)(fe,{status:u.status}),u.status==="needs_setup"&&(0,t.jsx)("span",{onClick:n(d=>{d.preventDefault(),d.stopPropagation()},"onClick"),children:(0,t.jsx)(V,{size:"xs",variant:"outline",onClick:n(()=>p(u),"onClick"),children:"Set up"})})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[(0,t.jsx)("span",{className:"sm:hidden",children:r.has(e.id)?(0,t.jsx)(Q,{agentRef:l?U(l):e.id,runId:r.get(e.id).runId,liveCount:r.get(e.id).liveCount}):(0,t.jsx)(H,{status:e.status})}),(0,t.jsxs)("div",{className:"hidden sm:flex items-center gap-3",children:[r.has(e.id)&&(0,t.jsx)(Q,{agentRef:l?U(l):e.id,runId:r.get(e.id).runId,liveCount:r.get(e.id).liveCount}),l&&(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-3",children:(0,t.jsx)(we,{agent:l,environment:x?ve:o.get(l.id)??J,showEnvironment:C})}),(0,t.jsx)("span",{className:"w-20 flex justify-end",children:(0,t.jsx)(H,{status:e.status})})]}),(0,t.jsx)(pe,{state:E,pending:y,pendingState:y?m.variables?.state:null,resourceName:e.name,onJoin:n(()=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,state:"joined"}),"onJoin"),onLeave:n(()=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,state:"left"}),"onLeave")}),(0,t.jsx)("div",{className:"hidden sm:flex items-center gap-3",children:(0,t.jsx)(xe,{size:"row",starred:_,pending:k,resourceName:e.name,onToggle:n(d=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,starred:d}),"onToggle")})})]})]}),e.reports&&e.reports.length>0&&(0,t.jsx)("div",{className:"border-l border-border ml-4",children:e.reports.map(d=>(0,t.jsx)(ye,{node:d,depth:a+1,agentMap:i,liveRunByAgent:r,environmentByAgentId:o,environmentDataLoading:x,showEnvironment:C,tab:v,memberships:S,membershipMutation:m,builtInByAgentId:A,onConfigureBuiltIn:p},d.id))})]})}n(ye,"OrgTreeNode");function we({agent:e,environment:a,showEnvironment:i}){const r=ut(e),o=et(e.adapterType);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"w-44 min-w-0 leading-tight",children:[(0,t.jsx)("div",{className:"truncate font-mono text-xs text-muted-foreground",title:r??void 0,children:r??"—"}),(0,t.jsx)("div",{className:"truncate font-mono text-(length:--text-micro) text-muted-foreground/70",title:o,children:o})]}),i&&(0,t.jsxs)("div",{className:"w-44 min-w-0 leading-tight",children:[(0,t.jsx)("div",{className:"truncate text-xs text-muted-foreground",title:a.title,children:a.label}),(0,t.jsx)("div",{className:"truncate text-(length:--text-micro) text-muted-foreground/70",children:a.detail})]}),(0,t.jsx)("span",{className:"w-24 whitespace-nowrap text-right text-xs text-muted-foreground",children:e.lastHeartbeatAt?Re(e.lastHeartbeatAt):"—"})]})}n(we,"AgentMetaColumns");function Q({agentRef:e,runId:a,liveCount:i}){return(0,t.jsxs)(de,{to:`/agents/${e}/runs/${a}`,className:"flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-blue-500/10 hover:bg-blue-500/20 transition-colors no-underline",onClick:n(r=>r.stopPropagation(),"onClick"),children:[(0,t.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,t.jsx)("span",{className:"animate-pulse absolute inline-flex h-full w-full rounded-full bg-blue-400 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-blue-500"})]}),(0,t.jsxs)("span",{className:"text-(length:--text-micro) font-medium text-blue-600 dark:text-blue-400",children:["Live",i>1?` (${i})`:""]})]})}n(Q,"LiveRunIndicator");export{Mt as Agents};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-N4w1Oco1.js","assets/rolldown-runtime-ZpX3ckPj.js","assets/createLucideIcon-CINAT48M.js","assets/preload-helper-CceJXRIF.js","assets/router-DcMYq5w_.js","assets/zap-CKzX0hdL.js","assets/agents-CNina7HI.js","assets/EmptyState-D62UDLDa.js","assets/button-BYQHEF4e.js","assets/RoutineRunVariablesDialog-CUcwhS7L.js","assets/mention-chips-r4UB4Eiw.js","assets/bot-DIsSOxfs.js","assets/MarkdownEditor-ZwstkvWb.js","assets/dist-DCpDFPbp.js","assets/dist-bQQ2HFhw.js","assets/AgentAvatar-CWNp7Eqe.js","assets/dist-DCJXgQu0.js","assets/sheet-CrBXG9pk.js","assets/checkbox-MLVUJCCS.js","assets/check-Cniv3It0.js","assets/chevron-right-C4o2Lqna.js","assets/label-BnqmTeef.js","assets/StatusIcon-BYqGFWup.js","assets/clipboard-CfEDu5my.js","assets/loader-circle-DA6xS_rG.js","assets/octagon-alert-DsI0y-RL.js","assets/select-CV7s_3g2.js","assets/chevron-down-Dq0fsCvv.js","assets/heartbeats-BQipXQOf.js","assets/useHiddenSettings-b1eurTXV.js","assets/health-DY_y3c9e.js","assets/rotate-ccw-D6pz3VoJ.js","assets/triangle-alert-DQUol3t5.js","assets/badge-CW7lQ_Zd.js","assets/environments-awDXeIDD.js","assets/input-B7ODc-rR.js","assets/company-members-tdITTHFY.js","assets/AgentIdentity-Bqzrcghn.js","assets/card-CFXZOYds.js","assets/PageSkeleton-C0pPO_Gb.js","assets/skeleton-efW_R0t3.js","assets/tabs-4RdauNv3.js","assets/use-adapter-capabilities-pFfW1mOk.js","assets/save-CvrYa2yq.js","assets/external-link-3uv6Ak2X.js","assets/MarkdownBody-DfGkmx3G.js","assets/file-text-DWMD8a2i.js","assets/SidebarContext-B3vvFvTk.js","assets/index-BAoNTaz4.css"])))=>i.map(i=>d[i]);
2
+ var Pe=Object.defineProperty;var n=(e,a)=>Pe(e,"name",{value:a,configurable:!0});import{i as oe}from"./rolldown-runtime-ZpX3ckPj.js";import{En as ke,Fr as qe,Lr as Me,S as B,U as Fe,Y as j,_ as ce,g as U,nr as N,z as Re}from"./createLucideIcon-CINAT48M.js";import{t as $e}from"./preload-helper-CceJXRIF.js";import{it as Be,o as ze,t as de}from"./router-DcMYq5w_.js";import{S as Ke}from"./zap-CKzX0hdL.js";import{t as ue}from"./AgentAvatar-CWNp7Eqe.js";import{t as Oe}from"./tabs-4RdauNv3.js";import{t as ae}from"./agents-CNina7HI.js";import{r as De,t as re}from"./EmptyState-D62UDLDa.js";import{t as ie}from"./bot-DIsSOxfs.js";import{k as Ue,t as V}from"./button-BYQHEF4e.js";import{i as Ve,o as He,t as Ge}from"./heartbeats-BQipXQOf.js";import{t as me}from"./triangle-alert-DQUol3t5.js";import{n as Qe}from"./SidebarContext-B3vvFvTk.js";import{n as Je,t as le}from"./environments-awDXeIDD.js";import{t as Ye}from"./PageSkeleton-C0pPO_Gb.js";import{$t as We,It as Xe,Jt as Ze,Lt as pe,Wt as H,Yt as et,an as ge,cn as tt,dn as st,in as nt,nn as xe,on as G,rn as at,sn as rt,un as fe}from"./index-N4w1Oco1.js";var g=oe(Me(),1),t=oe(qe(),1),he=ke,it=(0,g.lazy)(()=>$e(()=>import("./index-N4w1Oco1.js").then(e=>e.wt).then(e=>({default:e.ConfigureBuiltInAgentModal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48]))),lt=["all","active","paused","error","builtin"],ot=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"paused",label:"Paused"},{value:"error",label:"Error"},{value:"builtin",label:"Built-in"}];function ct(e){return lt.includes(e)}n(ct,"isFilterTab");var J={label:"Local",detail:"Paperclip host",title:"Local - Paperclip host"},ve={label:"—",detail:"Loading environment",title:"Loading environment"},be=new Set(["terminated","pending_approval"]);function je(e,a){return a==="all"?!0:a==="active"?e==="active"||e==="running"||e==="idle":a==="paused"?e==="paused":a==="error"?e==="error":!0}n(je,"matchesFilter");function dt(e,a,i){return e.filter(r=>be.has(r.status)?!1:a==="builtin"?i.has(r.id):je(r.status,a)).sort((r,o)=>r.name.localeCompare(o.name))}n(dt,"filterAgents");function ut(e){const a=e.adapterConfig?.model;if(typeof a!="string")return null;const i=a.trim();return i.length>0?i:null}n(ut,"getConfiguredModel");function mt(e){return e==="ssh"?"SSH":e.charAt(0).toUpperCase()+e.slice(1)}n(mt,"formatEnvironmentDriver");function pt(e,a){const i=typeof e.config.provider=="string"?e.config.provider.trim():"";return i?a?.sandboxProviders?.[i]?.displayName??i:"Sandbox"}n(pt,"getSandboxProviderLabel");function gt(e,a){const i=Ze(e)?"Managed by Paperclip":e.driver==="sandbox"?`${pt(e,a)} sandbox provider`:e.driver==="local"?"Paperclip host":mt(e.driver);return{label:e.name,detail:i,title:`${e.name} - ${i}`}}n(gt,"describeEnvironment");function xt(e){return{label:"Unknown environment",detail:e.slice(0,8),title:`Unknown environment - ${e}`}}n(xt,"describeMissingEnvironment");function ft(e,a,i,r){const o=e.defaultEnvironmentId??i;if(!o)return J;const x=a.get(o);return x?gt(x,r):xt(o)}n(ft,"resolveAgentEnvironment");function Ne(e,a,i){return e.reduce((r,o)=>{const x=Ne(o.reports,a,i);return be.has(o.status)?(r.push(...x),r):(((a==="builtin"?i.has(o.id):je(o.status,a))||x.length>0)&&r.push({...o,reports:x}),r)},[]).sort((r,o)=>r.name.localeCompare(o.name))}n(Ne,"filterOrgTree");function Mt(){const{selectedCompanyId:e}=Fe(),{openNewAgent:a}=Ve(),{setBreadcrumbs:i}=De(),r=ze(),o=Be(),{isMobile:x}=Qe(),C=o.pathname.split("/").pop()??"all",v=ct(C)?C:"all",[S,m]=(0,g.useState)("org"),A=x,p=A?"list":S,{data:l}=N({queryKey:j.instance.settings,queryFn:n(()=>Je.get(),"queryFn"),enabled:!!e}),u=l?.experimental.enableBuiltInAgents===!0,h=v==="builtin"&&!u?"all":v,z=(0,g.useMemo)(()=>ot.filter(s=>s.value!=="builtin"||u),[u]),{data:E}=N({queryKey:j.builtInAgents.list(e),queryFn:n(()=>st.list(e),"queryFn"),enabled:!!e&&u}),b=(0,g.useMemo)(()=>{const s=new Map;if(!u)return s;for(const c of E??[])c.agentId&&s.set(c.agentId,c);return s},[E,u]),k=(0,g.useMemo)(()=>new Set(b.keys()),[b]),[y,_]=(0,g.useState)(null),{data:d,isLoading:Ie,error:Y}=N({queryKey:j.agents.list(e),queryFn:n(()=>ae.list(e),"queryFn"),enabled:!!e}),{data:T}=N({queryKey:j.org(e),queryFn:n(()=>ae.org(e),"queryFn"),enabled:!!e&&p==="org"}),q=l?.experimental.enableEnvironments===!0,{data:L}=N({queryKey:j.environments.list(e),queryFn:n(()=>le.list(e),"queryFn"),enabled:!!e&&q}),{data:W}=N({queryKey:j.environments.capabilities(e),queryFn:n(()=>le.capabilities(e),"queryFn"),enabled:!!e&&q}),X=[...j.liveRuns(e),"agents-page"],K=nt({companyId:e,resourceKey:"live-runs:agents-page",queryKey:X,enabled:!!e,refetchInterval:15e3,leaderOnly:!0}),{data:O,dataUpdatedAt:Ce}=N({queryKey:X,queryFn:n(()=>Ge.liveRunsForCompany(e),"queryFn"),enabled:K.enabled,refetchInterval:K.refetchInterval});at(K,O,Ce);const M=tt(e),f=rt(e),F=(0,g.useMemo)(()=>{const s=new Map;for(const c of O??[]){if(c.status!=="running"&&c.status!=="queued")continue;const P=s.get(c.agentId);if(P){P.liveCount+=1;continue}s.set(c.agentId,{runId:c.id,liveCount:1})}return s},[O]),Se=(0,g.useMemo)(()=>{const s=new Map;for(const c of d??[])s.set(c.id,c);return s},[d]),Z=(0,g.useMemo)(()=>{const s=new Map;for(const c of L??[])s.set(c.id,c);return s},[L]),ee=(0,g.useMemo)(()=>{const s=new Map;for(const c of d??[])s.set(c.id,ft(c,Z,l?.defaultEnvironmentId??null,W));return s},[d,Z,W,l?.defaultEnvironmentId]);if((0,g.useEffect)(()=>{i([{label:"Agents"}])},[i]),(0,g.useEffect)(()=>{e&&v==="builtin"&&l&&!u&&r("/agents/all",{replace:!0})},[u,l,r,v,e]),!e)return(0,t.jsx)(re,{icon:ie,message:"Select a company to view agents."});if(Ie)return(0,t.jsx)(Ye,{variant:"list"});const w=dt(d??[],h,k),D=Ne(T??[],h,k),te=q&&L===void 0,se=q&&(L===void 0||L.length>1),Ae=n(s=>te?ve:ee.get(s)??J,"resolveRenderedEnvironment"),Ee=n(s=>{const c=s.orgChainHealth?.status==="invalid_org_chain",P=f.isPending&&f.variables?.resourceType==="agent"&&f.variables.resourceId===s.id,_e=P&&f.variables?.starred!==void 0,ne=P&&f.variables?.starred===void 0,Te=ge(M.data,"agent",s.id),I=b.get(s.id),Le=I?.status==="needs_setup"||I?.status==="pending_approval",R=I&&Le?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(fe,{status:I.status}),I.status==="needs_setup"&&(0,t.jsx)("span",{onClick:n($=>{$.preventDefault(),$.stopPropagation()},"onClick"),children:(0,t.jsx)(V,{size:"xs",variant:"outline",onClick:n(()=>_(I),"onClick"),children:"Set up"})})]}):null;return(0,t.jsx)(Xe,{title:s.name,titleClassName:"flex-1 xl:flex-none xl:w-56",titleTextClassName:"whitespace-normal break-words xl:truncate xl:whitespace-nowrap",subtitleClassName:"whitespace-normal break-words xl:truncate xl:whitespace-nowrap",subtitle:`${he[s.role]??s.role}${s.title?` - ${s.title}`:""}`,to:ce(s),className:B("group",s.pausedAt&&h!=="paused"?"opacity-50":"",G(M.data,"agent",s.id)==="left"?"sm:text-foreground/55":""),leading:c?(0,t.jsx)(me,{className:"h-3.5 w-3.5 text-amber-500","aria-label":"Invalid reporting chain"}):(0,t.jsx)(ue,{agent:s,size:32}),secondaryRow:R?(0,t.jsx)("div",{className:"xl:hidden flex flex-wrap items-center gap-1.5",children:R}):void 0,meta:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[R&&(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-1.5",children:R}),(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-3",children:(0,t.jsx)(we,{agent:s,environment:Ae(s.id),showEnvironment:se})})]}),metaSpacerClassName:"hidden xl:block",trailing:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("div",{className:"hidden sm:flex items-center gap-3",children:[F.has(s.id)&&(0,t.jsx)(Q,{agentRef:U(s),runId:F.get(s.id).runId,liveCount:F.get(s.id).liveCount}),(0,t.jsx)("span",{className:"w-20 flex justify-end",children:(0,t.jsx)(H,{status:s.status})}),(0,t.jsx)(xe,{size:"row",starred:Te,pending:_e,resourceName:s.name,onToggle:n($=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,starred:$}),"onToggle")})]}),(0,t.jsx)(pe,{state:G(M.data,"agent",s.id),pending:ne,pendingState:ne?f.variables?.state??null:null,resourceName:s.name,onJoin:n(()=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,state:"joined"}),"onJoin"),onLeave:n(()=>f.mutate({resourceType:"agent",resourceId:s.id,resourceName:s.name,state:"left"}),"onLeave")})]})},s.id)},"renderAgentRow");return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,t.jsx)(Oe,{value:h,onValueChange:n(s=>r(`/agents/${s}`),"onValueChange"),children:(0,t.jsx)(We,{items:z,value:h,onValueChange:n(s=>r(`/agents/${s}`),"onValueChange")})}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[!A&&(0,t.jsxs)("div",{className:"flex items-center border border-border",role:"group","aria-label":"View mode",children:[(0,t.jsx)("button",{className:B("p-1.5 transition-colors",p==="list"?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50"),onClick:n(()=>m("list"),"onClick"),title:"List view","aria-label":"List view","aria-pressed":p==="list",children:(0,t.jsx)(He,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("button",{className:B("p-1.5 transition-colors",p==="org"?"bg-accent text-foreground":"text-muted-foreground hover:bg-accent/50"),onClick:n(()=>m("org"),"onClick"),title:"Org chart view","aria-label":"Org chart view","aria-pressed":p==="org",children:(0,t.jsx)(Ke,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)(V,{size:"sm",variant:"outline",onClick:a,children:[(0,t.jsx)(Ue,{className:"h-3.5 w-3.5 mr-1.5"}),"New Agent"]})]})]}),w.length>0&&(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:[w.length," agent",w.length!==1?"s":""]}),Y&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:Y.message}),d&&d.length===0&&(0,t.jsx)(re,{icon:ie,message:"Create your first agent to get started.",action:"New Agent",onAction:a}),p==="list"&&w.length>0&&(0,t.jsx)("div",{children:w.map(Ee)}),p==="list"&&d&&d.length>0&&w.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No agents match the selected status."}),p==="org"&&D.length>0&&(0,t.jsx)("div",{className:"py-1",children:D.map(s=>(0,t.jsx)(ye,{node:s,depth:0,agentMap:Se,liveRunByAgent:F,environmentByAgentId:ee,environmentDataLoading:te,showEnvironment:se,tab:h,memberships:M.data,membershipMutation:f,builtInByAgentId:b,onConfigureBuiltIn:_},s.id))}),p==="org"&&T&&T.length>0&&D.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No agents match the selected status."}),p==="org"&&T&&T.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground text-center py-8",children:"No organizational hierarchy defined."}),y&&e&&(0,t.jsx)(g.Suspense,{fallback:null,children:(0,t.jsx)(it,{companyId:e,state:y,open:y!==null,onOpenChange:n(s=>{s||_(null)},"onOpenChange")})})]})}n(Mt,"Agents");function ye({node:e,depth:a,agentMap:i,liveRunByAgent:r,environmentByAgentId:o,environmentDataLoading:x,showEnvironment:C,tab:v,memberships:S,membershipMutation:m,builtInByAgentId:A,onConfigureBuiltIn:p}){const l=i.get(e.id),u=A.get(e.id),h=u?.status==="needs_setup"||u?.status==="pending_approval",z=!!(l&&l.orgChainHealth?.status==="invalid_org_chain"),E=G(S,"agent",e.id),b=m.isPending&&m.variables?.resourceType==="agent"&&m.variables.resourceId===e.id,k=b&&m.variables?.starred!==void 0,y=b&&m.variables?.starred===void 0,_=ge(S,"agent",e.id);return(0,t.jsxs)("div",{style:{paddingLeft:a*24},children:[(0,t.jsxs)(de,{to:l?ce(l):`/agents/${e.id}`,className:B("group flex items-center gap-3 rounded-lg px-3 py-2 hover:bg-accent/50 transition-colors w-full text-left no-underline text-inherit",l?.pausedAt&&v!=="paused"&&"opacity-50",E==="left"&&"sm:text-foreground/55"),children:[z?(0,t.jsx)(me,{className:"h-3.5 w-3.5 shrink-0 text-amber-500","aria-label":"Invalid reporting chain"}):(0,t.jsx)(ue,{agent:l??e,size:24}),(0,t.jsxs)("div",{className:"flex-1 min-w-0 flex flex-wrap items-center gap-2",children:[(0,t.jsxs)("div",{className:"min-w-(--sz-7rem) truncate",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:e.name}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground ml-2",children:[he[e.role]??e.role,l?.title?` - ${l.title}`:""]})]}),u&&h&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,t.jsx)(fe,{status:u.status}),u.status==="needs_setup"&&(0,t.jsx)("span",{onClick:n(d=>{d.preventDefault(),d.stopPropagation()},"onClick"),children:(0,t.jsx)(V,{size:"xs",variant:"outline",onClick:n(()=>p(u),"onClick"),children:"Set up"})})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[(0,t.jsx)("span",{className:"sm:hidden",children:r.has(e.id)?(0,t.jsx)(Q,{agentRef:l?U(l):e.id,runId:r.get(e.id).runId,liveCount:r.get(e.id).liveCount}):(0,t.jsx)(H,{status:e.status})}),(0,t.jsxs)("div",{className:"hidden sm:flex items-center gap-3",children:[r.has(e.id)&&(0,t.jsx)(Q,{agentRef:l?U(l):e.id,runId:r.get(e.id).runId,liveCount:r.get(e.id).liveCount}),l&&(0,t.jsx)("div",{className:"hidden xl:flex items-center gap-3",children:(0,t.jsx)(we,{agent:l,environment:x?ve:o.get(l.id)??J,showEnvironment:C})}),(0,t.jsx)("span",{className:"w-20 flex justify-end",children:(0,t.jsx)(H,{status:e.status})})]}),(0,t.jsx)(pe,{state:E,pending:y,pendingState:y?m.variables?.state:null,resourceName:e.name,onJoin:n(()=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,state:"joined"}),"onJoin"),onLeave:n(()=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,state:"left"}),"onLeave")}),(0,t.jsx)("div",{className:"hidden sm:flex items-center gap-3",children:(0,t.jsx)(xe,{size:"row",starred:_,pending:k,resourceName:e.name,onToggle:n(d=>m.mutate({resourceType:"agent",resourceId:e.id,resourceName:e.name,starred:d}),"onToggle")})})]})]}),e.reports&&e.reports.length>0&&(0,t.jsx)("div",{className:"border-l border-border ml-4",children:e.reports.map(d=>(0,t.jsx)(ye,{node:d,depth:a+1,agentMap:i,liveRunByAgent:r,environmentByAgentId:o,environmentDataLoading:x,showEnvironment:C,tab:v,memberships:S,membershipMutation:m,builtInByAgentId:A,onConfigureBuiltIn:p},d.id))})]})}n(ye,"OrgTreeNode");function we({agent:e,environment:a,showEnvironment:i}){const r=ut(e),o=et(e.adapterType);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"w-44 min-w-0 leading-tight",children:[(0,t.jsx)("div",{className:"truncate font-mono text-xs text-muted-foreground",title:r??void 0,children:r??"—"}),(0,t.jsx)("div",{className:"truncate font-mono text-(length:--text-micro) text-muted-foreground/70",title:o,children:o})]}),i&&(0,t.jsxs)("div",{className:"w-44 min-w-0 leading-tight",children:[(0,t.jsx)("div",{className:"truncate text-xs text-muted-foreground",title:a.title,children:a.label}),(0,t.jsx)("div",{className:"truncate text-(length:--text-micro) text-muted-foreground/70",children:a.detail})]}),(0,t.jsx)("span",{className:"w-24 whitespace-nowrap text-right text-xs text-muted-foreground",children:e.lastHeartbeatAt?Re(e.lastHeartbeatAt):"—"})]})}n(we,"AgentMetaColumns");function Q({agentRef:e,runId:a,liveCount:i}){return(0,t.jsxs)(de,{to:`/agents/${e}/runs/${a}`,className:"flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-blue-500/10 hover:bg-blue-500/20 transition-colors no-underline",onClick:n(r=>r.stopPropagation(),"onClick"),children:[(0,t.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,t.jsx)("span",{className:"animate-pulse absolute inline-flex h-full w-full rounded-full bg-blue-400 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-blue-500"})]}),(0,t.jsxs)("span",{className:"text-(length:--text-micro) font-medium text-blue-600 dark:text-blue-400",children:["Live",i>1?` (${i})`:""]})]})}n(Q,"LiveRunIndicator");export{Mt as Agents};
@@ -1 +1 @@
1
- var xe=Object.defineProperty;var r=(t,a)=>xe(t,"name",{value:a,configurable:!0});import{i as ne}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as pe,Lr as he,S as ge,U as fe,Y as G,Yn as W,nr as X,z as ye}from"./createLucideIcon-D-iIM3hK.js";import{ct as ve,t as re}from"./router-BxwR1PwE.js";import{r as ee,t as je}from"./AgentAvatar-BR1Z_L_Z.js";import{i as te,r as be,t as Ne}from"./tabs-Dqn3cNzC.js";import{t as we}from"./agents-DrLpWAcm.js";import{r as Ae,t as Te}from"./EmptyState-DOb3I5aU.js";import{c as _,i as y,n as D,s as F,t as k}from"./select-BqqjvKLd.js";import{t as T}from"./button-DCI8NFig.js";import{t as se}from"./input-BkGpMopE.js";import{o as Se,r as Ce}from"./company-members-C1IoXITE.js";import{r as v,t as j}from"./card-BD8MkPAL.js";import{Gn as Ee,O as ae,Pn as Ie,Rt as Ue,_n as Pe,bn as Le,fn as Re,yn as _e}from"./index-CsQMjEpO.js";var l=ne(he(),1),e=ne(pe(),1),De=50,n="__all",Fe=[{value:n,label:"All actions"},{value:"issue.",label:"Tasks"},{value:"agent.",label:"Agents"},{value:"heartbeat.",label:"Runs"},{value:"approval.",label:"Approvals"},{value:"project.",label:"Projects"},{value:"goal.",label:"Goals"},{value:"tool_gateway.",label:"Tools"},{value:"cost.",label:"Costs"},{value:"company.",label:"Company"}],ke=[{value:n,label:"All entities"},{value:"issue",label:"Task"},{value:"agent",label:"Agent"},{value:"project",label:"Project"},{value:"goal",label:"Goal"},{value:"company",label:"Company"}];function Be(t){if(!t)return;const a=new Date(`${t}T00:00:00.000Z`);return Number.isNaN(a.getTime())?void 0:a.toISOString()}r(Be,"toStartIso");function Ve(t){if(!t)return;const a=new Date(`${t}T23:59:59.999Z`);return Number.isNaN(a.getTime())?void 0:a.toISOString()}r(Ve,"toEndIso");function $e({record:t,agentMap:a,userProfileMap:d}){const u=t.agentId??(t.actorType==="agent"?t.actorId:null),c=u?a.get(u):null;if(c)return(0,e.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-1.5",title:c.name,children:[(0,e.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground",children:(0,e.jsx)(je,{agent:c,size:16,className:"h-3 w-3"})}),(0,e.jsx)("span",{className:"truncate font-medium text-foreground",children:c.name})]});if(t.actorType==="user"&&t.actorId){const m=d.get(t.actorId);return(0,e.jsx)(ee,{name:m?.label??"User",avatarUrl:m?.image??null,size:"sm",className:"font-medium text-foreground"})}const h=t.actorType==="plugin"?"Plugin":t.actorType==="agent"?"Agent":t.actorType==="user"?"User":"System";return(0,e.jsx)(ee,{name:h,size:"sm",className:"font-medium text-foreground"})}r($e,"AuditActor");function qe({record:t}){const{issue:a,document:d}=t.entity,u=a?.identifier??a?.id??null;return u?(0,e.jsx)(re,{to:`/issues/${u}`,className:"font-medium text-primary hover:underline",children:a?.identifier?`${a.identifier}${a.title?` · ${a.title}`:""}`:"the task"}):d?(0,e.jsx)("span",{className:"font-medium text-foreground",children:d.key}):(0,e.jsx)("span",{className:"text-muted-foreground",children:t.entityType})}r(qe,"AuditEntityNode");function ze({record:t,agentMap:a,userProfileMap:d}){const u=Ue(t.action,t.details,{agentMap:a,userProfileMap:d}),c=t.responsibleUserId?d.get(t.responsibleUserId):null,h=!!(t.responsibleUserId&&!(t.actorType==="user"&&t.actorId===t.responsibleUserId)),m=c?.label??(t.responsibleUserId?"a user":null),g=t.entity.comment?.excerpt?.trim(),x=t.entity.issue&&t.entity.document?t.entity.document.key:null;return(0,e.jsx)("li",{className:"px-4 py-3 text-sm",children:(0,e.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,e.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-x-1.5 gap-y-1 text-foreground",children:[(0,e.jsx)($e,{record:t,agentMap:a,userProfileMap:d}),(0,e.jsx)("span",{className:"text-muted-foreground",children:u}),(0,e.jsx)(qe,{record:t})]}),g?(0,e.jsxs)("p",{className:"line-clamp-2 border-l-2 border-border pl-2 text-muted-foreground",children:["“",g,"”"]}):null,x?(0,e.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Document ",(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro)",children:x})]}):null,(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[h&&m?(0,e.jsxs)("span",{className:"inline-flex items-center rounded-full bg-muted px-2 py-0.5",children:["on behalf of ",m]}):null,t.runId&&t.agentId?(0,e.jsx)(re,{to:`/agents/${t.agentId}/runs/${t.runId}`,className:"text-primary hover:underline",children:"View run"}):null,(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro) opacity-70",children:t.action})]})]}),(0,e.jsx)("time",{className:"shrink-0 whitespace-nowrap text-xs text-muted-foreground",dateTime:t.createdAt,title:new Date(t.createdAt).toLocaleString(),children:ye(t.createdAt)})]})})}r(ze,"AuditRow");function Me(){return(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)(Pe,{className:"h-10 w-10 text-muted-foreground/50"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Agent audit is a Paperclip Enterprise view"}),(0,e.jsxs)("p",{className:"mx-auto mt-1 max-w-md text-sm text-muted-foreground",children:["The agent audit log gives you a searchable, exportable record of everything your agents did — every comment, task change, approval, and run — with the responsible person for each action. Ask an administrator to grant you the"," ",(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro)",children:"audit:view_agent_actions"})," ","permission to view it."]})]})]})})}r(Me,"AuditUpsell");function Oe({companyId:t,lockedAgentId:a,hideHeader:d,mode:u,onModeChange:c}){const{pushToast:h}=Re(),[m,g]=(0,l.useState)(n),[x,B]=(0,l.useState)(n),[S,V]=(0,l.useState)(n),[C,$]=(0,l.useState)(n),[E,q]=(0,l.useState)(""),[I,z]=(0,l.useState)(""),[Z,Q]=(0,l.useState)(!1),[U,H]=(0,l.useState)(!1),M=X({queryKey:G.agents.list(t),queryFn:r(()=>we.list(t),"queryFn")}),O=X({queryKey:G.access.companyUserDirectory(t),queryFn:r(()=>Se.listUserDirectory(t),"queryFn"),retry:!1}),ie=(0,l.useMemo)(()=>new Map((M.data??[]).map(s=>[s.id,s])),[M.data]),le=(0,l.useMemo)(()=>Ce(O.data?.users),[O.data]),f=a?"agents":u??"all",o={actorScope:f,agentId:a??(m===n?void 0:m),responsibleUserId:x===n?void 0:x,action:S===n?void 0:S,entityType:C===n?void 0:C,from:Be(E),to:Ve(I)},b=!!(!a&&m!==n||x!==n||S!==n||C!==n||E||I),i=Ee({queryKey:G.audit.agentActions(t,{actorScope:o.actorScope,agentId:o.agentId,responsibleUserId:o.responsibleUserId,action:o.action,entityType:o.entityType,from:o.from,to:o.to}),queryFn:r(({pageParam:s})=>ae.listAgentActions(t,{...o,limit:De,cursor:s??void 0}),"queryFn"),initialPageParam:null,getNextPageParam:r(s=>s.nextCursor??void 0,"getNextPageParam"),retry:r((s,p)=>!(p instanceof W&&p.status===403)&&s<2,"retry")}),K=i.error instanceof W&&i.error.status===403,P=i.data?.pages.some(s=>s.accessTier==="basic")??!1,oe=i.data?.pages.some(s=>s.accessTier==="full")??!1,Y=(0,l.useMemo)(()=>{const s=i.data?.pages??[];return(P?s.filter(p=>p.accessTier!=="full"):s).flatMap(p=>p.items)},[i.data,P]),L=P?"basic":i.data?.pages[0]?.accessTier,N=P&&oe,ce=a?!0:L==="full",de=!!(N&&U&&!i.isFetching),R=!!(!a&&!de&&(K&&b||N)),w=!!(K&&!a&&f==="agents"&&c),ue=!!(!a&&c&&!w&&(f==="agents"||L==="full"));(0,l.useEffect)(()=>{w&&c?.("all")},[w,c]),(0,l.useEffect)(()=>{!a&&(L==="basic"||R)&&(g(n),B(n),V(n),$(n),q(""),z(""))},[L,N,a,R]),(0,l.useEffect)(()=>{if(!N){U&&H(!1);return}U||(H(!0),i.refetch())},[U,i,N]);const J=r(()=>{g(n),B(n),V(n),$(n),q(""),z("")},"clearFilters"),me=r(async()=>{Q(!0);try{const s=await ae.exportAgentActionsCsv(t,{actorScope:o.actorScope,agentId:o.agentId,responsibleUserId:o.responsibleUserId,action:o.action,entityType:o.entityType,from:o.from,to:o.to}),p=URL.createObjectURL(s),A=document.createElement("a");A.href=p,A.download=`${f==="agents"?"agent-audit":"activity"}-${t}.csv`,document.body.appendChild(A),A.click(),A.remove(),window.setTimeout(()=>URL.revokeObjectURL(p),5e3),h({title:"Audit exported",body:"Your CSV download has started.",tone:"success"})}catch(s){h({title:"Export failed",body:s instanceof Error?s.message:"Could not export the audit log.",tone:"error"})}finally{Q(!1)}},"handleExport");return K&&!R&&!w?(0,e.jsx)(Me,{}):(0,e.jsxs)("div",{className:"space-y-4",children:[d?null:(0,e.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-lg font-semibold text-foreground",children:"Activity"}),(0,e.jsx)("p",{className:"mt-1 max-w-2xl text-sm text-muted-foreground",children:f==="agents"?"Every recorded agent action, newest first — with the responsible person and run behind each one.":"Everything happening in your company, newest first — people, agents, and the system. Each line is one recorded action."})]})}),ue?(0,e.jsx)(Ne,{value:f,onValueChange:r(s=>c?.(s),"onValueChange"),children:(0,e.jsxs)(be,{"aria-label":"Activity scope",children:[(0,e.jsx)(te,{value:"all",children:"All activity"}),(0,e.jsx)(te,{value:"agents",children:"Agent actions"})]})}):null,ce?(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?null:(0,e.jsxs)(k,{value:m,onValueChange:g,children:[(0,e.jsx)(F,{className:"w-40",children:(0,e.jsx)(_,{placeholder:"Agent"})}),(0,e.jsxs)(D,{children:[(0,e.jsx)(y,{value:n,children:"All agents"}),(M.data??[]).map(s=>(0,e.jsx)(y,{value:s.id,children:s.name},s.id))]})]}),(0,e.jsxs)(k,{value:x,onValueChange:B,children:[(0,e.jsx)(F,{className:"w-52",children:(0,e.jsx)(_,{placeholder:"Responsible user"})}),(0,e.jsxs)(D,{children:[(0,e.jsx)(y,{value:n,children:"All responsible users"}),(O.data?.users??[]).map(s=>(0,e.jsx)(y,{value:s.principalId,children:s.user?.name??s.user?.email??s.principalId.slice(0,8)},s.principalId))]})]}),(0,e.jsxs)(k,{value:S,onValueChange:V,children:[(0,e.jsx)(F,{className:"w-36",children:(0,e.jsx)(_,{placeholder:"Action"})}),(0,e.jsx)(D,{children:Fe.map(s=>(0,e.jsx)(y,{value:s.value,children:s.label},s.value))})]}),(0,e.jsxs)(k,{value:C,onValueChange:$,children:[(0,e.jsx)(F,{className:"w-36",children:(0,e.jsx)(_,{placeholder:"Entity"})}),(0,e.jsx)(D,{children:ke.map(s=>(0,e.jsx)(y,{value:s.value,children:s.label},s.value))})]}),(0,e.jsx)(se,{type:"date","aria-label":"From date",value:E,max:I||void 0,onChange:r(s=>q(s.target.value),"onChange"),className:"w-36"}),(0,e.jsx)(se,{type:"date","aria-label":"To date",value:I,min:E||void 0,onChange:r(s=>z(s.target.value),"onChange"),className:"w-36"}),b?(0,e.jsx)(T,{variant:"ghost",size:"sm",onClick:J,children:"Clear filters"}):null,(0,e.jsxs)(T,{variant:"outline",size:"sm",className:"ml-auto",onClick:me,disabled:Z||i.isLoading||Y.length===0,children:[(0,e.jsx)(Ie,{className:"mr-1.5 h-4 w-4"}),Z?"Exporting…":"Export CSV"]})]}):null,R||w?(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"py-14 text-center text-sm text-muted-foreground",children:"Refreshing audit access…"})}):i.isLoading?(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"py-14 text-center text-sm text-muted-foreground",children:"Loading…"})}):i.error?(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:i.error instanceof Error?i.error.message:"Failed to load the audit log."}),(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:r(()=>i.refetch(),"onClick"),children:"Try again"})]})}):Y.length===0?(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)(_e,{className:"h-10 w-10 text-muted-foreground/40"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-foreground",children:b?"No actions match these filters":"Nothing here yet"}),(0,e.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted-foreground",children:b?"Try a wider date range or different filters.":f==="agents"?"As soon as your agents start doing things, their actions show up here.":"As soon as anyone in your company does something, it shows up here."})]}),b?(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:J,children:"Clear filters"}):null]})}):(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"px-0 py-0",children:(0,e.jsx)("ul",{className:ge("divide-y divide-border"),children:Y.map(s=>(0,e.jsx)(ze,{record:s,agentMap:ie,userProfileMap:le},s.id))})})}),i.hasNextPage?(0,e.jsx)("div",{className:"flex justify-center",children:(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:r(()=>i.fetchNextPage(),"onClick"),disabled:i.isFetchingNextPage,children:i.isFetchingNextPage?"Loading…":"Load more"})}):null,(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:"Recorded by Paperclip — entries can't be edited. Sensitive values are never stored."})]})}r(Oe,"AuditFeed");function rt(){const{selectedCompanyId:t}=fe(),{setBreadcrumbs:a}=Ae(),[d,u]=ve(),c=d.get("mode")==="agents"?"agents":"all";(0,l.useEffect)(()=>{a([{label:"Activity"}])},[a]);const h=(0,l.useCallback)(m=>{u(g=>{const x=new URLSearchParams(g);return m==="agents"?x.set("mode","agents"):x.delete("mode"),x},{replace:!0})},[u]);return t?(0,e.jsx)(Oe,{companyId:t,mode:c,onModeChange:h}):(0,e.jsx)(Te,{icon:Le,message:"Select a company to view activity."})}r(rt,"CompanyActivity");export{rt as CompanyActivity};
1
+ var xe=Object.defineProperty;var r=(t,a)=>xe(t,"name",{value:a,configurable:!0});import{i as ne}from"./rolldown-runtime-ZpX3ckPj.js";import{Fr as pe,Lr as he,S as ge,U as fe,Y as G,Yn as W,nr as X,z as ye}from"./createLucideIcon-CINAT48M.js";import{ct as ve,t as re}from"./router-DcMYq5w_.js";import{r as ee,t as je}from"./AgentAvatar-CWNp7Eqe.js";import{i as te,r as be,t as Ne}from"./tabs-4RdauNv3.js";import{t as we}from"./agents-CNina7HI.js";import{r as Ae,t as Te}from"./EmptyState-D62UDLDa.js";import{c as _,i as y,n as D,s as F,t as k}from"./select-CV7s_3g2.js";import{t as T}from"./button-BYQHEF4e.js";import{t as se}from"./input-B7ODc-rR.js";import{o as Se,r as Ce}from"./company-members-tdITTHFY.js";import{r as v,t as j}from"./card-CFXZOYds.js";import{Gn as Ee,O as ae,Pn as Ie,Rt as Ue,_n as Pe,bn as Le,fn as Re,yn as _e}from"./index-N4w1Oco1.js";var l=ne(he(),1),e=ne(pe(),1),De=50,n="__all",Fe=[{value:n,label:"All actions"},{value:"issue.",label:"Tasks"},{value:"agent.",label:"Agents"},{value:"heartbeat.",label:"Runs"},{value:"approval.",label:"Approvals"},{value:"project.",label:"Projects"},{value:"goal.",label:"Goals"},{value:"tool_gateway.",label:"Tools"},{value:"cost.",label:"Costs"},{value:"company.",label:"Company"}],ke=[{value:n,label:"All entities"},{value:"issue",label:"Task"},{value:"agent",label:"Agent"},{value:"project",label:"Project"},{value:"goal",label:"Goal"},{value:"company",label:"Company"}];function Be(t){if(!t)return;const a=new Date(`${t}T00:00:00.000Z`);return Number.isNaN(a.getTime())?void 0:a.toISOString()}r(Be,"toStartIso");function Ve(t){if(!t)return;const a=new Date(`${t}T23:59:59.999Z`);return Number.isNaN(a.getTime())?void 0:a.toISOString()}r(Ve,"toEndIso");function $e({record:t,agentMap:a,userProfileMap:d}){const u=t.agentId??(t.actorType==="agent"?t.actorId:null),c=u?a.get(u):null;if(c)return(0,e.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-1.5",title:c.name,children:[(0,e.jsx)("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground",children:(0,e.jsx)(je,{agent:c,size:16,className:"h-3 w-3"})}),(0,e.jsx)("span",{className:"truncate font-medium text-foreground",children:c.name})]});if(t.actorType==="user"&&t.actorId){const m=d.get(t.actorId);return(0,e.jsx)(ee,{name:m?.label??"User",avatarUrl:m?.image??null,size:"sm",className:"font-medium text-foreground"})}const h=t.actorType==="plugin"?"Plugin":t.actorType==="agent"?"Agent":t.actorType==="user"?"User":"System";return(0,e.jsx)(ee,{name:h,size:"sm",className:"font-medium text-foreground"})}r($e,"AuditActor");function qe({record:t}){const{issue:a,document:d}=t.entity,u=a?.identifier??a?.id??null;return u?(0,e.jsx)(re,{to:`/issues/${u}`,className:"font-medium text-primary hover:underline",children:a?.identifier?`${a.identifier}${a.title?` · ${a.title}`:""}`:"the task"}):d?(0,e.jsx)("span",{className:"font-medium text-foreground",children:d.key}):(0,e.jsx)("span",{className:"text-muted-foreground",children:t.entityType})}r(qe,"AuditEntityNode");function ze({record:t,agentMap:a,userProfileMap:d}){const u=Ue(t.action,t.details,{agentMap:a,userProfileMap:d}),c=t.responsibleUserId?d.get(t.responsibleUserId):null,h=!!(t.responsibleUserId&&!(t.actorType==="user"&&t.actorId===t.responsibleUserId)),m=c?.label??(t.responsibleUserId?"a user":null),g=t.entity.comment?.excerpt?.trim(),x=t.entity.issue&&t.entity.document?t.entity.document.key:null;return(0,e.jsx)("li",{className:"px-4 py-3 text-sm",children:(0,e.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,e.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-x-1.5 gap-y-1 text-foreground",children:[(0,e.jsx)($e,{record:t,agentMap:a,userProfileMap:d}),(0,e.jsx)("span",{className:"text-muted-foreground",children:u}),(0,e.jsx)(qe,{record:t})]}),g?(0,e.jsxs)("p",{className:"line-clamp-2 border-l-2 border-border pl-2 text-muted-foreground",children:["“",g,"”"]}):null,x?(0,e.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Document ",(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro)",children:x})]}):null,(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[h&&m?(0,e.jsxs)("span",{className:"inline-flex items-center rounded-full bg-muted px-2 py-0.5",children:["on behalf of ",m]}):null,t.runId&&t.agentId?(0,e.jsx)(re,{to:`/agents/${t.agentId}/runs/${t.runId}`,className:"text-primary hover:underline",children:"View run"}):null,(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro) opacity-70",children:t.action})]})]}),(0,e.jsx)("time",{className:"shrink-0 whitespace-nowrap text-xs text-muted-foreground",dateTime:t.createdAt,title:new Date(t.createdAt).toLocaleString(),children:ye(t.createdAt)})]})})}r(ze,"AuditRow");function Me(){return(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)(Pe,{className:"h-10 w-10 text-muted-foreground/50"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Agent audit is a Paperclip Enterprise view"}),(0,e.jsxs)("p",{className:"mx-auto mt-1 max-w-md text-sm text-muted-foreground",children:["The agent audit log gives you a searchable, exportable record of everything your agents did — every comment, task change, approval, and run — with the responsible person for each action. Ask an administrator to grant you the"," ",(0,e.jsx)("span",{className:"font-mono text-(length:--text-micro)",children:"audit:view_agent_actions"})," ","permission to view it."]})]})]})})}r(Me,"AuditUpsell");function Oe({companyId:t,lockedAgentId:a,hideHeader:d,mode:u,onModeChange:c}){const{pushToast:h}=Re(),[m,g]=(0,l.useState)(n),[x,B]=(0,l.useState)(n),[S,V]=(0,l.useState)(n),[C,$]=(0,l.useState)(n),[E,q]=(0,l.useState)(""),[I,z]=(0,l.useState)(""),[Z,Q]=(0,l.useState)(!1),[U,H]=(0,l.useState)(!1),M=X({queryKey:G.agents.list(t),queryFn:r(()=>we.list(t),"queryFn")}),O=X({queryKey:G.access.companyUserDirectory(t),queryFn:r(()=>Se.listUserDirectory(t),"queryFn"),retry:!1}),ie=(0,l.useMemo)(()=>new Map((M.data??[]).map(s=>[s.id,s])),[M.data]),le=(0,l.useMemo)(()=>Ce(O.data?.users),[O.data]),f=a?"agents":u??"all",o={actorScope:f,agentId:a??(m===n?void 0:m),responsibleUserId:x===n?void 0:x,action:S===n?void 0:S,entityType:C===n?void 0:C,from:Be(E),to:Ve(I)},b=!!(!a&&m!==n||x!==n||S!==n||C!==n||E||I),i=Ee({queryKey:G.audit.agentActions(t,{actorScope:o.actorScope,agentId:o.agentId,responsibleUserId:o.responsibleUserId,action:o.action,entityType:o.entityType,from:o.from,to:o.to}),queryFn:r(({pageParam:s})=>ae.listAgentActions(t,{...o,limit:De,cursor:s??void 0}),"queryFn"),initialPageParam:null,getNextPageParam:r(s=>s.nextCursor??void 0,"getNextPageParam"),retry:r((s,p)=>!(p instanceof W&&p.status===403)&&s<2,"retry")}),K=i.error instanceof W&&i.error.status===403,P=i.data?.pages.some(s=>s.accessTier==="basic")??!1,oe=i.data?.pages.some(s=>s.accessTier==="full")??!1,Y=(0,l.useMemo)(()=>{const s=i.data?.pages??[];return(P?s.filter(p=>p.accessTier!=="full"):s).flatMap(p=>p.items)},[i.data,P]),L=P?"basic":i.data?.pages[0]?.accessTier,N=P&&oe,ce=a?!0:L==="full",de=!!(N&&U&&!i.isFetching),R=!!(!a&&!de&&(K&&b||N)),w=!!(K&&!a&&f==="agents"&&c),ue=!!(!a&&c&&!w&&(f==="agents"||L==="full"));(0,l.useEffect)(()=>{w&&c?.("all")},[w,c]),(0,l.useEffect)(()=>{!a&&(L==="basic"||R)&&(g(n),B(n),V(n),$(n),q(""),z(""))},[L,N,a,R]),(0,l.useEffect)(()=>{if(!N){U&&H(!1);return}U||(H(!0),i.refetch())},[U,i,N]);const J=r(()=>{g(n),B(n),V(n),$(n),q(""),z("")},"clearFilters"),me=r(async()=>{Q(!0);try{const s=await ae.exportAgentActionsCsv(t,{actorScope:o.actorScope,agentId:o.agentId,responsibleUserId:o.responsibleUserId,action:o.action,entityType:o.entityType,from:o.from,to:o.to}),p=URL.createObjectURL(s),A=document.createElement("a");A.href=p,A.download=`${f==="agents"?"agent-audit":"activity"}-${t}.csv`,document.body.appendChild(A),A.click(),A.remove(),window.setTimeout(()=>URL.revokeObjectURL(p),5e3),h({title:"Audit exported",body:"Your CSV download has started.",tone:"success"})}catch(s){h({title:"Export failed",body:s instanceof Error?s.message:"Could not export the audit log.",tone:"error"})}finally{Q(!1)}},"handleExport");return K&&!R&&!w?(0,e.jsx)(Me,{}):(0,e.jsxs)("div",{className:"space-y-4",children:[d?null:(0,e.jsx)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-lg font-semibold text-foreground",children:"Activity"}),(0,e.jsx)("p",{className:"mt-1 max-w-2xl text-sm text-muted-foreground",children:f==="agents"?"Every recorded agent action, newest first — with the responsible person and run behind each one.":"Everything happening in your company, newest first — people, agents, and the system. Each line is one recorded action."})]})}),ue?(0,e.jsx)(Ne,{value:f,onValueChange:r(s=>c?.(s),"onValueChange"),children:(0,e.jsxs)(be,{"aria-label":"Activity scope",children:[(0,e.jsx)(te,{value:"all",children:"All activity"}),(0,e.jsx)(te,{value:"agents",children:"Agent actions"})]})}):null,ce?(0,e.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?null:(0,e.jsxs)(k,{value:m,onValueChange:g,children:[(0,e.jsx)(F,{className:"w-40",children:(0,e.jsx)(_,{placeholder:"Agent"})}),(0,e.jsxs)(D,{children:[(0,e.jsx)(y,{value:n,children:"All agents"}),(M.data??[]).map(s=>(0,e.jsx)(y,{value:s.id,children:s.name},s.id))]})]}),(0,e.jsxs)(k,{value:x,onValueChange:B,children:[(0,e.jsx)(F,{className:"w-52",children:(0,e.jsx)(_,{placeholder:"Responsible user"})}),(0,e.jsxs)(D,{children:[(0,e.jsx)(y,{value:n,children:"All responsible users"}),(O.data?.users??[]).map(s=>(0,e.jsx)(y,{value:s.principalId,children:s.user?.name??s.user?.email??s.principalId.slice(0,8)},s.principalId))]})]}),(0,e.jsxs)(k,{value:S,onValueChange:V,children:[(0,e.jsx)(F,{className:"w-36",children:(0,e.jsx)(_,{placeholder:"Action"})}),(0,e.jsx)(D,{children:Fe.map(s=>(0,e.jsx)(y,{value:s.value,children:s.label},s.value))})]}),(0,e.jsxs)(k,{value:C,onValueChange:$,children:[(0,e.jsx)(F,{className:"w-36",children:(0,e.jsx)(_,{placeholder:"Entity"})}),(0,e.jsx)(D,{children:ke.map(s=>(0,e.jsx)(y,{value:s.value,children:s.label},s.value))})]}),(0,e.jsx)(se,{type:"date","aria-label":"From date",value:E,max:I||void 0,onChange:r(s=>q(s.target.value),"onChange"),className:"w-36"}),(0,e.jsx)(se,{type:"date","aria-label":"To date",value:I,min:E||void 0,onChange:r(s=>z(s.target.value),"onChange"),className:"w-36"}),b?(0,e.jsx)(T,{variant:"ghost",size:"sm",onClick:J,children:"Clear filters"}):null,(0,e.jsxs)(T,{variant:"outline",size:"sm",className:"ml-auto",onClick:me,disabled:Z||i.isLoading||Y.length===0,children:[(0,e.jsx)(Ie,{className:"mr-1.5 h-4 w-4"}),Z?"Exporting…":"Export CSV"]})]}):null,R||w?(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"py-14 text-center text-sm text-muted-foreground",children:"Refreshing audit access…"})}):i.isLoading?(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"py-14 text-center text-sm text-muted-foreground",children:"Loading…"})}):i.error?(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)("p",{className:"text-sm text-muted-foreground",children:i.error instanceof Error?i.error.message:"Failed to load the audit log."}),(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:r(()=>i.refetch(),"onClick"),children:"Try again"})]})}):Y.length===0?(0,e.jsx)(j,{children:(0,e.jsxs)(v,{className:"flex flex-col items-center gap-3 py-14 text-center",children:[(0,e.jsx)(_e,{className:"h-10 w-10 text-muted-foreground/40"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-foreground",children:b?"No actions match these filters":"Nothing here yet"}),(0,e.jsx)("p",{className:"mt-1 max-w-md text-sm text-muted-foreground",children:b?"Try a wider date range or different filters.":f==="agents"?"As soon as your agents start doing things, their actions show up here.":"As soon as anyone in your company does something, it shows up here."})]}),b?(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:J,children:"Clear filters"}):null]})}):(0,e.jsx)(j,{children:(0,e.jsx)(v,{className:"px-0 py-0",children:(0,e.jsx)("ul",{className:ge("divide-y divide-border"),children:Y.map(s=>(0,e.jsx)(ze,{record:s,agentMap:ie,userProfileMap:le},s.id))})})}),i.hasNextPage?(0,e.jsx)("div",{className:"flex justify-center",children:(0,e.jsx)(T,{variant:"outline",size:"sm",onClick:r(()=>i.fetchNextPage(),"onClick"),disabled:i.isFetchingNextPage,children:i.isFetchingNextPage?"Loading…":"Load more"})}):null,(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:"Recorded by Paperclip — entries can't be edited. Sensitive values are never stored."})]})}r(Oe,"AuditFeed");function rt(){const{selectedCompanyId:t}=fe(),{setBreadcrumbs:a}=Ae(),[d,u]=ve(),c=d.get("mode")==="agents"?"agents":"all";(0,l.useEffect)(()=>{a([{label:"Activity"}])},[a]);const h=(0,l.useCallback)(m=>{u(g=>{const x=new URLSearchParams(g);return m==="agents"?x.set("mode","agents"):x.delete("mode"),x},{replace:!0})},[u]);return t?(0,e.jsx)(Oe,{companyId:t,mode:c,onModeChange:h}):(0,e.jsx)(Te,{icon:Le,message:"Select a company to view activity."})}r(rt,"CompanyActivity");export{rt as CompanyActivity};