@agentdock/wire 0.0.45 → 0.0.46

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 (94) hide show
  1. package/dist/agentCapabilities.d.ts.map +1 -0
  2. package/dist/agentCapabilities.js +195 -1
  3. package/dist/agentCapabilities.js.map +1 -0
  4. package/dist/agentCommonEnv.d.ts.map +1 -0
  5. package/dist/agentCommonEnv.js +20 -1
  6. package/dist/agentCommonEnv.js.map +1 -0
  7. package/dist/agentInstallGuide.d.ts.map +1 -0
  8. package/dist/agentInstallGuide.js +81 -1
  9. package/dist/agentInstallGuide.js.map +1 -0
  10. package/dist/checkpointSchemas.d.ts.map +1 -0
  11. package/dist/checkpointSchemas.js +46 -1
  12. package/dist/checkpointSchemas.js.map +1 -0
  13. package/dist/controlLevel.d.ts.map +1 -0
  14. package/dist/controlLevel.js +11 -1
  15. package/dist/controlLevel.js.map +1 -0
  16. package/dist/edition.d.ts.map +1 -0
  17. package/dist/edition.js +13 -1
  18. package/dist/edition.js.map +1 -0
  19. package/dist/envelope.d.ts.map +1 -0
  20. package/dist/envelope.js +78 -1
  21. package/dist/envelope.js.map +1 -0
  22. package/dist/errorMessage.d.ts.map +1 -0
  23. package/dist/errorMessage.js +6 -1
  24. package/dist/errorMessage.js.map +1 -0
  25. package/dist/events.d.ts.map +1 -0
  26. package/dist/events.js +97 -1
  27. package/dist/events.js.map +1 -0
  28. package/dist/features.d.ts.map +1 -0
  29. package/dist/features.js +112 -1
  30. package/dist/features.js.map +1 -0
  31. package/dist/feedback.d.ts.map +1 -0
  32. package/dist/feedback.js +26 -1
  33. package/dist/feedback.js.map +1 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +64 -1
  36. package/dist/index.js.map +1 -0
  37. package/dist/interactionEvents.d.ts.map +1 -0
  38. package/dist/interactionEvents.js +108 -1
  39. package/dist/interactionEvents.js.map +1 -0
  40. package/dist/legacyProtocol.d.ts.map +1 -0
  41. package/dist/legacyProtocol.js +30 -1
  42. package/dist/legacyProtocol.js.map +1 -0
  43. package/dist/license.d.ts.map +1 -0
  44. package/dist/license.js +17 -1
  45. package/dist/license.js.map +1 -0
  46. package/dist/machine.d.ts.map +1 -0
  47. package/dist/machine.js +56 -1
  48. package/dist/machine.js.map +1 -0
  49. package/dist/messageMeta.d.ts.map +1 -0
  50. package/dist/messageMeta.js +60 -1
  51. package/dist/messageMeta.js.map +1 -0
  52. package/dist/messages.d.ts.map +1 -0
  53. package/dist/messages.js +35 -1
  54. package/dist/messages.js.map +1 -0
  55. package/dist/ops.d.ts.map +1 -0
  56. package/dist/ops.js +74 -1
  57. package/dist/ops.js.map +1 -0
  58. package/dist/pairing.d.ts.map +1 -0
  59. package/dist/pairing.js +115 -1
  60. package/dist/pairing.js.map +1 -0
  61. package/dist/protocol.d.ts.map +1 -0
  62. package/dist/protocol.js +7 -1
  63. package/dist/protocol.js.map +1 -0
  64. package/dist/rpc.d.ts.map +1 -0
  65. package/dist/rpc.js +246 -1
  66. package/dist/rpc.js.map +1 -0
  67. package/dist/scheduledTasks.d.ts.map +1 -0
  68. package/dist/scheduledTasks.js +81 -1
  69. package/dist/scheduledTasks.js.map +1 -0
  70. package/dist/semver.d.ts.map +1 -0
  71. package/dist/semver.js +60 -1
  72. package/dist/semver.js.map +1 -0
  73. package/dist/sessionResult.d.ts.map +1 -0
  74. package/dist/sessionResult.js +23 -1
  75. package/dist/sessionResult.js.map +1 -0
  76. package/dist/socketEvents.d.ts.map +1 -0
  77. package/dist/socketEvents.js +44 -1
  78. package/dist/socketEvents.js.map +1 -0
  79. package/dist/spawnError.d.ts.map +1 -0
  80. package/dist/spawnError.js +31 -1
  81. package/dist/spawnError.js.map +1 -0
  82. package/dist/stats.d.ts.map +1 -0
  83. package/dist/stats.js +126 -1
  84. package/dist/stats.js.map +1 -0
  85. package/dist/sync.d.ts.map +1 -0
  86. package/dist/sync.js +78 -1
  87. package/dist/sync.js.map +1 -0
  88. package/dist/telemetry.d.ts.map +1 -0
  89. package/dist/telemetry.js +80 -1
  90. package/dist/telemetry.js.map +1 -0
  91. package/dist/utils.d.ts.map +1 -0
  92. package/dist/utils.js +2 -1
  93. package/dist/utils.js.map +1 -0
  94. package/package.json +1 -1
