anbaric-state-machine 1.32.0 → 1.33.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.
@@ -0,0 +1,6 @@
1
+ import { Entitlements } from "anbaric-tsapi";
2
+ declare const EntitlementsFactory: {
3
+ instance(): Entitlements;
4
+ };
5
+ export { EntitlementsFactory };
6
+ //# sourceMappingURL=EntitlementsFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementsFactory.d.ts","sourceRoot":"","sources":["../../src/entitlements/EntitlementsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAI3C,QAAA,MAAM,mBAAmB;IACrB,QAAQ,IAAK,YAAY;CAS5B,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { CloudEntitlements } from "anbaric-impl-cloud";
2
+ import { PermissiveAuthorizer } from "./PermissiveAuthorizer.js";
3
+ const EntitlementsFactory = {
4
+ instance() {
5
+ switch (process.env.ANBARIC_ENTITLEMENTS_TYPE) {
6
+ case "cloud":
7
+ return new CloudEntitlements();
8
+ case "permissive":
9
+ default:
10
+ return new PermissiveAuthorizer();
11
+ }
12
+ }
13
+ };
14
+ export { EntitlementsFactory };
15
+ //# sourceMappingURL=EntitlementsFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitlementsFactory.js","sourceRoot":"","sources":["../../src/entitlements/EntitlementsFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,MAAM,mBAAmB,GAAG;IACxB,QAAQ;QACJ,QAAQ,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;YAC5C,KAAK,OAAO;gBACR,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACnC,KAAK,YAAY,CAAC;YAClB;gBACI,OAAO,IAAI,oBAAoB,EAAE,CAAC;QAC1C,CAAC;IACL,CAAC;CACJ,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Entitlements } from "anbaric-tsapi";
2
+ declare class PermissiveAuthorizer implements Entitlements {
3
+ private definitions;
4
+ register(appId: string, entitlementId: string, notes?: string): Promise<void>;
5
+ has(_appId: string, _userId: string, _entitlementId: string): Promise<boolean>;
6
+ get registered(): Array<string>;
7
+ }
8
+ export { PermissiveAuthorizer };
9
+ //# sourceMappingURL=PermissiveAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissiveAuthorizer.d.ts","sourceRoot":"","sources":["../../src/entitlements/PermissiveAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAI3C,cAAM,oBAAqB,YAAW,YAAY;IAE9C,OAAO,CAAC,WAAW,CAA6B;IAE1C,QAAQ,CAAC,KAAK,EAAG,MAAM,EAAE,aAAa,EAAG,MAAM,EAAE,KAAK,GAAG,MAAW,GAAI,OAAO,CAAC,IAAI,CAAC,CAE1F;IAEK,GAAG,CAAC,MAAM,EAAG,MAAM,EAAE,OAAO,EAAG,MAAM,EAAE,cAAc,EAAG,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAEvF;IAED,IAAI,UAAU,IAAK,KAAK,CAAC,MAAM,CAAC,CAE/B;CAEJ;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ /* The local implementation: nobody is ever refused. Registrations are kept so
2
+ an app can see what it declared, but every check passes. */
3
+ class PermissiveAuthorizer {
4
+ definitions = new Map();
5
+ async register(appId, entitlementId, notes = "") {
6
+ this.definitions.set(`${appId}/${entitlementId}`, notes);
7
+ }
8
+ async has(_appId, _userId, _entitlementId) {
9
+ return true;
10
+ }
11
+ get registered() {
12
+ return Array.from(this.definitions.keys());
13
+ }
14
+ }
15
+ export { PermissiveAuthorizer };
16
+ //# sourceMappingURL=PermissiveAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PermissiveAuthorizer.js","sourceRoot":"","sources":["../../src/entitlements/PermissiveAuthorizer.ts"],"names":[],"mappings":"AAEA;8DAC8D;AAC9D,MAAM,oBAAoB;IAEd,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,KAAK,CAAC,QAAQ,CAAC,KAAc,EAAE,aAAsB,EAAE,KAAK,GAAY,EAAE;QACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAe,EAAE,OAAgB,EAAE,cAAuB;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;CAEJ;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { IncomingMessage } from "node:http";
2
+ import { Entitlements, SessionResolver } from "anbaric-tsapi";
3
+ declare const registerEntitlement: (entitlementId: string, notes?: string, entitlements?: Entitlements) => Promise<void>;
4
+ declare const hasEntitlement: (source: string | IncomingMessage, entitlementId: string, resolver?: SessionResolver, entitlements?: Entitlements) => Promise<boolean>;
5
+ export { registerEntitlement, hasEntitlement };
6
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../../src/entitlements/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAe,YAAY,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAY1E,QAAA,MAAM,mBAAmB,kBAA0B,MAAM,UAAU,MAAM,iBACvB,YAAY,KAA2B,OAAO,CAAC,IAAI,CAEpG,CAAC;AAMF,QAAA,MAAM,cAAc,WAAmB,MAAM,GAAG,eAAe,iBAAkB,MAAM,aAC9C,eAAe,iBACX,YAAY,KAA2B,OAAO,CAAC,OAAO,CAKlG,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { currentAppId } from "anbaric-tsapi";
2
+ import { sessionCookie } from "../sessions/sessionCookie.js";
3
+ import { SessionResolverFactory } from "../sessions/SessionResolverFactory.js";
4
+ import { EntitlementsFactory } from "./EntitlementsFactory.js";
5
+ let shared;
6
+ const sharedEntitlements = () => shared ??= EntitlementsFactory.instance();
7
+ /* Declares an entitlement this app checks - a startup activity. The
8
+ definition is scoped to the current app; global entitlements are created
9
+ in the console, never by an app. */
10
+ const registerEntitlement = async (entitlementId, notes = "", entitlements = sharedEntitlements()) => {
11
+ await entitlements.register(currentAppId(), entitlementId, notes);
12
+ };
13
+ /* Whether the user behind a session holds the entitlement for the current
14
+ app. Takes the incoming request (its anbaric_session cookie) or a raw
15
+ session token, exactly as Human.fromSession does. An unresolvable session
16
+ is simply not entitled. */
17
+ const hasEntitlement = async (source, entitlementId, resolver = SessionResolverFactory.instance(), entitlements = sharedEntitlements()) => {
18
+ const token = typeof source === "string" ? source : sessionCookie(source);
19
+ const session = token ? await resolver.resolve(token) : undefined;
20
+ if (!session)
21
+ return false;
22
+ return entitlements.has(currentAppId(), session.id, entitlementId);
23
+ };
24
+ export { registerEntitlement, hasEntitlement };
25
+ //# sourceMappingURL=entitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../src/entitlements/entitlements.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAgC,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,IAAI,MAAiC,CAAC;AAEtC,MAAM,kBAAkB,GAAG,GAAkB,EAAE,CAAC,MAAM,KAAK,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AAE1F;;sCAEsC;AACtC,MAAM,mBAAmB,GAAG,KAAK,EAAE,aAAsB,EAAE,KAAK,GAAY,EAAE,EAC3C,YAAY,GAAkB,kBAAkB,EAAE,EAAkB,EAAE;IACrG,MAAM,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF;;;6BAG6B;AAC7B,MAAM,cAAc,GAAG,KAAK,EAAE,MAAiC,EAAE,aAAsB,EACzD,QAAQ,GAAqB,sBAAsB,CAAC,QAAQ,EAAE,EAC9D,YAAY,GAAkB,kBAAkB,EAAE,EAAqB,EAAE;IACnG,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IAAI,CAAE,OAAO;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,9 @@ export * from "./actors/Human.js";
5
5
  export * from "./actors/agents/OpenAIAgent.js";
