@astrale-domains/services 0.2.4 → 0.2.5

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 (54) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +8 -7
  3. package/dist/schema/index.d.ts +2 -2
  4. package/dist/schema/index.js +2 -2
  5. package/dist/schema/modules/service/classes/cloudflare-worker.d.ts +2412 -4251
  6. package/dist/schema/modules/service/classes/cloudflare-worker.js +1 -1
  7. package/dist/schema/modules/service/classes/service-owned-by.d.ts +4 -4
  8. package/dist/schema/modules/service/classes/service-owned-by.js +2 -2
  9. package/dist/schema/modules/service/classes/service.d.ts +56 -35
  10. package/dist/schema/modules/service/classes/service.js +12 -21
  11. package/dist/schema/modules/service/functions/delete-service-secret.d.ts +3 -3
  12. package/dist/schema/modules/service/functions/delete-service-secret.js +3 -1
  13. package/dist/schema/modules/service/functions/delete-service.d.ts +1 -1
  14. package/dist/schema/modules/service/functions/delete-service.js +3 -1
  15. package/dist/schema/modules/service/functions/deploy-cloudflare-worker.d.ts +161 -14
  16. package/dist/schema/modules/service/functions/deploy-cloudflare-worker.js +47 -2
  17. package/dist/schema/modules/service/functions/index.d.ts +2 -1
  18. package/dist/schema/modules/service/functions/index.js +1 -1
  19. package/dist/schema/modules/service/functions/list-service-logs.d.ts +1 -1
  20. package/dist/schema/modules/service/functions/list-service-logs.js +3 -1
  21. package/dist/schema/modules/service/functions/list-service-schedules.d.ts +1 -1
  22. package/dist/schema/modules/service/functions/list-service-schedules.js +3 -1
  23. package/dist/schema/modules/service/functions/list-service-secret-names.d.ts +1 -1
  24. package/dist/schema/modules/service/functions/list-service-secret-names.js +3 -1
  25. package/dist/schema/modules/service/functions/replace-service-schedules.d.ts +1 -1
  26. package/dist/schema/modules/service/functions/replace-service-schedules.js +3 -1
  27. package/dist/schema/modules/service/functions/set-service-secret.d.ts +1 -1
  28. package/dist/schema/modules/service/functions/set-service-secret.js +3 -1
  29. package/dist/schema/modules/service/index.d.ts +7 -4
  30. package/dist/schema/modules/service/index.js +4 -3
  31. package/dist/schema/modules/service/policies/index.d.ts +1 -1
  32. package/dist/schema/modules/service/policies/index.js +1 -1
  33. package/dist/schema/modules/service/policies/own-service.d.ts +2 -0
  34. package/dist/schema/modules/service/policies/own-service.js +7 -0
  35. package/dist/schema/modules/service/policies/traverse-owned-service.js +2 -2
  36. package/dist/schema/modules/service/states/index.d.ts +2 -0
  37. package/dist/schema/modules/service/states/index.js +1 -0
  38. package/dist/schema/modules/service/states/service-lifecycle.d.ts +25 -0
  39. package/dist/schema/modules/service/states/service-lifecycle.js +26 -0
  40. package/dist/schema/modules/service/types/index.d.ts +0 -7
  41. package/dist/schema/modules/service/types/index.js +0 -4
  42. package/dist/schema/schema.d.ts +1950 -3768
  43. package/dist/schema/schema.js +2 -2
  44. package/package.json +3 -3
  45. package/dist/schema/modules/service/policies/observe-service.d.ts +0 -2
  46. package/dist/schema/modules/service/policies/observe-service.js +0 -7
  47. package/dist/schema/modules/service/types/deploy-service-input.d.ts +0 -130
  48. package/dist/schema/modules/service/types/deploy-service-input.js +0 -40
  49. package/dist/schema/modules/service/types/deploy-service-output.d.ts +0 -74
  50. package/dist/schema/modules/service/types/deploy-service-output.js +0 -24
  51. package/dist/schema/modules/service/types/service-deployment-rejection.d.ts +0 -11
  52. package/dist/schema/modules/service/types/service-deployment-rejection.js +0 -6
  53. package/dist/schema/modules/service/types/service-lifecycle.d.ts +0 -8
  54. package/dist/schema/modules/service/types/service-lifecycle.js +0 -2
@@ -1,8 +1,10 @@
1
1
  import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