package/dist/stats.js CHANGED
@@ -1 +1,126 @@
1
- "use strict";import{z as e}from"zod";import{AgentTypeSchema as n}from"./messageMeta.js";export const ModelUsageEntrySchema=e.object({inputTokens:e.number(),outputTokens:e.number(),cacheReadInputTokens:e.number(),cacheCreationInputTokens:e.number()}),DailyActivitySchema=e.object({date:e.string(),messageCount:e.number(),sessionCount:e.number(),toolCallCount:e.number()}),DailyModelTokensSchema=e.object({date:e.string(),tokensByModel:e.record(e.number())}),LongestSessionSchema=e.object({sessionId:e.string(),duration:e.number(),messageCount:e.number(),timestamp:e.string()}),SessionTokenSummarySchema=e.object({sessionId:e.string(),projectPath:e.string(),totalTokens:e.number(),messageCount:e.number(),startDate:e.string(),sessionTitle:e.string().optional()}),ClaudeStatsDataSchema=e.object({version:e.number(),totalSessions:e.number(),totalMessages:e.number(),dailyActivity:e.array(DailyActivitySchema),dailyModelTokens:e.array(DailyModelTokensSchema),modelUsage:e.record(ModelUsageEntrySchema),longestSession:LongestSessionSchema.nullable(),firstSessionDate:e.string().nullable(),hourCounts:e.record(e.number()),topSessions:e.array(SessionTokenSummarySchema).optional()}),ProjectSummarySchema=e.object({projectPath:e.string(),sessionCount:e.number(),subagentSessionCount:e.number(),totalTokens:e.number().optional().default(0)}),AgentTypeUsageSchema=e.object({agentType:n,totalSessions:e.number(),totalMessages:e.number(),totalTokens:e.number(),tokensUnavailable:e.boolean().optional(),stats:ClaudeStatsDataSchema.nullable().optional(),projects:e.array(ProjectSummarySchema).optional().default([])}),StatsOverviewSchema=e.object({stats:ClaudeStatsDataSchema.nullable(),projects:e.array(ProjectSummarySchema),costEstimates:e.record(e.number()).optional().default({}),totalEstimatedCost:e.number().optional().default(0),agentType:n.optional().default("claude"),agentTypeUsage:e.array(AgentTypeUsageSchema).optional().default([])});const t=e.string().regex(/^\d{4}-\d{2}-\d{2}$/);export const ActivityUploadSchema=e.object({date:t,stats:StatsOverviewSchema,machineId:e.string().min(1).optional()}),UsageReportSchema=e.object({sessionId:e.string().min(1),model:e.string().default("unknown"),tokens:e.object({inputTokens:e.number().int().nonnegative(),outputTokens:e.number().int().nonnegative(),cacheReadInputTokens:e.number().int().nonnegative().default(0),cacheCreationInputTokens:e.number().int().nonnegative().default(0)})}),TokenTrendPointSchema=e.object({date:e.string().regex(/^\d{4}-\d{2}-\d{2}$/),totalTokens:e.number().nonnegative(),inputTokens:e.number().nonnegative(),outputTokens:e.number().nonnegative(),byModel:e.record(e.number()).default({})}),ModelBreakdownEntrySchema=e.object({model:e.string().min(1),inputTokens:e.number().nonnegative(),outputTokens:e.number().nonnegative(),cacheReadInputTokens:e.number().nonnegative(),cacheCreationInputTokens:e.number().nonnegative()}),QuotaConfigSchema=e.object({dailyTokenLimit:e.number().int().positive().nullable(),monthlyTokenLimit:e.number().int().positive().nullable()}),QuotaStatusSchema=e.object({dailyUsed:e.number().nonnegative(),dailyLimit:e.number().int().positive().nullable(),monthlyUsed:e.number().nonnegative(),monthlyLimit:e.number().int().positive().nullable()});
1
+ /**
2
+ * Stats schemas for OBS-2 Activity Dashboard.
3
+ *
4
+ * Defines Zod schemas matching daemon ingest types,
5
+ * enabling type-safe RPC between web and daemon.
6
+ */
7
+ import { z } from 'zod';
8
+ import { AgentTypeSchema } from './messageMeta.js';
9
+ export const ModelUsageEntrySchema = z.object({
10
+ inputTokens: z.number(),
11
+ outputTokens: z.number(),
12
+ cacheReadInputTokens: z.number(),
13
+ cacheCreationInputTokens: z.number(),
14
+ });
15
+ export const DailyActivitySchema = z.object({
16
+ date: z.string(),
17
+ messageCount: z.number(),
18
+ sessionCount: z.number(),
19
+ toolCallCount: z.number(),
20
+ });
21
+ export const DailyModelTokensSchema = z.object({
22
+ date: z.string(),
23
+ tokensByModel: z.record(z.number()),
24
+ });
25
+ export const LongestSessionSchema = z.object({
26
+ sessionId: z.string(),
27
+ duration: z.number(),
28
+ messageCount: z.number(),
29
+ timestamp: z.string(),
30
+ });
31
+ export const SessionTokenSummarySchema = z.object({
32
+ sessionId: z.string(),
33
+ projectPath: z.string(),
34
+ totalTokens: z.number(),
35
+ messageCount: z.number(),
36
+ startDate: z.string(),
37
+ sessionTitle: z.string().optional(),
38
+ });
39
+ export const ClaudeStatsDataSchema = z.object({
40
+ version: z.number(),
41
+ totalSessions: z.number(),
42
+ totalMessages: z.number(),
43
+ dailyActivity: z.array(DailyActivitySchema),
44
+ dailyModelTokens: z.array(DailyModelTokensSchema),
45
+ modelUsage: z.record(ModelUsageEntrySchema),
46
+ longestSession: LongestSessionSchema.nullable(),
47
+ firstSessionDate: z.string().nullable(),
48
+ hourCounts: z.record(z.number()),
49
+ topSessions: z.array(SessionTokenSummarySchema).optional(),
50
+ });
51
+ export const ProjectSummarySchema = z.object({
52
+ projectPath: z.string(),
53
+ sessionCount: z.number(),
54
+ subagentSessionCount: z.number(),
55
+ totalTokens: z.number().optional().default(0),
56
+ });
57
+ /** Per-agent-type usage summary for multi-agent stats. */
58
+ export const AgentTypeUsageSchema = z.object({
59
+ agentType: AgentTypeSchema,
60
+ totalSessions: z.number(),
61
+ totalMessages: z.number(),
62
+ totalTokens: z.number(),
63
+ /** True when the agent cannot report token data (e.g. Copilot ACP). */
64
+ tokensUnavailable: z.boolean().optional(),
65
+ /** Full stats breakdown for this agent type (enables per-agent charts). */
66
+ stats: ClaudeStatsDataSchema.nullable().optional(),
67
+ /** Per-agent project summaries (sessions belonging to this agent only). */
68
+ projects: z.array(ProjectSummarySchema).optional().default([]),
69
+ });
70
+ export const StatsOverviewSchema = z.object({
71
+ stats: ClaudeStatsDataSchema.nullable(),
72
+ projects: z.array(ProjectSummarySchema),
73
+ costEstimates: z.record(z.number()).optional().default({}),
74
+ totalEstimatedCost: z.number().optional().default(0),
75
+ agentType: AgentTypeSchema.optional().default('claude'),
76
+ /** Per-agent-type breakdown (multi-agent stats). */
77
+ agentTypeUsage: z.array(AgentTypeUsageSchema).optional().default([]),
78
+ });
79
+ // ── Date String (local helper) ──────────────────────────────
80
+ /** Date string in YYYY-MM-DD format. */
81
+ const DateStringSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/);
82
+ // ── Activity Upload (daemon → server) ───────────────────────
83
+ export const ActivityUploadSchema = z.object({
84
+ date: DateStringSchema,
85
+ stats: StatsOverviewSchema,
86
+ machineId: z.string().min(1).optional(),
87
+ });
88
+ // ── Usage Report (daemon → server, real-time per-message) ───
89
+ export const UsageReportSchema = z.object({
90
+ sessionId: z.string().min(1),
91
+ model: z.string().default('unknown'),
92
+ tokens: z.object({
93
+ inputTokens: z.number().int().nonnegative(),
94
+ outputTokens: z.number().int().nonnegative(),
95
+ cacheReadInputTokens: z.number().int().nonnegative().default(0),
96
+ cacheCreationInputTokens: z.number().int().nonnegative().default(0),
97
+ }),
98
+ });
99
+ // ── Token Trend Point ───────────────────────────────────────
100
+ export const TokenTrendPointSchema = z.object({
101
+ date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
102
+ totalTokens: z.number().nonnegative(),
103
+ inputTokens: z.number().nonnegative(),
104
+ outputTokens: z.number().nonnegative(),
105
+ byModel: z.record(z.number()).default({}),
106
+ });
107
+ // ── Model Breakdown Entry ───────────────────────────────────
108
+ export const ModelBreakdownEntrySchema = z.object({
109
+ model: z.string().min(1),
110
+ inputTokens: z.number().nonnegative(),
111
+ outputTokens: z.number().nonnegative(),
112
+ cacheReadInputTokens: z.number().nonnegative(),
113
+ cacheCreationInputTokens: z.number().nonnegative(),
114
+ });
115
+ // ── Enterprise Quota ───────────────────────────────────────
116
+ export const QuotaConfigSchema = z.object({
117
+ dailyTokenLimit: z.number().int().positive().nullable(),
118
+ monthlyTokenLimit: z.number().int().positive().nullable(),
119
+ });
120
+ export const QuotaStatusSchema = z.object({
121
+ dailyUsed: z.number().nonnegative(),
122
+ dailyLimit: z.number().int().positive().nullable(),
123
+ monthlyUsed: z.number().nonnegative(),
124
+ monthlyLimit: z.number().int().positive().nullable(),
125
+ });
126
+ //# sourceMappingURL=stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,6BAA6B;;;;;;;;;EAGxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,qCAAqC;;;;;;;;;EAGhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG,eAAO,MAAM,oCAAoC;;;;;;;;;EAG/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAIlG,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;IASlC,uEAAuE;;IAEvE,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE7E,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,4BAA4B;;;;;;;;;EAGvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAlC/B,uEAAuE;;IAEvE,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqC7E,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA5CpC,uEAAuE;;QAEvE,6EAA6E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+C7E,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
package/dist/sync.js CHANGED
@@ -1 +1,78 @@
1
- "use strict";import{z as e}from"zod";import{SessionMessageSchema as t}from"./messages.js";import{PlatformSchema as o}from"./machine.js";export const VersionedEncryptedValueSchema=e.object({version:e.number(),value:e.string()}),VersionedNullableEncryptedValueSchema=e.object({version:e.number(),value:e.string().nullable()}),VersionedMachineEncryptedValueSchema=e.object({version:e.number(),value:e.string()}),UpdateNewMessageBodySchema=e.object({t:e.literal("new-message"),sid:e.string(),message:t}),UpdateSessionBodySchema=e.object({t:e.literal("update-session"),id:e.string(),tag:e.string().optional(),displayName:e.string().nullish(),machineId:e.string().optional(),metadata:VersionedEncryptedValueSchema.nullish(),agentState:VersionedNullableEncryptedValueSchema.nullish(),active:e.boolean().optional(),source:e.enum(["managed","history","scheduled"]).optional(),dataEncryptionKey:e.string().nullish()}),UpdateMachineBodySchema=e.object({t:e.literal("update-machine"),machineId:e.string(),metadata:VersionedMachineEncryptedValueSchema.nullish(),daemonState:VersionedMachineEncryptedValueSchema.nullish(),active:e.boolean().optional(),activeAt:e.number().optional(),hostname:e.string().optional(),platform:o.optional(),arch:e.string().optional(),daemonVersion:e.string().optional(),displayName:e.string().optional(),availableAgents:e.array(e.string()).optional(),supportedMethods:e.array(e.string()).optional(),disconnectReason:e.enum(["normal","upgrade-required"]).optional(),upgradeStatus:e.enum(["idle","preflight","downloading","switching","failed"]).optional(),upgradeError:e.string().optional(),superseded:e.boolean().optional()}),UpdateSessionResetBodySchema=e.object({t:e.literal("session-reset"),sessionId:e.string()}),CoreUpdateBodySchema=e.discriminatedUnion("t",[UpdateNewMessageBodySchema,UpdateSessionBodySchema,UpdateMachineBodySchema,UpdateSessionResetBodySchema]),CoreUpdateContainerSchema=e.object({id:e.string(),seq:e.number(),body:CoreUpdateBodySchema,createdAt:e.number()});
1
+ /**
2
+ * Sync update protocol — aligned with Happy messages.ts.
3
+ *
4
+ * Defines CoreUpdateContainer and its body types for real-time state sync.
5
+ */
6
+ import { z } from 'zod';
7
+ import { SessionMessageSchema } from './messages.js';
8
+ import { PlatformSchema } from './machine.js';
9
+ // ── Versioned encrypted values ──────────────────────────────────────
10
+ export const VersionedEncryptedValueSchema = z.object({
11
+ version: z.number(),
12
+ value: z.string(),
13
+ });
14
+ export const VersionedNullableEncryptedValueSchema = z.object({
15
+ version: z.number(),
16
+ value: z.string().nullable(),
17
+ });
18
+ export const VersionedMachineEncryptedValueSchema = z.object({
19
+ version: z.number(),
20
+ value: z.string(),
21
+ });
22
+ // ── Update body types ───────────────────────────────────────────────
23
+ export const UpdateNewMessageBodySchema = z.object({
24
+ t: z.literal('new-message'),
25
+ sid: z.string(),
26
+ message: SessionMessageSchema,
27
+ });
28
+ export const UpdateSessionBodySchema = z.object({
29
+ t: z.literal('update-session'),
30
+ id: z.string(),
31
+ tag: z.string().optional(),
32
+ displayName: z.string().nullish(),
33
+ machineId: z.string().optional(),
34
+ metadata: VersionedEncryptedValueSchema.nullish(),
35
+ agentState: VersionedNullableEncryptedValueSchema.nullish(),
36
+ active: z.boolean().optional(),
37
+ /** Session source — promoted from 'history' to 'managed' on resume. */
38
+ source: z.enum(['managed', 'history', 'scheduled']).optional(),
39
+ /** Base64-encoded wrapped DEK — only present on session-create broadcast. */
40
+ dataEncryptionKey: z.string().nullish(),
41
+ });
42
+ export const UpdateMachineBodySchema = z.object({
43
+ t: z.literal('update-machine'),
44
+ machineId: z.string(),
45
+ metadata: VersionedMachineEncryptedValueSchema.nullish(),
46
+ daemonState: VersionedMachineEncryptedValueSchema.nullish(),
47
+ active: z.boolean().optional(),
48
+ activeAt: z.number().optional(),
49
+ hostname: z.string().optional(),
50
+ platform: PlatformSchema.optional(),
51
+ arch: z.string().optional(),
52
+ daemonVersion: z.string().optional(),
53
+ displayName: z.string().optional(),
54
+ availableAgents: z.array(z.string()).optional(),
55
+ supportedMethods: z.array(z.string()).optional(),
56
+ disconnectReason: z.enum(['normal', 'upgrade-required']).optional(),
57
+ upgradeStatus: z.enum(['idle', 'preflight', 'downloading', 'switching', 'failed']).optional(),
58
+ upgradeError: z.string().optional(),
59
+ superseded: z.boolean().optional(),
60
+ });
61
+ export const UpdateSessionResetBodySchema = z.object({
62
+ t: z.literal('session-reset'),
63
+ sessionId: z.string(),
64
+ });
65
+ export const CoreUpdateBodySchema = z.discriminatedUnion('t', [
66
+ UpdateNewMessageBodySchema,
67
+ UpdateSessionBodySchema,
68
+ UpdateMachineBodySchema,
69
+ UpdateSessionResetBodySchema,
70
+ ]);
71
+ // ── Update container ────────────────────────────────────────────────
72
+ export const CoreUpdateContainerSchema = z.object({
73
+ id: z.string(),
74
+ seq: z.number(),
75
+ body: CoreUpdateBodySchema,
76
+ createdAt: z.number(),
77
+ });
78
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB,iMASnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAsC1E,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,EACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAoBrC;AAID,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
package/dist/telemetry.js CHANGED
@@ -1 +1,80 @@
1
- "use strict";import{z as e}from"zod";export const TelemetryEventTypeSchema=e.enum(["scanner.format_mismatch","scanner.parse_error","scanner.version_unknown","session.start_failed","session.crash","rpc.call_failed","upgrade.failed","protocol.incompatible"]);const c={"scanner.format_mismatch":["filePath","totalLines","parsedLines","errorCount","unknownLines","samples"],"scanner.parse_error":["filePath","totalLines","errorCount","error","lineNumber"],"scanner.version_unknown":["detectedVersion","supportedRange"],"session.start_failed":["cwd","agentBinary","exitCode","stderr"],"session.crash":["exitCode","signal","stderr","agentType"],"rpc.call_failed":["method","error"],"upgrade.failed":["fromVersion","toVersion","stage","error"],"protocol.incompatible":["clientVersion","serverVersion","minRequired"]},d=/\b(?:\d{1,3}\.){3}\d{1,3}\b|[\w.+-]+@[\w.-]+\.\w+|\b(?:Bearer|token|sk-|api[_-]?key)\s*[:=]?\s*\S+/gi;function a(r){if(typeof r=="string")return r.replace(d,"[REDACTED]");if(Array.isArray(r))return r.map(a);if(typeof r=="number"||typeof r=="boolean"||r===null)return r}export function sanitizeContext(r,t){if(!t)return;const s=c[r];if(!s)return;const n={};for(const o of s)if(o in t){const i=a(t[o]);i!==void 0&&(n[o]=i)}return typeof n.stderr=="string"&&n.stderr.length>500&&(n.stderr=n.stderr.slice(0,500)),Object.keys(n).length>0?n:void 0}export const TelemetryEventSchema=e.object({type:TelemetryEventTypeSchema,timestamp:e.string(),agentType:e.string().optional(),agentVersion:e.string().optional(),daemonVersion:e.string(),code:e.string(),message:e.string(),context:e.record(e.unknown()).optional()}),TelemetryReportPayloadSchema=e.object({machineId:e.string(),events:e.array(TelemetryEventSchema).max(100)});
1
+ import { z } from 'zod';
2
+ // ── Telemetry Event Types ──────────────────────────────────
3
+ export const TelemetryEventTypeSchema = z.enum([
4
+ 'scanner.format_mismatch',
5
+ 'scanner.parse_error',
6
+ 'scanner.version_unknown',
7
+ 'session.start_failed',
8
+ 'session.crash',
9
+ 'rpc.call_failed',
10
+ 'upgrade.failed',
11
+ 'protocol.incompatible',
12
+ ]);
13
+ // ── Context Allowlist (per event type) ─────────────────────
14
+ const CONTEXT_ALLOWLIST = {
15
+ 'scanner.format_mismatch': [
16
+ 'filePath',
17
+ 'totalLines',
18
+ 'parsedLines',
19
+ 'errorCount',
20
+ 'unknownLines',
21
+ 'samples',
22
+ ],
23
+ 'scanner.parse_error': ['filePath', 'totalLines', 'errorCount', 'error', 'lineNumber'],
24
+ 'scanner.version_unknown': ['detectedVersion', 'supportedRange'],
25
+ 'session.start_failed': ['cwd', 'agentBinary', 'exitCode', 'stderr'],
26
+ 'session.crash': ['exitCode', 'signal', 'stderr', 'agentType'],
27
+ 'rpc.call_failed': ['method', 'error'],
28
+ 'upgrade.failed': ['fromVersion', 'toVersion', 'stage', 'error'],
29
+ 'protocol.incompatible': ['clientVersion', 'serverVersion', 'minRequired'],
30
+ };
31
+ const SENSITIVE_PATTERN = /\b(?:\d{1,3}\.){3}\d{1,3}\b|[\w.+-]+@[\w.-]+\.\w+|\b(?:Bearer|token|sk-|api[_-]?key)\s*[:=]?\s*\S+/gi;
32
+ function sanitizeValue(val) {
33
+ if (typeof val === 'string') {
34
+ return val.replace(SENSITIVE_PATTERN, '[REDACTED]');
35
+ }
36
+ if (Array.isArray(val)) {
37
+ return val.map(sanitizeValue);
38
+ }
39
+ if (typeof val === 'number' || typeof val === 'boolean' || val === null) {
40
+ return val;
41
+ }
42
+ return undefined;
43
+ }
44
+ export function sanitizeContext(type, ctx) {
45
+ if (!ctx)
46
+ return undefined;
47
+ const allowed = CONTEXT_ALLOWLIST[type];
48
+ if (!allowed)
49
+ return undefined;
50
+ const result = {};
51
+ for (const key of allowed) {
52
+ if (key in ctx) {
53
+ const sanitized = sanitizeValue(ctx[key]);
54
+ if (sanitized !== undefined) {
55
+ result[key] = sanitized;
56
+ }
57
+ }
58
+ }
59
+ if (typeof result['stderr'] === 'string' && result['stderr'].length > 500) {
60
+ result['stderr'] = result['stderr'].slice(0, 500);
61
+ }
62
+ return Object.keys(result).length > 0 ? result : undefined;
63
+ }
64
+ // ── Telemetry Event Schema ─────────────────────────────────
65
+ export const TelemetryEventSchema = z.object({
66
+ type: TelemetryEventTypeSchema,
67
+ timestamp: z.string(),
68
+ agentType: z.string().optional(),
69
+ agentVersion: z.string().optional(),
70
+ daemonVersion: z.string(),
71
+ code: z.string(),
72
+ message: z.string(),
73
+ context: z.record(z.unknown()).optional(),
74
+ });
75
+ // ── Batch Report Payload ───────────────────────────────────
76
+ export const TelemetryReportPayloadSchema = z.object({
77
+ machineId: z.string(),
78
+ events: z.array(TelemetryEventSchema).max(100),
79
+ });
80
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/utils.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";export{createId}from"@paralleldrive/cuid2";
1
+ export { createId } from '@paralleldrive/cuid2';
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentdock/wire",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "description": "Protocol definitions for AgentDock — Zod schemas, message formats, RPC types",
5
5
  "license": "UNLICENSED",
6
6
  "author": "kevin8536945",