@xtrape/capsule-contracts-node 0.1.0-public-review.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  // src/index.ts
2
- import { customAlphabet } from "nanoid";
3
2
  import { z } from "zod";
4
3
  var AgentStatus = ["PENDING", "ONLINE", "OFFLINE", "DISABLED", "REVOKED"];
5
4
  var CapsuleServiceStatus = ["UNKNOWN", "HEALTHY", "UNHEALTHY", "STALE", "OFFLINE"];
@@ -9,32 +8,16 @@ var DangerLevel = ["LOW", "MEDIUM", "HIGH"];
9
8
  var AuditActorType = ["USER", "AGENT", "SYSTEM"];
10
9
  var AuditResult = ["SUCCESS", "FAILURE"];
11
10
  var TokenStatus = ["ACTIVE", "REVOKED", "EXPIRED", "USED"];
12
- var ErrorCode = {
13
- INTERNAL_ERROR: "INTERNAL_ERROR",
14
- VALIDATION_FAILED: "VALIDATION_FAILED",
15
- UNAUTHORIZED: "UNAUTHORIZED",
16
- FORBIDDEN: "FORBIDDEN",
17
- NOT_FOUND: "NOT_FOUND",
18
- CONFLICT: "CONFLICT",
19
- CSRF_INVALID: "CSRF_INVALID",
20
- ACTION_REQUIRES_CONFIRMATION: "ACTION_REQUIRES_CONFIRMATION",
21
- COMMAND_EXPIRED: "COMMAND_EXPIRED",
22
- TOKEN_REVOKED: "TOKEN_REVOKED",
23
- TOKEN_EXPIRED: "TOKEN_EXPIRED",
24
- AGENT_REVOKED: "AGENT_REVOKED",
25
- AGENT_DISABLED: "AGENT_DISABLED"
26
- };
27
- var idPrefixes = ["wks_", "usr_", "agt_", "tok_", "svc_", "hlr_", "cfg_", "act_", "cmd_", "crs_", "aud_"];
28
- var NANO = customAlphabet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-", 21);
29
- function newId(prefix) {
30
- return `${prefix}${NANO()}`;
31
- }
11
+ var AgentMode = ["embedded", "ophub"];
12
+ var ServiceKind = ["business", "infrastructure", "system"];
13
+ var ServiceKindSchema = z.enum(ServiceKind);
32
14
  var AnyJson = z.record(z.any());
33
15
  var AgentStatusSchema = z.enum(AgentStatus);
34
16
  var CapsuleServiceStatusSchema = z.enum(CapsuleServiceStatus);
35
17
  var HealthStatusSchema = z.enum(HealthStatus);
36
18
  var CommandStatusSchema = z.enum(CommandStatus);
37
19
  var DangerLevelSchema = z.enum(DangerLevel).default("LOW");
20
+ var AgentModeSchema = z.enum(AgentMode);
38
21
  var UserSchema = z.object({ id: z.string().startsWith("usr_"), username: z.string(), displayName: z.string().nullable().optional(), createdAt: z.string(), updatedAt: z.string() });
39
22
  var UserRole = z.enum(["owner", "operator", "viewer"]);
40
23
  var createUserRequestSchema = z.object({ username: z.string().min(1), password: z.string().min(12), displayName: z.string().optional(), role: UserRole.default("viewer") });
@@ -43,24 +26,41 @@ var resetUserPasswordRequestSchema = z.object({ password: z.string().min(12) });
43
26
  var AdminLoginRequestSchema = z.object({ username: z.string().min(1), password: z.string().min(1) });
44
27
  var adminLoginRequestSchema = AdminLoginRequestSchema;
45
28
  var AdminSessionSchema = z.object({ user: UserSchema, csrfToken: z.string(), expiresAt: z.string() });
46
- var AgentSchema = z.object({ id: z.string().startsWith("agt_"), code: z.string(), name: z.string().nullable().optional(), mode: z.enum(["embedded", "sidecar", "external"]), runtime: z.string().nullable().optional(), status: AgentStatusSchema, lastHeartbeatAt: z.string().nullable().optional(), createdAt: z.string(), updatedAt: z.string() });
29
+ var AgentSchema = z.object({ id: z.string().startsWith("agt_"), code: z.string(), name: z.string().nullable().optional(), mode: AgentModeSchema, runtime: z.string().nullable().optional(), status: AgentStatusSchema, lastHeartbeatAt: z.string().nullable().optional(), createdAt: z.string(), updatedAt: z.string() });
47
30
  var RegistrationTokenSchema = z.object({ id: z.string().startsWith("tok_"), name: z.string(), status: z.enum(TokenStatus), expiresAt: z.string().nullable().optional(), usedAt: z.string().nullable().optional(), createdAt: z.string() });