+ import { OwnService } from '../policies/own-service.js';
3
4
  export const listServiceSchedules = method({
4
5
  description: 'List active Service cron expressions.',
5
- auth: 'authenticated',
6
+ auth: 'authorized',
7
+ policy: ({ check, self }) => check(OwnService, self),
6
8
  input: z.strictObject({}),
7
9
  output: z.array(z.string()),
8
10
  });
@@ -1,4 +1,4 @@
1
1
  export declare const listServiceSecretNames: import("@astrale-os/sdk/schema").Method<import("@astrale-os/sdk/schema").CallableProjection<Record<string, never>, {
2
2
  readonly mode: 'value';
3
3
  readonly value: string[];
4
- }, "authenticated", false, "default">>;
4
+ }, "authorized", false, "default">>;
@@ -1,9 +1,11 @@
1
1
  import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
+ import { OwnService } from '../policies/own-service.js';
3
4
  import { secretName } from '../types/index.js';
4
5
  export const listServiceSecretNames = method({
5
6
  description: 'List write-only Service secret names without exposing values.',
6
- auth: 'authenticated',
7
+ auth: 'authorized',
8
+ policy: ({ check, self }) => check(OwnService, self),
7
9
  input: z.strictObject({}),
8
10
  output: z.array(secretName),
9
11
  });
@@ -8,4 +8,4 @@ export declare const replaceServiceSchedules: import("@astrale-os/sdk/schema").M
8
8
  kind: "rejected";
9
9
  reason: "invalid-schedule" | "service-unavailable";
10
10
  };
11
- }, "authenticated", false, "default">>;
11
+ }, "authorized", false, "default">>;
@@ -1,8 +1,10 @@
1
1
  import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