6
6
  export * from "./auditing/AuditorFactory.js";
7
7
  export * from "./auditing/ConsoleAuditor.js";
8
+ export * from "./entitlements/PermissiveAuthorizer.js";
9
+ export * from "./entitlements/EntitlementsFactory.js";
10
+ export * from "./entitlements/entitlements.js";
8
11
  export * from "./persistence/InMemoryJobPersistence.js";
9
12
  export * from "./persistence/JobPersistenceFactory.js";
10
13
  export * from "./scheduling/InMemoryQueue.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,9 @@ export * from "./actors/Human.js";
5
5
  export * from "./actors/agents/OpenAIAgent.js";
6
6
  export * from "./auditing/AuditorFactory.js";
7
7
  export * from "./auditing/ConsoleAuditor.js";
8
+ export * from "./entitlements/PermissiveAuthorizer.js";
9
+ export * from "./entitlements/EntitlementsFactory.js";
10
+ export * from "./entitlements/entitlements.js";
8
11
  export * from "./persistence/InMemoryJobPersistence.js";
9
12
  export * from "./persistence/JobPersistenceFactory.js";
10
13
  export * from "./scheduling/InMemoryQueue.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anbaric-state-machine",
3
- "version": "1.32.0",
3
+ "version": "1.33.0",
4
4
  "description": "This is the state machine library that one can use to add state management to an application. It will, by default, be locally runnable but can deployed to the Anbaric Cloud via the CLI",
5
5
  "license": "MIT",
6
6
  "author": "chris@anbaric.ai",
@@ -24,8 +24,8 @@
24
24
  "typescript": "^7.0.2"
25
25
  },
26
26
  "dependencies": {
27
- "anbaric-impl-cloud": "^1.32.0",
28
- "anbaric-tsapi": "^1.32.0"
27
+ "anbaric-impl-cloud": "^1.33.0",
28
+ "anbaric-tsapi": "^1.33.0"
29
29
  },
30
30
  "files": [
31
31
  "dist"