48
31
  var CreateRegistrationTokenRequestSchema = z.object({ name: z.string().default("Default registration token").optional(), expiresInSeconds: z.number().int().min(60).optional() });
49
32
  var createRegistrationTokenRequestSchema = CreateRegistrationTokenRequestSchema;
50
33
  var CreateRegistrationTokenResponseSchema = RegistrationTokenSchema.extend({ rawToken: z.string().startsWith("opstage_reg_") });
51
- var CapsuleManifestSchema = z.object({ kind: z.literal("CapsuleService"), schemaVersion: z.string().default("1.0").optional(), code: z.string().min(1), name: z.string().min(1), description: z.string().optional(), version: z.string().min(1), runtime: z.enum(["nodejs", "java", "python", "go", "other"]), agentMode: z.enum(["embedded", "sidecar", "external"]), capabilities: z.array(z.string()).optional(), labels: z.record(z.string()).optional() }).passthrough();
34
+ var ServiceCapabilitySchema = z.object({ name: z.string().min(1).max(120), label: z.string().max(200).optional(), description: z.string().max(2e3).optional(), metadata: AnyJson.optional() });
35
+ var serviceCapabilitySchema = ServiceCapabilitySchema;
36
+ var EventMetadataSchema = z.object({ name: z.string().min(1).max(160), direction: z.enum(["publish", "subscribe"]).optional(), schema: AnyJson.optional(), designOnly: z.boolean().default(true), metadata: AnyJson.optional() });
37
+ var eventMetadataSchema = EventMetadataSchema;
38
+ var CapsuleManifestSchema = z.object({ kind: z.literal("CapsuleService"), schemaVersion: z.string().default("1.0").optional(), code: z.string().min(1), name: z.string().min(1), description: z.string().optional(), version: z.string().min(1), runtime: z.enum(["nodejs", "java", "python", "go", "other"]), agentMode: AgentModeSchema, capabilities: z.array(z.union([z.string(), ServiceCapabilitySchema])).optional(), events: z.array(EventMetadataSchema).optional(), labels: z.record(z.string()).optional() }).passthrough();
52
39
  var HealthReportInputSchema = z.object({ status: HealthStatusSchema, message: z.string().optional(), details: AnyJson.optional() });
53
40
  var healthReportInputSchema = HealthReportInputSchema;
54
41
  var ConfigItemInputSchema = z.object({ key: z.string(), label: z.string().optional(), type: z.string(), source: z.string().optional(), editable: z.boolean().optional(), sensitive: z.boolean().optional(), valuePreview: z.string().optional(), defaultValue: z.string().optional(), secretRef: z.string().optional() });
55
42
  var configItemInputSchema = ConfigItemInputSchema;
56
43
  var ActionDefinitionInputSchema = z.object({ name: z.string(), label: z.string(), description: z.string().optional(), dangerLevel: z.enum(DangerLevel).default("LOW").optional(), requiresConfirmation: z.boolean().optional(), category: z.string().optional(), order: z.number().int().optional(), inputSchema: AnyJson.optional(), outputSchema: AnyJson.optional(), timeoutSeconds: z.number().int().positive().optional() });
57
44
  var actionDefinitionInputSchema = ActionDefinitionInputSchema;
58
- var ReportedServiceSchema = z.object({ code: z.string().min(1).max(80), name: z.string().min(1).max(200), description: z.string().max(2e3).optional(), version: z.string().max(80).optional(), runtime: z.string().optional(), manifest: AnyJson, health: HealthReportInputSchema.optional(), configs: z.array(ConfigItemInputSchema).optional(), actions: z.array(ActionDefinitionInputSchema).optional() });
45
+ var ReportedServiceSchema = z.object({
46
+ code: z.string().min(1).max(80),
47
+ name: z.string().min(1).max(200),
48
+ description: z.string().max(2e3).optional(),
49
+ version: z.string().max(80).optional(),
50
+ runtime: z.string().optional(),
51
+ manifest: AnyJson,
52
+ capabilities: z.array(ServiceCapabilitySchema).optional(),
53
+ events: z.array(EventMetadataSchema).optional(),
54
+ health: HealthReportInputSchema.optional(),
55
+ configs: z.array(ConfigItemInputSchema).optional(),
56
+ actions: z.array(ActionDefinitionInputSchema).optional(),
57
+ serviceKind: ServiceKindSchema.optional()
58
+ });
59
59
  var reportedServiceSchema = ReportedServiceSchema;
60
60
  var ServiceReportRequestSchema = z.object({ services: z.array(ReportedServiceSchema).min(1) });
61
61
  var serviceReportRequestSchema = ServiceReportRequestSchema;
62
62
  var RuntimeKindSchema = z.enum(["nodejs", "java", "python", "go", "other"]);
