@globiguard/sdk 1.0.0 → 1.0.1

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 (71) hide show
  1. package/LICENSE +128 -0
  2. package/README.md +80 -0
  3. package/dist/bootstrap.d.ts +5 -0
  4. package/dist/bootstrap.d.ts.map +1 -0
  5. package/dist/bootstrap.js +67 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/client.d.ts +61 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +260 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/entitlements.node.d.ts +12 -0
  12. package/dist/entitlements.node.d.ts.map +1 -0
  13. package/dist/entitlements.node.js +215 -0
  14. package/dist/entitlements.node.js.map +1 -0
  15. package/dist/errors.d.ts +21 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +46 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/fetch.d.ts +21 -0
  20. package/dist/fetch.d.ts.map +1 -0
  21. package/dist/fetch.js +151 -0
  22. package/dist/fetch.js.map +1 -0
  23. package/dist/governed-actions.d.ts +34 -0
  24. package/dist/governed-actions.d.ts.map +1 -0
  25. package/dist/governed-actions.js +146 -0
  26. package/dist/governed-actions.js.map +1 -0
  27. package/dist/index.d.ts +14 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +14 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/realtime.d.ts +21 -0
  32. package/dist/realtime.d.ts.map +1 -0
  33. package/dist/realtime.js +265 -0
  34. package/dist/realtime.js.map +1 -0
  35. package/dist/resources/actions.d.ts +5 -0
  36. package/dist/resources/actions.d.ts.map +1 -0
  37. package/dist/resources/actions.js +48 -0
  38. package/dist/resources/actions.js.map +1 -0
  39. package/dist/resources/audit.d.ts +5 -0
  40. package/dist/resources/audit.d.ts.map +1 -0
  41. package/dist/resources/audit.js +62 -0
  42. package/dist/resources/audit.js.map +1 -0
  43. package/dist/resources/installs.d.ts +4 -0
  44. package/dist/resources/installs.d.ts.map +1 -0
  45. package/dist/resources/installs.js +19 -0
  46. package/dist/resources/installs.js.map +1 -0
  47. package/dist/resources/orgs.d.ts +4 -0
  48. package/dist/resources/orgs.d.ts.map +1 -0
  49. package/dist/resources/orgs.js +48 -0
  50. package/dist/resources/orgs.js.map +1 -0
  51. package/dist/resources/path-segments.d.ts +2 -0
  52. package/dist/resources/path-segments.d.ts.map +1 -0
  53. package/dist/resources/path-segments.js +4 -0
  54. package/dist/resources/path-segments.js.map +1 -0
  55. package/dist/resources/policies.d.ts +5 -0
  56. package/dist/resources/policies.d.ts.map +1 -0
  57. package/dist/resources/policies.js +64 -0
  58. package/dist/resources/policies.js.map +1 -0
  59. package/dist/resources/queue.d.ts +5 -0
  60. package/dist/resources/queue.d.ts.map +1 -0
  61. package/dist/resources/queue.js +36 -0
  62. package/dist/resources/queue.js.map +1 -0
  63. package/dist/resources/workflows.d.ts +5 -0
  64. package/dist/resources/workflows.d.ts.map +1 -0
  65. package/dist/resources/workflows.js +63 -0
  66. package/dist/resources/workflows.js.map +1 -0
  67. package/dist/server.d.ts +8 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +128 -0
  70. package/dist/server.js.map +1 -0
  71. package/package.json +49 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installs.d.ts","sourceRoot":"","sources":["../../src/resources/installs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,mBAAmB,GAC7B,wBAAwB,CA2B1B"}