+ import { OwnService } from '../policies/own-service.js';
3
4
  export const replaceServiceSchedules = method({
4
5
  description: 'Replace the complete Service cron set.',
5
- auth: 'authenticated',
6
+ auth: 'authorized',
7
+ policy: ({ check, self }) => check(OwnService, self),
6
8
  input: z.strictObject({ crons: z.array(z.string()).max(24) }),
7
9
  output: z.union([
8
10
  z.strictObject({ crons: z.array(z.string()) }),
@@ -9,4 +9,4 @@ export declare const setServiceSecret: import("@astrale-os/sdk/schema").Method<i
9
9
  kind: "rejected";
10
10
  reason: "binding-unavailable" | "invalid-secret-name" | "service-unavailable";
11
11
  };
12
- }, "authenticated", false, "default">>;
12
+ }, "authorized", false, "default">>;
@@ -1,9 +1,11 @@
1
1
  import { method } from '@astrale-os/sdk/schema';
2
2
  import { z } from 'zod';
3
+ import { OwnService } from '../policies/own-service.js';
3
4
  import { secretName, secretOperationRejection } from '../types/index.js';
4
5
  export const setServiceSecret = method({
5
6
  description: 'Set one write-only Service secret.',
6
- auth: 'authenticated',
7
+ auth: 'authorized',
8
+ policy: ({ check, self }) => check(OwnService, self),
7
9
  input: z.strictObject({
8
10
  name: secretName,
9
11
  value: z
@@ -1,5 +1,8 @@
1
1
  export { CloudflareWorker, Service, service_owned_by } from './classes/index.js';
2
- export { deleteService, deleteServiceSecret, deployCloudflareWorker, listServiceLogs, listServiceSchedules, listServiceSecretNames, replaceServiceSchedules, setServiceSecret, } from './functions/index.js';
3
- export { ObserveService, TraverseOwnedService } from './policies/index.js';
4
- export { artifact, artifactModule, assetBundle, assetFile, deployedFunction, deployServiceInput, deployServiceOutput, publishedApplication, resourceLimits, revisionedDeployment, serviceLifecycle, PORTABLE_BASE64_CHUNK_SIZE, } from './types/index.js';
5
- export type { ArtifactModule, AssetBundle, DeployServiceInput, DeployServiceOutput, ResourceLimits, } from './types/index.js';
2
+ export { artifact, deleteService, deleteServiceSecret, deployedService, deploymentRejection, deployCloudflareWorker, deployServiceInput, deployServiceOutput, listServiceLogs, listServiceSchedules, listServiceSecretNames, replaceServiceSchedules, revisionedDeployment, setServiceSecret, } from './functions/index.js';
3
+ export type { DeployServiceInput, DeployServiceOutput } from './functions/index.js';
4
+ export { OwnService, TraverseOwnedService } from './policies/index.js';
5
+ export { serviceLifecycle } from './states/index.js';
6
+ export type { ServiceLifecycle, ServiceLifecycleEvent } from './states/index.js';
7
+ export { artifactModule, assetBundle, assetFile, resourceLimits, PORTABLE_BASE64_CHUNK_SIZE, } from './types/index.js';
8
+ export type { ArtifactModule, AssetBundle, ResourceLimits } from './types/index.js';
@@ -1,4 +1,5 @@
1
1
  export { CloudflareWorker, Service, service_owned_by } from './classes/index.js';
2
- export { deleteService, deleteServiceSecret, deployCloudflareWorker, listServiceLogs, listServiceSchedules, listServiceSecretNames, replaceServiceSchedules, setServiceSecret, } from './functions/index.js';
3
- export { ObserveService, TraverseOwnedService } from './policies/index.js';
4
- export { artifact, artifactModule, assetBundle, assetFile, deployedFunction, deployServiceInput, deployServiceOutput, publishedApplication, resourceLimits, revisionedDeployment, serviceLifecycle, PORTABLE_BASE64_CHUNK_SIZE, } from './types/index.js';
2
+ export { artifact, deleteService, deleteServiceSecret, deployedService, deploymentRejection, deployCloudflareWorker, deployServiceInput, deployServiceOutput, listServiceLogs, listServiceSchedules, listServiceSecretNames, replaceServiceSchedules, revisionedDeployment, setServiceSecret, } from './functions/index.js';
3
+ export { OwnService, TraverseOwnedService } from './policies/index.js';
4
+ export { serviceLifecycle } from './states/index.js';
5
+ export { artifactModule, assetBundle, assetFile, resourceLimits, PORTABLE_BASE64_CHUNK_SIZE, } from './types/index.js';
@@ -1,2 +1,2 @@
1
- export { ObserveService } from './observe-service.js';
1
+ export { OwnService } from './own-service.js';
2
2
  export { TraverseOwnedService } from './traverse-owned-service.js';
@@ -1,2 +1,2 @@
1
- export { ObserveService } from './observe-service.js';
1
+ export { OwnService } from './own-service.js';
2
2
  export { TraverseOwnedService } from './traverse-owned-service.js';
@@ -0,0 +1,2 @@
1
+ /** One Identity may observe and manage exactly the Services it owns. */
2
+ export declare const OwnService: import("@astrale-os/sdk/schema").Policy;
@@ -0,0 +1,7 @@
1
+ import { policy } from '@astrale-os/sdk/schema';
2
+ import { service_owned_by } from '../classes/service-owned-by.js';
3
+ /** One Identity may observe and manage exactly the Services it owns. */
4
+ export const OwnService = policy({
5
+ description: 'The subject owns this Service.',
6
+ match: ({ edge, object, subject }) => edge({ source: object, class: () => service_owned_by, target: subject }),
7
+ });
@@ -2,6 +2,6 @@ import { policy } from '@astrale-os/sdk/schema';
2
2
  import { service_owned_by } from '../classes/service-owned-by.js';
3
3
  /** Ownership edges disclose only the subject's own Service relationship. */
4
4
  export const TraverseOwnedService = policy({
5
- description: 'The subject owns the Service at the target of this relationship.',
6
- match: ({ allOf, edge, source, subject, target }) => allOf(edge({ source: subject, class: () => service_owned_by, target }), edge({ source, class: () => service_owned_by, target })),
5
+ description: 'The subject owns the Service at the source of this relationship.',
6
+ match: ({ allOf, edge, source, subject, target }) => allOf(edge({ source, class: () => service_owned_by, target: subject }), edge({ source, class: () => service_owned_by, target })),
7
7
  });
@@ -0,0 +1,2 @@
1
+ export { serviceLifecycle } from './service-lifecycle.js';
2
+ export type { ServiceLifecycle, ServiceLifecycleEvent } from './service-lifecycle.js';
@@ -0,0 +1 @@
1
+ export { serviceLifecycle } from './service-lifecycle.js';
@@ -0,0 +1,25 @@
1
+ import { type EventOf, type StateOf } from '@astrale-os/sdk/state';
2
+ /** Complete provider-neutral lifecycle topology for one deployed Service. */
3
+ export declare const serviceLifecycle: import("@astrale-os/sdk/schema").StateMachine<{
4
+ readonly deploying: {
5
+ readonly recordProviderDeployment: "reconciling";
6
+ readonly failDeployment: "failed";
7
+ readonly deleteService: "deleting";
8
+ };
9
+ readonly reconciling: {
10
+ readonly retryDeployment: "deploying";
11
+ readonly completeDeployment: "ready";
12
+ readonly deleteService: "deleting";
13
+ };
14
+ readonly ready: {
15
+ readonly redeploy: "deploying";
16
+ readonly deleteService: "deleting";
17
+ };
18
+ readonly failed: {
19
+ readonly retryDeployment: "deploying";
20
+ readonly deleteService: "deleting";
21
+ };
22
+ readonly deleting: {};
23
+ }, "deploying">;
24
+ export type ServiceLifecycle = StateOf<typeof serviceLifecycle>;
25
+ export type ServiceLifecycleEvent = EventOf<typeof serviceLifecycle>;
@@ -0,0 +1,26 @@
1
+ import { stateMachine } from '@astrale-os/sdk/state';
2
+ /** Complete provider-neutral lifecycle topology for one deployed Service. */
3
+ export const serviceLifecycle = stateMachine({
4
+ initial: 'deploying',
5
+ transitions: {
6
+ deploying: {
7
+ recordProviderDeployment: 'reconciling',
8
+ failDeployment: 'failed',
9
+ deleteService: 'deleting',
10
+ },
11
+ reconciling: {
12
+ retryDeployment: 'deploying',
13
+ completeDeployment: 'ready',
14
+ deleteService: 'deleting',
15
+ },
16
+ ready: {
17
+ redeploy: 'deploying',
18
+ deleteService: 'deleting',
19
+ },
20
+ failed: {
21
+ retryDeployment: 'deploying',
22
+ deleteService: 'deleting',
23
+ },
24
+ deleting: {},
25
+ },
26
+ });
@@ -3,14 +3,7 @@ export type { ArtifactModule } from './service-deployment-artifact-module.js';
3
3
  export { assetBundle, assetFile } from './service-deployment-assets.js';
4
4
  export type { AssetBundle } from './service-deployment-assets.js';
5
5
  export { MAX_ASSET_BASE64_SIZE, MAX_MODULE_BASE64_SIZE, PORTABLE_BASE64_CHUNK_SIZE, } from './service-deployment-content.js';
6
- export { deploymentRejection } from './service-deployment-rejection.js';
7
- export type { DeploymentRejection } from './service-deployment-rejection.js';
8
6
  export { resourceLimits } from './service-deployment-resource-limits.js';
9
7
  export type { ResourceLimits } from './service-deployment-resource-limits.js';
10
- export { artifact, deployServiceInput, revisionedDeployment } from './deploy-service-input.js';
11
- export type { DeployServiceInput } from './deploy-service-input.js';
12
- export { deployedFunction, deployedService, deployServiceOutput, publishedApplication, } from './deploy-service-output.js';
13
- export type { DeployServiceOutput } from './deploy-service-output.js';
14
- export { serviceLifecycle } from './service-lifecycle.js';
15
8
  export { secretName } from './service-secret-name.js';
16
9
  export { secretOperationRejection } from './service-secret-operation-rejection.js';
@@ -1,10 +1,6 @@
1
1
  export { artifactModule } from './service-deployment-artifact-module.js';
2
2
  export { assetBundle, assetFile } from './service-deployment-assets.js';
3
3
  export { MAX_ASSET_BASE64_SIZE, MAX_MODULE_BASE64_SIZE, PORTABLE_BASE64_CHUNK_SIZE, } from './service-deployment-content.js';
4
- export { deploymentRejection } from './service-deployment-rejection.js';
5
4
  export { resourceLimits } from './service-deployment-resource-limits.js';
6
- export { artifact, deployServiceInput, revisionedDeployment } from './deploy-service-input.js';
7
- export { deployedFunction, deployedService, deployServiceOutput, publishedApplication, } from './deploy-service-output.js';
8
- export { serviceLifecycle } from './service-lifecycle.js';
9
5
  export { secretName } from './service-secret-name.js';
10
6
  export { secretOperationRejection } from './service-secret-operation-rejection.js';