63
- var RegisterAgentRequestSchema = z.object({ registrationToken: z.string().startsWith("opstage_reg_"), agent: z.object({ code: z.string(), name: z.string().optional(), mode: z.literal("embedded"), runtime: RuntimeKindSchema.optional() }), service: ReportedServiceSchema.optional() });
63
+ var RegisterAgentRequestSchema = z.object({ registrationToken: z.string().startsWith("opstage_reg_"), agent: z.object({ code: z.string(), name: z.string().optional(), mode: AgentModeSchema.default("embedded"), runtime: RuntimeKindSchema.or(z.string()).optional() }), service: ReportedServiceSchema.optional() });
64
64
  var registerAgentRequestSchema = RegisterAgentRequestSchema;
65
65
  var RegisterAgentResponseSchema = z.object({ agentId: z.string().startsWith("agt_"), agentToken: z.string().startsWith("opstage_agent_"), heartbeatIntervalSeconds: z.number().int(), commandPollIntervalSeconds: z.number().int() });
66
66
  var AgentHeartbeatResponseSchema = z.object({ heartbeatIntervalSeconds: z.number().int(), commandPollIntervalSeconds: z.number().int() });
@@ -116,6 +116,21 @@ function parseSort(value, allowed) {
116
116
  function paginate(items, page, pageSize, total) {
117
117
  return { data: items, pagination: { page, pageSize, total } };
118
118
  }
119
+ var ErrorCode = {
120
+ INTERNAL_ERROR: "INTERNAL_ERROR",
121
+ VALIDATION_FAILED: "VALIDATION_FAILED",
122
+ UNAUTHORIZED: "UNAUTHORIZED",
123
+ FORBIDDEN: "FORBIDDEN",
124
+ NOT_FOUND: "NOT_FOUND",
125
+ CONFLICT: "CONFLICT",
126
+ CSRF_INVALID: "CSRF_INVALID",
127
+ ACTION_REQUIRES_CONFIRMATION: "ACTION_REQUIRES_CONFIRMATION",
128
+ COMMAND_EXPIRED: "COMMAND_EXPIRED",
129
+ TOKEN_REVOKED: "TOKEN_REVOKED",
130
+ TOKEN_EXPIRED: "TOKEN_EXPIRED",
131
+ AGENT_REVOKED: "AGENT_REVOKED",
132
+ AGENT_DISABLED: "AGENT_DISABLED"
133
+ };
119
134
  export {
120
135
  ActionDefinitionInputSchema,
121
136
  ActionDefinitionSchema,
@@ -124,6 +139,8 @@ export {
124
139
  AdminSessionSchema,
125
140
  AgentHeartbeatRequestSchema,
126
141
  AgentHeartbeatResponseSchema,
142
+ AgentMode,
143
+ AgentModeSchema,
127
144
  AgentSchema,
128
145
  AgentStatus,
129
146
  AgentStatusSchema,
@@ -151,6 +168,7 @@ export {
151
168
  DangerLevelSchema,
152
169
  DashboardSummarySchema,
153
170
  ErrorCode,
171
+ EventMetadataSchema,
154
172
  HealthReportInputSchema,
155
173
  HealthReportSchema,
156
174
  HealthStatus,
@@ -163,6 +181,9 @@ export {
163
181
  ReportCommandResultRequestSchema,
164
182
  ReportedServiceSchema,
165
183
  RuntimeKindSchema,
184
+ ServiceCapabilitySchema,
185
+ ServiceKind,
186
+ ServiceKindSchema,
166
187
  ServiceReportRequestSchema,
167
188
  SystemHealthSchema,
168
189
  SystemVersionSchema,
@@ -177,15 +198,15 @@ export {
177
198
  createActionCommandRequestSchema,
178
199
  createRegistrationTokenRequestSchema,
179
200
  createUserRequestSchema,
201
+ eventMetadataSchema,
180
202
  healthReportInputSchema,
181
- idPrefixes,
182
- newId,
183
203
  paginate,
184
204
  parseSort,
185
205
  registerAgentRequestSchema,
186
206
  reportCommandResultRequestSchema,
187
207
  reportedServiceSchema,
188
208
  resetUserPasswordRequestSchema,
209
+ serviceCapabilitySchema,
189
210
  serviceReportRequestSchema,
190
211
  updateUserRequestSchema,
191
212
  z
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xtrape/capsule-contracts-node",
3
- "version": "0.1.0-public-review.1",
3
+ "version": "0.3.0",
4
4
  "description": "TypeScript contracts and Zod schemas for Xtrape Capsule and Opstage wire protocols.",
5
5
  "keywords": [
6
6
  "xtrape",
@@ -44,7 +44,6 @@
44
44
  "lint": "tsc --noEmit"
45
45
  },
46
46
  "dependencies": {
47
- "nanoid": "^5.0.9",
48
47
  "zod": "^3.25.0"
49
48
  },
50
49
  "devDependencies": {