@@ -0,0 +1,19 @@
1
+ import { encodePathSegment } from "./path-segments.js";
2
+ export function createInstallsClient(transport) {
3
+ return {
4
+ register(request) {
5
+ return transport.request("/v1/installs", {
6
+ method: "POST",
7
+ body: request
8
+ });
9
+ },
10
+ heartbeat(installId, request) {
11
+ const encodedInstallId = encodePathSegment(installId);
12
+ return transport.request(`/v1/installs/${encodedInstallId}/heartbeats`, {
13
+ method: "POST",
14
+ body: request
15
+ });
16
+ }
17
+ };
18
+ }
19
+ //# sourceMappingURL=installs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installs.js","sourceRoot":"","sources":["../../src/resources/installs.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,oBAAoB,CAClC,SAA8B;IAE9B,OAAO;QACL,QAAQ,CAAC,OAA6C;YACpD,OAAO,SAAS,CAAC,OAAO,CACtB,cAAc,EACd;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CACF,CAAC;QACJ,CAAC;QAED,SAAS,CACP,SAAiB,EACjB,OAA0C;YAE1C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEtD,OAAO,SAAS,CAAC,OAAO,CACtB,gBAAgB,gBAAgB,aAAa,EAC7C;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GlobiguardOrgsClient } from "@globiguard/contracts";
2
+ import type { GlobiguardTransport } from "../client.js";
3
+ export declare function createOrgsClient(transport: GlobiguardTransport): GlobiguardOrgsClient;
4
+ //# sourceMappingURL=orgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgs.d.ts","sourceRoot":"","sources":["../../src/resources/orgs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,oBAAoB,EAErB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,mBAAmB,GAC7B,oBAAoB,CAgEtB"}
@@ -0,0 +1,48 @@
1
+ import { encodePathSegment } from "./path-segments.js";
2
+ export function createOrgsClient(transport) {
3
+ return {
4
+ findBySlug(slug) {
5
+ return transport.request("/v1/orgs", {
6
+ query: {
7
+ slug
8
+ }
9
+ });
10
+ },
11
+ create(request) {
12
+ return transport.request("/v1/orgs", {
13
+ method: "POST",
14
+ body: request
15
+ });
16
+ },
17
+ get(orgId) {
18
+ const encodedOrgId = encodePathSegment(orgId);
19
+ return transport.request(`/v1/orgs/${encodedOrgId}`);
20
+ },
21
+ update(orgId, request) {
22
+ const encodedOrgId = encodePathSegment(orgId);
23
+ return transport.request(`/v1/orgs/${encodedOrgId}`, {
24
+ method: "PATCH",
25
+ body: request
26
+ });
27
+ },
28
+ createApiKey(orgId, request) {
29
+ const encodedOrgId = encodePathSegment(orgId);
30
+ return transport.request(`/v1/orgs/${encodedOrgId}/api-keys`, {
31
+ method: "POST",
32
+ body: request
33
+ });
34
+ },
35
+ listApiKeys(orgId) {
36
+ const encodedOrgId = encodePathSegment(orgId);
37
+ return transport.request(`/v1/orgs/${encodedOrgId}/api-keys`);
38
+ },
39
+ revokeApiKey(orgId, apiKeyId) {
40
+ const encodedOrgId = encodePathSegment(orgId);
41
+ const encodedApiKeyId = encodePathSegment(apiKeyId);
42
+ return transport.request(`/v1/orgs/${encodedOrgId}/api-keys/${encodedApiKeyId}`, {
43
+ method: "DELETE"
44
+ });
45
+ }
46
+ };
47
+ }
48
+ //# sourceMappingURL=orgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orgs.js","sourceRoot":"","sources":["../../src/resources/orgs.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,gBAAgB,CAC9B,SAA8B;IAE9B,OAAO;QACL,UAAU,CAAC,IAAY;YACrB,OAAO,SAAS,CAAC,OAAO,CAAgB,UAAU,EAAE;gBAClD,KAAK,EAAE;oBACL,IAAI;iBACL;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,OAAmC;YACxC,OAAO,SAAS,CAAC,OAAO,CAAgB,UAAU,EAAE;gBAClD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,KAAa;YACf,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE9C,OAAO,SAAS,CAAC,OAAO,CAAgB,YAAY,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,KAAa,EAAE,OAAmC;YACvD,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE9C,OAAO,SAAS,CAAC,OAAO,CAAgB,YAAY,YAAY,EAAE,EAAE;gBAClE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,KAAa,EAAE,OAAsC;YAChE,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE9C,OAAO,SAAS,CAAC,OAAO,CACtB,YAAY,YAAY,WAAW,EACnC;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CACF,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,KAAa;YACvB,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE9C,OAAO,SAAS,CAAC,OAAO,CACtB,YAAY,YAAY,WAAW,CACpC,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,KAAa,EAAE,QAAgB;YAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CACtB,YAAY,YAAY,aAAa,eAAe,EAAE,EACtD;gBACE,MAAM,EAAE,QAAQ;aACjB,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function encodePathSegment(value: string): string;
2
+ //# sourceMappingURL=path-segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-segments.d.ts","sourceRoot":"","sources":["../../src/resources/path-segments.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,4 @@
1
+ export function encodePathSegment(value) {
2
+ return encodeURIComponent(value);
3
+ }
4
+ //# sourceMappingURL=path-segments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-segments.js","sourceRoot":"","sources":["../../src/resources/path-segments.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GlobiguardPoliciesClient, GlobiguardPoliciesReadClient } from "@globiguard/contracts";
2
+ import type { GlobiguardTransport } from "../client.js";
3
+ export declare function createPoliciesReadClient(transport: GlobiguardTransport): GlobiguardPoliciesReadClient;
4
+ export declare function createPoliciesClient(transport: GlobiguardTransport): GlobiguardPoliciesClient;
5
+ //# sourceMappingURL=policies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/resources/policies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,4BAA4B,EAM7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,GAC7B,4BAA4B,CA6B9B;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,mBAAmB,GAC7B,wBAAwB,CAuD1B"}
@@ -0,0 +1,64 @@
1
+ import { GlobiguardConfigError } from "../errors.js";
2
+ import { encodePathSegment } from "./path-segments.js";
3
+ export function createPoliciesReadClient(transport) {
4
+ return {
5
+ list(request) {
6
+ if (request.active === undefined) {
7
+ throw new GlobiguardConfigError("Policies list requires an explicit active filter.");
8
+ }
9
+ return transport.request("/v1/policies", {
10
+ query: {
11
+ industry: request.industry,
12
+ active: request.active
13
+ }
14
+ });
15
+ },
16
+ listTemplates(industry) {
17
+ return transport.request("/v1/policies/templates", {
18
+ query: industry ? { industry } : undefined
19
+ });
20
+ },
21
+ get(policyId) {
22
+ const encodedPolicyId = encodePathSegment(policyId);
23
+ return transport.request(`/v1/policies/${encodedPolicyId}`);
24
+ }
25
+ };
26
+ }
27
+ export function createPoliciesClient(transport) {
28
+ const readClient = createPoliciesReadClient(transport);
29
+ return {
30
+ ...readClient,
31
+ create(request) {
32
+ return transport.request("/v1/policies", {
33
+ method: "POST",
34
+ body: request
35
+ });
36
+ },
37
+ createFromTemplate(templateId) {
38
+ const encodedTemplateId = encodePathSegment(templateId);
39
+ return transport.request(`/v1/policies/from-template/${encodedTemplateId}`, {
40
+ method: "POST"
41
+ });
42
+ },
43
+ update(policyId, request) {
44
+ const encodedPolicyId = encodePathSegment(policyId);
45
+ return transport.request(`/v1/policies/${encodedPolicyId}`, {
46
+ method: "PUT",
47
+ body: request
48
+ });
49
+ },
50
+ remove(policyId) {
51
+ const encodedPolicyId = encodePathSegment(policyId);
52
+ return transport.request(`/v1/policies/${encodedPolicyId}`, {
53
+ method: "DELETE"
54
+ });
55
+ },
56
+ activate(policyId) {
57
+ const encodedPolicyId = encodePathSegment(policyId);
58
+ return transport.request(`/v1/policies/${encodedPolicyId}/activate`, {
59
+ method: "POST"
60
+ });
61
+ }
62
+ };
63
+ }
64
+ //# sourceMappingURL=policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/resources/policies.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,wBAAwB,CACtC,SAA8B;IAE9B,OAAO;QACL,IAAI,CAAC,OAAoC;YACvC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,qBAAqB,CAC7B,mDAAmD,CACpD,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC,OAAO,CAAqB,cAAc,EAAE;gBAC3D,KAAK,EAAE;oBACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QAED,aAAa,CAAC,QAA6B;YACzC,OAAO,SAAS,CAAC,OAAO,CAA6B,wBAAwB,EAAE;gBAC7E,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,QAAgB;YAClB,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CAAmB,gBAAgB,eAAe,EAAE,CAAC,CAAC;QAChF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA8B;IAE9B,MAAM,UAAU,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAEvD,OAAO;QACL,GAAG,UAAU;QAEb,MAAM,CAAC,OAAsC;YAC3C,OAAO,SAAS,CAAC,OAAO,CAAmB,cAAc,EAAE;gBACzD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB,CAAC,UAAkB;YACnC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,8BAA8B,iBAAiB,EAAE,EACjD;gBACE,MAAM,EAAE,MAAM;aACf,CACF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,QAAgB,EAAE,OAAsC;YAC7D,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CACtB,gBAAgB,eAAe,EAAE,EACjC;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,OAAO;aACd,CACF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,QAAgB;YACrB,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CAAO,gBAAgB,eAAe,EAAE,EAAE;gBAChE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,QAAgB;YACvB,MAAM,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,SAAS,CAAC,OAAO,CACtB,gBAAgB,eAAe,WAAW,EAC1C;gBACE,MAAM,EAAE,MAAM;aACf,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GlobiguardQueueClient, GlobiguardQueueReadClient } from "@globiguard/contracts";
2
+ import type { GlobiguardTransport } from "../client.js";
3
+ export declare function createQueueReadClient(transport: GlobiguardTransport): GlobiguardQueueReadClient;
4
+ export declare function createQueueClient(transport: GlobiguardTransport): GlobiguardQueueClient;
5
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/resources/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAKrB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,GAC7B,yBAAyB,CAsB3B;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,GAC7B,qBAAqB,CAqBvB"}
@@ -0,0 +1,36 @@
1
+ import { encodePathSegment } from "./path-segments.js";
2
+ export function createQueueReadClient(transport) {
3
+ return {
4
+ list(request) {
5
+ const query = request
6
+ ? {
7
+ status: request.status
8
+ }
9
+ : undefined;
10
+ return transport.request("/v1/queue", {
11
+ query
12
+ });
13
+ },
14
+ get(queueEntryId) {
15
+ const encodedQueueEntryId = encodePathSegment(queueEntryId);
16
+ return transport.request(`/v1/queue/${encodedQueueEntryId}`);
17
+ }
18
+ };
19
+ }
20
+ export function createQueueClient(transport) {
21
+ const readClient = createQueueReadClient(transport);
22
+ return {
23
+ ...readClient,
24
+ decide(queueEntryId, request) {
25
+ const encodedQueueEntryId = encodePathSegment(queueEntryId);
26
+ return transport.request(`/v1/queue/${encodedQueueEntryId}/${request.action}`, {
27
+ method: "POST",
28
+ body: {
29
+ reviewedBy: request.reviewedBy,
30
+ notes: request.notes
31
+ }
32
+ });
33
+ }
34
+ };
35
+ }
36
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/resources/queue.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,qBAAqB,CACnC,SAA8B;IAE9B,OAAO;QACL,IAAI,CAAC,OAAoC;YACvC,MAAM,KAAK,GAAG,OAAO;gBACnB,CAAC,CAAC;oBACE,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;gBACH,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO,SAAS,CAAC,OAAO,CAAyB,WAAW,EAAE;gBAC5D,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,YAAoB;YACtB,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAE5D,OAAO,SAAS,CAAC,OAAO,CACtB,aAAa,mBAAmB,EAAE,CACnC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAA8B;IAE9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAEpD,OAAO;QACL,GAAG,UAAU;QAEb,MAAM,CAAC,YAAoB,EAAE,OAAuC;YAClE,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAE5D,OAAO,SAAS,CAAC,OAAO,CACtB,aAAa,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,EACpD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB;aACF,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { GlobiguardWorkflowsReadClient, GlobiguardWorkflowsClient } from "@globiguard/contracts";
2
+ import type { GlobiguardTransport } from "../client.js";
3
+ export declare function createWorkflowsReadClient(transport: GlobiguardTransport): GlobiguardWorkflowsReadClient;
4
+ export declare function createWorkflowsClient(transport: GlobiguardTransport): GlobiguardWorkflowsClient;
5
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/resources/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,mBAAmB,GAC7B,6BAA6B,CAwB/B;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,GAC7B,yBAAyB,CAgE3B"}
@@ -0,0 +1,63 @@
1
+ import { GlobiguardConfigError } from "../errors.js";
2
+ import { encodePathSegment } from "./path-segments.js";
3
+ export function createWorkflowsReadClient(transport) {
4
+ return {
5
+ list(request) {
6
+ if (request.active === undefined) {
7
+ throw new GlobiguardConfigError("Workflow list requires an explicit active filter.");
8
+ }
9
+ return transport.request("/v1/workflows", {
10
+ query: {
11
+ active: request.active
12
+ }
13
+ });
14
+ },
15
+ get(workflowId) {
16
+ const encodedWorkflowId = encodePathSegment(workflowId);
17
+ return transport.request(`/v1/workflows/${encodedWorkflowId}`);
18
+ }
19
+ };
20
+ }
21
+ export function createWorkflowsClient(transport) {
22
+ const readClient = createWorkflowsReadClient(transport);
23
+ return {
24
+ ...readClient,
25
+ create(request) {
26
+ return transport.request("/v1/workflows", {
27
+ method: "POST",
28
+ body: request
29
+ });
30
+ },
31
+ update(workflowId, request) {
32
+ const encodedWorkflowId = encodePathSegment(workflowId);
33
+ return transport.request(`/v1/workflows/${encodedWorkflowId}`, {
34
+ method: "PUT",
35
+ body: request
36
+ });
37
+ },
38
+ remove(workflowId) {
39
+ const encodedWorkflowId = encodePathSegment(workflowId);
40
+ return transport.request(`/v1/workflows/${encodedWorkflowId}`, {
41
+ method: "DELETE"
42
+ });
43
+ },
44
+ activate(workflowId) {
45
+ const encodedWorkflowId = encodePathSegment(workflowId);
46
+ return transport.request(`/v1/workflows/${encodedWorkflowId}/activate`, {
47
+ method: "POST"
48
+ });
49
+ },
50
+ run(workflowId, triggerData) {
51
+ const encodedWorkflowId = encodePathSegment(workflowId);
52
+ return transport.request(`/v1/workflows/${encodedWorkflowId}/run`, {
53
+ method: "POST",
54
+ body: triggerData ?? {}
55
+ });
56
+ },
57
+ listRuns(workflowId) {
58
+ const encodedWorkflowId = encodePathSegment(workflowId);
59
+ return transport.request(`/v1/workflows/${encodedWorkflowId}/runs`);
60
+ }
61
+ };
62
+ }
63
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/resources/workflows.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,UAAU,yBAAyB,CACvC,SAA8B;IAE9B,OAAO;QACL,IAAI,CAAC,OAAsC;YACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,qBAAqB,CAC7B,mDAAmD,CACpD,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC,OAAO,CAAuB,eAAe,EAAE;gBAC9D,KAAK,EAAE;oBACL,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,UAAkB;YACpB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,iBAAiB,iBAAiB,EAAE,CACrC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAA8B;IAE9B,MAAM,UAAU,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAExD,OAAO;QACL,GAAG,UAAU;QAEb,MAAM,CAAC,OAAwC;YAC7C,OAAO,SAAS,CAAC,OAAO,CAAqB,eAAe,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,UAAkB,EAAE,OAAwC;YACjE,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,iBAAiB,iBAAiB,EAAE,EACpC;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,OAAO;aACd,CACF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,UAAkB;YACvB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CAAO,iBAAiB,iBAAiB,EAAE,EAAE;gBACnE,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,UAAkB;YACzB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,iBAAiB,iBAAiB,WAAW,EAC7C;gBACE,MAAM,EAAE,MAAM;aACf,CACF,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,UAAkB,EAAE,WAAqC;YAC3D,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,iBAAiB,iBAAiB,MAAM,EACxC;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,WAAW,IAAI,EAAE;aACxB,CACF,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,UAAkB;YACzB,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAExD,OAAO,SAAS,CAAC,OAAO,CACtB,iBAAiB,iBAAiB,OAAO,CAC1C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type GlobiguardTrustWebhookHeaders, type GlobiguardTrustWebhookVerificationRequest, type GlobiguardTrustWebhookVerificationResult } from "@globiguard/contracts";
2
+ export { createGovernedActionsClient, deriveActionIdempotencyKey, generateCorrelationId } from "./governed-actions.js";
3
+ export type { GlobiguardGovernedActionsClient, GlobiguardGovernedActionRuntimeConfig, GlobiguardIdempotencyKeyInput, GlobiguardWaitForApprovalOptions } from "./governed-actions.js";
4
+ export declare function verifyTrustWebhook(request: Omit<GlobiguardTrustWebhookVerificationRequest, "boundary" | "headers"> & {
5
+ headers: GlobiguardTrustWebhookHeaders | Headers;
6
+ }): Promise<GlobiguardTrustWebhookVerificationResult>;
7
+ export declare function buildSignedWebhookPayload(headers: GlobiguardTrustWebhookHeaders, rawBody: string): string;
8
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,6BAA6B,EAClC,KAAK,yCAAyC,EAC9C,KAAK,wCAAwC,EAC9C,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,+BAA+B,EAC/B,qCAAqC,EACrC,6BAA6B,EAC7B,gCAAgC,EACjC,MAAM,uBAAuB,CAAC;AAE/B,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,IAAI,CACX,yCAAyC,EACzC,UAAU,GAAG,SAAS,CACvB,GAAG;IACF,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC;CAClD,GACA,OAAO,CAAC,wCAAwC,CAAC,CA8DnD;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,6BAA6B,EACtC,OAAO,EAAE,MAAM,GACd,MAAM,CAQR"}
package/dist/server.js ADDED
@@ -0,0 +1,128 @@
1
+ import { GLOBIGUARD_SERVER_AUTHORITY_BOUNDARY, GLOBIGUARD_TRUST_WEBHOOK_HEADER_NAMES, GLOBIGUARD_TRUST_WEBHOOK_SIGNATURE_SCHEME } from "@globiguard/contracts";
2
+ import { GlobiguardConfigError } from "./errors.js";
3
+ export { createGovernedActionsClient, deriveActionIdempotencyKey, generateCorrelationId } from "./governed-actions.js";
4
+ export async function verifyTrustWebhook(request) {
5
+ assertServerOnlyRuntime();
6
+ const headers = normalizeHeaders(request.headers);
7
+ const toleranceSeconds = request.toleranceSeconds ?? 300;
8
+ const now = request.now ?? new Date();
9
+ const rawBody = toUint8Array(request.rawBody);
10
+ const bodyText = new TextDecoder().decode(rawBody);
11
+ if (!headers.deliveryId || !headers.timestamp || !headers.eventType) {
12
+ return verificationFailure("Missing required GlobiGuard webhook headers.", headers);
13
+ }
14
+ const parsedTimestamp = Date.parse(headers.timestamp);
15
+ if (!Number.isFinite(parsedTimestamp)) {
16
+ return verificationFailure("Invalid GlobiGuard webhook timestamp.", headers);
17
+ }
18
+ const ageSeconds = Math.abs(now.getTime() - parsedTimestamp) / 1000;
19
+ if (ageSeconds > toleranceSeconds) {
20
+ return verificationFailure("GlobiGuard webhook timestamp is outside the accepted replay window.", headers);
21
+ }
22
+ let envelope;
23
+ try {
24
+ envelope = JSON.parse(bodyText);
25
+ }
26
+ catch {
27
+ return verificationFailure("GlobiGuard webhook body is not valid JSON.", headers);
28
+ }
29
+ if (envelope.id !== headers.deliveryId || envelope.type !== headers.eventType) {
30
+ return verificationFailure("GlobiGuard webhook headers do not match the signed envelope.", headers);
31
+ }
32
+ const signedPayload = buildSignedWebhookPayload(headers, bodyText);
33
+ const expectedSignature = await hmacSha256Hex(request.signingSecret, signedPayload);
34
+ const providedSignature = normalizeSignature(headers.signature);
35
+ if (!constantTimeEqualHex(expectedSignature, providedSignature)) {
36
+ return verificationFailure("Invalid GlobiGuard webhook signature.", headers);
37
+ }
38
+ const duplicateDelivery = request.seenDelivery
39
+ ? await request.seenDelivery(headers.deliveryId)
40
+ : false;
41
+ return {
42
+ ok: true,
43
+ deliveryId: headers.deliveryId,
44
+ eventType: headers.eventType,
45
+ timestamp: headers.timestamp,
46
+ envelope,
47
+ duplicateDelivery
48
+ };
49
+ }
50
+ export function buildSignedWebhookPayload(headers, rawBody) {
51
+ return [
52
+ GLOBIGUARD_TRUST_WEBHOOK_SIGNATURE_SCHEME,
53
+ headers.deliveryId,
54
+ headers.timestamp,
55
+ headers.eventType,
56
+ rawBody
57
+ ].join(".");
58
+ }
59
+ function assertServerOnlyRuntime() {
60
+ if (typeof window !== "undefined" && typeof document !== "undefined") {
61
+ throw new GlobiguardConfigError("Trust webhook verification is server-only and must not run in a browser.");
62
+ }
63
+ }
64
+ function normalizeHeaders(headers) {
65
+ if (headers instanceof Headers) {
66
+ return {
67
+ deliveryId: headers.get(GLOBIGUARD_TRUST_WEBHOOK_HEADER_NAMES.deliveryId) ?? "",
68
+ timestamp: headers.get(GLOBIGUARD_TRUST_WEBHOOK_HEADER_NAMES.timestamp) ?? "",
69
+ eventType: headers.get(GLOBIGUARD_TRUST_WEBHOOK_HEADER_NAMES.eventType) ?? "",
70
+ signature: headers.get(GLOBIGUARD_TRUST_WEBHOOK_HEADER_NAMES.signature) ?? ""
71
+ };
72
+ }
73
+ return headers;
74
+ }
75
+ function normalizeSignature(signature) {
76
+ return signature.startsWith("v1=") ? signature.slice(3) : signature;
77
+ }
78
+ async function hmacSha256Hex(secret, payload) {
79
+ const cryptoImpl = globalThis.crypto;
80
+ if (!cryptoImpl?.subtle) {
81
+ throw new GlobiguardConfigError("A Web Crypto subtle implementation is required to verify webhooks.");
82
+ }
83
+ const key = await cryptoImpl.subtle.importKey("raw", new TextEncoder().encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
84
+ const signature = await cryptoImpl.subtle.sign("HMAC", key, new TextEncoder().encode(payload));
85
+ return bytesToHex(new Uint8Array(signature));
86
+ }
87
+ function verificationFailure(message, headers) {
88
+ return {
89
+ ok: false,
90
+ deliveryId: headers.deliveryId,
91
+ eventType: headers.eventType,
92
+ timestamp: headers.timestamp,
93
+ error: {
94
+ kind: "WEBHOOK_VERIFICATION_FAILED",
95
+ message,
96
+ safeDetails: {
97
+ boundary: GLOBIGUARD_SERVER_AUTHORITY_BOUNDARY.authorityLevel
98
+ }
99
+ }
100
+ };
101
+ }
102
+ function toUint8Array(body) {
103
+ return typeof body === "string" ? new TextEncoder().encode(body) : body;
104
+ }
105
+ function constantTimeEqualHex(left, right) {
106
+ const leftBytes = hexToBytes(left);
107
+ const rightBytes = hexToBytes(right);
108
+ const length = Math.max(leftBytes.length, rightBytes.length);
109
+ let diff = leftBytes.length ^ rightBytes.length;
110
+ for (let index = 0; index < length; index += 1) {
111
+ diff |= (leftBytes[index] ?? 0) ^ (rightBytes[index] ?? 0);
112
+ }
113
+ return diff === 0;
114
+ }
115
+ function hexToBytes(hex) {
116
+ if (!/^[\da-f]*$/i.test(hex) || hex.length % 2 !== 0) {
117
+ return new Uint8Array();
118
+ }
119
+ const bytes = new Uint8Array(hex.length / 2);
120
+ for (let index = 0; index < bytes.length; index += 1) {
121
+ bytes[index] = Number.parseInt(hex.slice(index * 2, index * 2 + 2), 16);
122
+ }
123
+ return bytes;
124
+ }
125
+ function bytesToHex(bytes) {
126
+ return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
127
+ }
128
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,52 @@
1
1
  {
2
2
  "name": "@globiguard/sdk",
3
- "version": "1.0.0",
4
- "description": "GlobiGuard core SDK",
5
- "main": "index.js"
3
+ "version": "1.0.1",
4
+ "description": "Server-first TypeScript SDK for GlobiGuard control-plane and trusted brain connectivity.",
5
+ "author": "GuideGDM",
6
+ "license": "Apache-2.0",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./server": {
19
+ "types": "./dist/server.d.ts",
20
+ "import": "./dist/server.js"
21
+ },
22
+ "./entitlements-node": {
23
+ "types": "./dist/entitlements.node.d.ts",
24
+ "import": "./dist/entitlements.node.js"
25
+ }
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/globiguard/globiguard-open.git",
30
+ "directory": "packages/sdk"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "engines": {
36
+ "node": ">=22"
37
+ },
38
+ "dependencies": {
39
+ "socket.io-client": "^4.8.3",
40
+ "@globiguard/contracts": "1.0.1"
41
+ },
42
+ "devDependencies": {
43
+ "vitest": "^2.1.8"
44
+ },
45
+ "scripts": {
46
+ "build:deps": "pnpm --dir ../contracts build",
47
+ "build": "pnpm run build:deps && tsc -p tsconfig.json",
48
+ "typecheck": "pnpm run build:deps && tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
49
+ "pretest": "pnpm run build:deps",
50
+ "test": "vitest run"
51
+ }
6
52
  }