@pulumix/core 0.1.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 (66) hide show
  1. package/dist/dev/env-builder.d.ts +9 -0
  2. package/dist/dev/env-builder.d.ts.map +1 -0
  3. package/dist/dev/env-builder.js +67 -0
  4. package/dist/dev/env-builder.js.map +1 -0
  5. package/dist/dev/index.d.ts +20 -0
  6. package/dist/dev/index.d.ts.map +1 -0
  7. package/dist/dev/index.js +272 -0
  8. package/dist/dev/index.js.map +1 -0
  9. package/dist/dev/local-runner.d.ts +13 -0
  10. package/dist/dev/local-runner.d.ts.map +1 -0
  11. package/dist/dev/local-runner.js +100 -0
  12. package/dist/dev/local-runner.js.map +1 -0
  13. package/dist/dev/port-forward.d.ts +10 -0
  14. package/dist/dev/port-forward.d.ts.map +1 -0
  15. package/dist/dev/port-forward.js +146 -0
  16. package/dist/dev/port-forward.js.map +1 -0
  17. package/dist/dev/service-swap.d.ts +27 -0
  18. package/dist/dev/service-swap.d.ts.map +1 -0
  19. package/dist/dev/service-swap.js +272 -0
  20. package/dist/dev/service-swap.js.map +1 -0
  21. package/dist/dev/types.d.ts +60 -0
  22. package/dist/dev/types.d.ts.map +1 -0
  23. package/dist/dev/types.js +28 -0
  24. package/dist/dev/types.js.map +1 -0
  25. package/dist/docker.d.ts +55 -0
  26. package/dist/docker.d.ts.map +1 -0
  27. package/dist/docker.js +331 -0
  28. package/dist/docker.js.map +1 -0
  29. package/dist/index.d.ts +12 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +29 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/orchestrator/events.d.ts +28 -0
  34. package/dist/orchestrator/events.d.ts.map +1 -0
  35. package/dist/orchestrator/events.js +142 -0
  36. package/dist/orchestrator/events.js.map +1 -0
  37. package/dist/orchestrator/index.d.ts +32 -0
  38. package/dist/orchestrator/index.d.ts.map +1 -0
  39. package/dist/orchestrator/index.js +722 -0
  40. package/dist/orchestrator/index.js.map +1 -0
  41. package/dist/types/errors.d.ts +76 -0
  42. package/dist/types/errors.d.ts.map +1 -0
  43. package/dist/types/errors.js +271 -0
  44. package/dist/types/errors.js.map +1 -0
  45. package/dist/types/events.d.ts +100 -0
  46. package/dist/types/events.d.ts.map +1 -0
  47. package/dist/types/events.js +40 -0
  48. package/dist/types/events.js.map +1 -0
  49. package/dist/types/manifest.d.ts +121 -0
  50. package/dist/types/manifest.d.ts.map +1 -0
  51. package/dist/types/manifest.js +3 -0
  52. package/dist/types/manifest.js.map +1 -0
  53. package/dist/types/service.d.ts +35 -0
  54. package/dist/types/service.d.ts.map +1 -0
  55. package/dist/types/service.js +3 -0
  56. package/dist/types/service.js.map +1 -0
  57. package/dist/utils/kubernetes.d.ts +10 -0
  58. package/dist/utils/kubernetes.d.ts.map +1 -0
  59. package/dist/utils/kubernetes.js +38 -0
  60. package/dist/utils/kubernetes.js.map +1 -0
  61. package/dist/validation/manifest.d.ts +5 -0
  62. package/dist/validation/manifest.d.ts.map +1 -0
  63. package/dist/validation/manifest.js +114 -0
  64. package/dist/validation/manifest.js.map +1 -0
  65. package/package.json +49 -0
  66. package/src/schemas/service-manifest.schema.json +267 -0
@@ -0,0 +1,267 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://pulumix.dev/schemas/service-manifest.json",
4
+ "title": "Pulumix Service Manifest",
5
+ "description": "Standard manifest for Pulumix federated services",
6
+ "type": "object",
7
+ "required": ["metadata", "stacks"],
8
+ "properties": {
9
+ "metadata": {
10
+ "type": "object",
11
+ "required": ["name", "version"],
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "description": "Service name (must match directory name)",
16
+ "pattern": "^[a-z0-9-]+$"
17
+ },
18
+ "version": {
19
+ "type": "string",
20
+ "description": "Service version (semver)",
21
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
22
+ },
23
+ "description": {
24
+ "type": "string",
25
+ "description": "Brief service description"
26
+ },
27
+ "team": {
28
+ "type": "string",
29
+ "description": "Owning team name"
30
+ },
31
+ "owner": {
32
+ "type": "string",
33
+ "description": "Service owner email",
34
+ "format": "email"
35
+ },
36
+ "repository": {
37
+ "type": "string",
38
+ "description": "Source code repository URL",
39
+ "format": "uri"
40
+ },
41
+ "documentation": {
42
+ "type": "string",
43
+ "description": "Documentation URL",
44
+ "format": "uri"
45
+ },
46
+ "tags": {
47
+ "type": "object",
48
+ "description": "Custom tags for categorization",
49
+ "additionalProperties": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "sla": {
54
+ "type": "object",
55
+ "description": "Service level agreement",
56
+ "properties": {
57
+ "availability": {
58
+ "type": "string",
59
+ "description": "Target availability (e.g., '99.9%')",
60
+ "pattern": "^\\d+(\\.\\d+)?%$"
61
+ },
62
+ "responseTime": {
63
+ "type": "string",
64
+ "description": "Target response time (e.g., '200ms')"
65
+ },
66
+ "errorRate": {
67
+ "type": "string",
68
+ "description": "Maximum error rate (e.g., '0.1%')"
69
+ }
70
+ }
71
+ },
72
+ "support": {
73
+ "type": "object",
74
+ "description": "Support contact information",
75
+ "properties": {
76
+ "email": {
77
+ "type": "string",
78
+ "format": "email"
79
+ },
80
+ "slack": {
81
+ "type": "string",
82
+ "description": "Slack channel (e.g., '#platform-support')"
83
+ },
84
+ "pagerduty": {
85
+ "type": "string",
86
+ "description": "PagerDuty service name"
87
+ },
88
+ "oncall": {
89
+ "type": "string",
90
+ "description": "On-call rotation URL"
91
+ }
92
+ }
93
+ },
94
+ "contract": {
95
+ "type": "object",
96
+ "description": "Output contract versioning",
97
+ "required": ["version"],
98
+ "properties": {
99
+ "version": {
100
+ "type": "string",
101
+ "description": "Contract version (semver)",
102
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
103
+ },
104
+ "breaking": {
105
+ "type": "array",
106
+ "description": "Breaking changes in this version",
107
+ "items": {
108
+ "type": "string"
109
+ }
110
+ },
111
+ "deprecated": {
112
+ "type": "array",
113
+ "description": "Deprecated output fields",
114
+ "items": {
115
+ "type": "object",
116
+ "properties": {
117
+ "field": {
118
+ "type": "string"
119
+ },
120
+ "since": {
121
+ "type": "string"
122
+ },
123
+ "removeIn": {
124
+ "type": "string"
125
+ },
126
+ "replacement": {
127
+ "type": "string"
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ },
136
+ "observability": {
137
+ "type": "object",
138
+ "description": "Observability configuration",
139
+ "properties": {
140
+ "health": {
141
+ "type": "object",
142
+ "properties": {
143
+ "endpoint": {
144
+ "type": "string",
145
+ "default": "/health"
146
+ },
147
+ "port": {
148
+ "type": "integer",
149
+ "minimum": 1,
150
+ "maximum": 65535
151
+ },
152
+ "scheme": {
153
+ "type": "string",
154
+ "enum": ["http", "https"],
155
+ "default": "http"
156
+ }
157
+ }
158
+ },
159
+ "metrics": {
160
+ "type": "object",
161
+ "properties": {
162
+ "endpoint": {
163
+ "type": "string",
164
+ "default": "/metrics"
165
+ },
166
+ "port": {
167
+ "type": "integer",
168
+ "minimum": 1,
169
+ "maximum": 65535
170
+ },
171
+ "format": {
172
+ "type": "string",
173
+ "enum": ["prometheus", "opentelemetry"],
174
+ "default": "prometheus"
175
+ }
176
+ }
177
+ },
178
+ "logs": {
179
+ "type": "object",
180
+ "properties": {
181
+ "format": {
182
+ "type": "string",
183
+ "enum": ["json", "text"],
184
+ "default": "json"
185
+ },
186
+ "level": {
187
+ "type": "string",
188
+ "enum": ["debug", "info", "warn", "error"],
189
+ "default": "info"
190
+ }
191
+ }
192
+ }
193
+ }
194
+ },
195
+ "security": {
196
+ "type": "object",
197
+ "description": "Security policies",
198
+ "properties": {
199
+ "networkPolicy": {
200
+ "type": "object",
201
+ "properties": {
202
+ "enabled": {
203
+ "type": "boolean",
204
+ "default": true
205
+ },
206
+ "ingress": {
207
+ "type": "array",
208
+ "items": {
209
+ "type": "object",
210
+ "properties": {
211
+ "from": {
212
+ "type": "array"
213
+ },
214
+ "ports": {
215
+ "type": "array",
216
+ "items": {
217
+ "type": "integer"
218
+ }
219
+ }
220
+ }
221
+ }
222
+ },
223
+ "egress": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object"
227
+ }
228
+ }
229
+ }
230
+ },
231
+ "rbac": {
232
+ "type": "object",
233
+ "properties": {
234
+ "serviceAccount": {
235
+ "type": "string"
236
+ },
237
+ "roles": {
238
+ "type": "array",
239
+ "items": {
240
+ "type": "string"
241
+ }
242
+ }
243
+ }
244
+ },
245
+ "secrets": {
246
+ "type": "object",
247
+ "properties": {
248
+ "provider": {
249
+ "type": "string",
250
+ "enum": ["kubernetes", "vault", "aws-secrets-manager", "azure-keyvault"]
251
+ },
252
+ "path": {
253
+ "type": "string"
254
+ }
255
+ }
256
+ }
257
+ }
258
+ },
259
+ "stacks": {
260
+ "type": "object",
261
+ "description": "Stack-specific configuration",
262
+ "additionalProperties": {
263
+ "type": "object"
264
+ }
265
+ }
266
+ }
267
+ }