@owlmeans/viable-common 0.0.38 → 0.0.40

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 (62) hide show
  1. package/README.md +4 -4
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/agent-presentation/SKILL.md +1 -1
  4. package/agent-meta/skills/viable-common/SKILL.md +40 -19
  5. package/build/areas/index.d.ts +1 -0
  6. package/build/areas/index.d.ts.map +1 -1
  7. package/build/areas/index.js +1 -0
  8. package/build/areas/index.js.map +1 -1
  9. package/build/areas/tenancy.d.ts +55 -0
  10. package/build/areas/tenancy.d.ts.map +1 -0
  11. package/build/areas/tenancy.js +33 -0
  12. package/build/areas/tenancy.js.map +1 -0
  13. package/build/blueprint/types.d.ts +19 -1
  14. package/build/blueprint/types.d.ts.map +1 -1
  15. package/build/blueprint/types.js.map +1 -1
  16. package/build/connect/consts.d.ts +3 -15
  17. package/build/connect/consts.d.ts.map +1 -1
  18. package/build/connect/consts.js +3 -15
  19. package/build/connect/consts.js.map +1 -1
  20. package/build/connect/entrypoints.d.ts +33 -69
  21. package/build/connect/entrypoints.d.ts.map +1 -1
  22. package/build/connect/entrypoints.js +5 -25
  23. package/build/connect/entrypoints.js.map +1 -1
  24. package/build/connect/references.d.ts +1 -31
  25. package/build/connect/references.d.ts.map +1 -1
  26. package/build/connect/references.js +0 -7
  27. package/build/connect/references.js.map +1 -1
  28. package/build/connect/types.d.ts +1 -25
  29. package/build/connect/types.d.ts.map +1 -1
  30. package/build/dev/consts.d.ts +15 -0
  31. package/build/dev/consts.d.ts.map +1 -1
  32. package/build/dev/consts.js +16 -0
  33. package/build/dev/consts.js.map +1 -1
  34. package/build/dev/schemas.d.ts +7 -0
  35. package/build/dev/schemas.d.ts.map +1 -1
  36. package/build/dev/schemas.js +9 -1
  37. package/build/dev/schemas.js.map +1 -1
  38. package/build/dev/types.d.ts +15 -1
  39. package/build/dev/types.d.ts.map +1 -1
  40. package/build/planning/schemas.d.ts.map +1 -1
  41. package/build/planning/schemas.js +25 -0
  42. package/build/planning/schemas.js.map +1 -1
  43. package/build/planning/types.d.ts +9 -0
  44. package/build/planning/types.d.ts.map +1 -1
  45. package/package.json +6 -6
  46. package/src/areas/index.ts +1 -0
  47. package/src/areas/tenancy.ts +69 -0
  48. package/src/blueprint/types.ts +19 -1
  49. package/src/connect/consts.ts +3 -16
  50. package/src/connect/entrypoints.ts +10 -60
  51. package/src/connect/references.ts +4 -26
  52. package/src/connect/types.ts +1 -22
  53. package/src/dev/consts.ts +16 -0
  54. package/src/dev/schemas.ts +13 -1
  55. package/src/dev/types.ts +15 -1
  56. package/src/planning/schemas.ts +25 -0
  57. package/src/planning/types.ts +9 -0
  58. package/tests/access-schema.spec.ts +37 -0
  59. package/tests/connect-convert.spec.ts +5 -11
  60. package/tests/connect-entrypoints.spec.ts +33 -14
  61. package/tests/planning.spec.ts +26 -0
  62. package/tests/tenancy.spec.ts +48 -0
@@ -10,6 +10,13 @@ export declare const TechNameSchema: JSONSchemaType<{
10
10
  export declare const EntrypointRefListSchema: JSONSchemaType<{
11
11
  entries: EntrypointRef[];
12
12
  }>;
13
+ /**
14
+ * The access block a model writes.
15
+ *
16
+ * It names only what a model is asked for: `defaults` and `entityScoped` are written by code and
17
+ * must never reach a prompt, which `tests/access-schema.spec.ts` pins byte for byte. A value it
18
+ * admits is still an {@link AccessBlock}, because both code-written keys are optional.
19
+ */
13
20
  export declare const AccessBlockSchema: JSONSchemaType<AccessBlock>;
14
21
  export declare const AccessListSchema: JSONSchemaType<AccessList>;
15
22
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/dev/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAGnF,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CAqBrD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAW7D,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAWzD,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAC,CA2B9E,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAqCzD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,UAAU,CAOvD,CAAA"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/dev/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAGnF,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CAqBrD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAW7D,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAWzD,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAC,CA2B9E,CAAA;AA4CD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAwC,cAAc,CAAC,WAAW,CAAC,CAAA;AAEjG,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,UAAU,CAOvD,CAAA"}
@@ -73,7 +73,7 @@ export const EntrypointRefListSchema = {
73
73
  required: ["entries"],
74
74
  additionalProperties: false
75
75
  };
76
- export const AccessBlockSchema = {
76
+ const ModelAccessBlockSchema = {
77
77
  type: "object",
78
78
  title: "AccessBlock",
79
79
  description: "Object with permissions array and access level",
@@ -110,6 +110,14 @@ export const AccessBlockSchema = {
110
110
  required: ["permissions", "level"],
111
111
  additionalProperties: false
112
112
  };
113
+ /**
114
+ * The access block a model writes.
115
+ *
116
+ * It names only what a model is asked for: `defaults` and `entityScoped` are written by code and
117
+ * must never reach a prompt, which `tests/access-schema.spec.ts` pins byte for byte. A value it
118
+ * admits is still an {@link AccessBlock}, because both code-written keys are optional.
119
+ */
120
+ export const AccessBlockSchema = ModelAccessBlockSchema;
113
121
  export const AccessListSchema = {
114
122
  type: "object",
115
123
  title: "AccessList",
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/dev/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/dev/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AccessLevel } from "./consts.js";
1
+ import type { AccessLevel, PermissionDefault } from "./consts.js";
2
2
  export interface SourceFile {
3
3
  path: string;
4
4
  code: string;
@@ -29,6 +29,20 @@ export interface AccessBlock {
29
29
  level: AccessLevel;
30
30
  /** Gate params safe for every newly signed-in user; a subset of permissions. */
31
31
  defaultEnabledPermissions?: string[];
32
+ /**
33
+ * The default class of each permission this block names, keyed by the gate param with its
34
+ * `@<routeParam>` selector stripped — the name the definition is registered under.
35
+ *
36
+ * Written by CODE, never by a model: `AccessBlockSchema` does not carry it, so a model answer
37
+ * never holds one, and what decides it is the project's tenancy and the area, not a reading of
38
+ * the story.
39
+ */
40
+ defaults?: Record<string, PermissionDefault>;
41
+ /**
42
+ * Whether the permissions of this block are bound to the organization being acted in, rather than
43
+ * held everywhere. Written by code, like {@link AccessBlock.defaults}.
44
+ */
45
+ entityScoped?: boolean;
32
46
  }
33
47
  /**
34
48
  * Access rules keyed by ENTRYPOINT ALIAS — never by URL or route path. The alias prefix decides
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CAAC,UAAU,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAA;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9D;AAED,mGAAmG;AACnG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CAAC,UAAU,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;OAaG;IACH,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAA;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9D;AAED,mGAAmG;AACnG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAOzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EA6BtB,cAAc,CAAC,mBAAmB,CAAC,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAYpB,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAEjD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEvD,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAQzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAqDtB,cAAc,CAAC,mBAAmB,CAAC,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAYpB,cAAc,CAAC,iBAAiB,CAAC,CAAA;AAEjD,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEvD,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAKnB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { CODE_MAX } from '@owlmeans/planning';
2
2
  import { ProjectArea } from '../areas/consts.js';
3
+ import { TENANCY_QUOTE_MAX } from '../areas/tenancy.js';
3
4
  import { StoryKind } from '../ba/consts.js';
4
5
  import { ConnectLlm, ConnectTarget } from '../connect/consts.js';
5
6
  import { ProjectOriginSchema } from '../convert/schemas.js';
@@ -37,6 +38,30 @@ export const ViableProjectFieldsSchema = {
37
38
  required: ['at'],
38
39
  additionalProperties: false,
39
40
  },
41
+ // An absent `tenancy` is "never decided"; a recorded one always carries both flags, so a
42
+ // reader never has to guess what a missing flag meant.
43
+ tenancy: {
44
+ type: 'object',
45
+ nullable: true,
46
+ properties: {
47
+ operators: { type: 'boolean' },
48
+ users: { type: 'boolean' },
49
+ quotes: {
50
+ type: 'object',
51
+ nullable: true,
52
+ properties: {
53
+ operators: { type: 'string', minLength: 1, maxLength: TENANCY_QUOTE_MAX, nullable: true },
54
+ users: { type: 'string', minLength: 1, maxLength: TENANCY_QUOTE_MAX, nullable: true },
55
+ },
56
+ required: [],
57
+ additionalProperties: false,
58
+ },
59
+ by: { type: 'string', enum: ['model', 'owner'] },
60
+ at: { type: 'string', minLength: 1, maxLength: 32 },
61
+ },
62
+ required: ['operators', 'users', 'by', 'at'],
63
+ additionalProperties: false,
64
+ },
40
65
  },
41
66
  required: [],
42
67
  additionalProperties: false,
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/planning/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Card, Project, Specification } from '@owlmeans/planning';
2
2
  import type { ProjectArea } from '../areas/consts.js';
3
+ import type { ViableTenancyDecision } from '../areas/tenancy.js';
3
4
  import type { StoryKind } from '../ba/consts.js';
4
5
  import type { ConnectLlm, ConnectTarget } from '../connect/consts.js';
5
6
  import type { ProjectOrigin } from '../convert/types.js';
@@ -41,6 +42,14 @@ export type ViableProjectFields = {
41
42
  * "none" and no later run would ask again. `at` is when it was decided, an ISO timestamp.
42
43
  */
43
44
  landing?: ViableLandingDecision;
45
+ /**
46
+ * Whether the target splits its operators and its end users into tenant organizations.
47
+ *
48
+ * ABSENT means never decided and reads as a single-organization application, exactly as every
49
+ * project before tenancy. It reaches a run through the blueprint reference (`BlueprintRef.tenancy`)
50
+ * only when a flag is on.
51
+ */
52
+ tenancy?: ViableTenancyDecision;
44
53
  };
45
54
  /** The recorded landing-gate decision — see {@link ViableProjectFields.landing}. */
46
55
  export interface ViableLandingDecision {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/planning/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,iEAAiE;IACjE,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,gGAAgG;IAChG,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC,CAAA;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0EAA0E;IAC1E,IAAI,EAAE,WAAW,CAAA;IACjB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAA;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED,2FAA2F;AAC3F,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,GAC9E;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/planning/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,iEAAiE;IACjE,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,gGAAgG;IAChG,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAA;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC,CAAA;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0EAA0E;IAC1E,IAAI,EAAE,WAAW,CAAA;IACjB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAA;IAChB,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED,2FAA2F;AAC3F,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,GAC9E;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/viable-common",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "license": "MIT",
5
5
  "description": "Runtime-free contracts of the OwlMeans Viable platform — the analysis, design and metadata shapes of a generated project, its target-shape manifest, the slot command vocabulary, the connector protocol and the conversion vocabulary, and the intent-first hand-off from the public site to the platform.",
6
6
  "type": "module",
@@ -66,14 +66,14 @@
66
66
  "typescript": "^7.0.2"
67
67
  },
68
68
  "dependencies": {
69
- "@owlmeans/agent-common": "^0.1.18-rc.43",
70
- "@owlmeans/auth": "^0.1.18-rc.36",
69
+ "@owlmeans/agent-common": "^0.1.18-rc.44",
70
+ "@owlmeans/auth": "^0.1.18-rc.37",
71
71
  "@owlmeans/context": "^0.1.18-rc.32",
72
- "@owlmeans/entrypoint": "^0.1.18-rc.37",
72
+ "@owlmeans/entrypoint": "^0.1.18-rc.38",
73
73
  "@owlmeans/error": "^0.1.18-rc.36",
74
- "@owlmeans/flow": "^0.1.18-rc.40",
74
+ "@owlmeans/flow": "^0.1.18-rc.41",
75
75
  "@owlmeans/llm-common": "^0.1.18-rc.37",
76
- "@owlmeans/planning": "^0.1.18-rc.12",
76
+ "@owlmeans/planning": "^0.1.18-rc.14",
77
77
  "@owlmeans/resource": "^0.1.18-rc.37",
78
78
  "@owlmeans/route": "^0.1.18-rc.33"
79
79
  },
@@ -1,3 +1,4 @@
1
1
  export type * from './types.js'
2
2
 
3
3
  export * from './consts.js'
4
+ export * from './tenancy.js'
@@ -0,0 +1,69 @@
1
+ import type { Blueprint } from '../blueprint/types.js'
2
+ import { ProjectArea } from './consts.js'
3
+
4
+ /**
5
+ * Whether a generated application splits its audiences into tenant ORGANIZATIONS.
6
+ *
7
+ * Two flags rather than one, because the two audiences split independently: one back office can
8
+ * serve end users who each belong to their own company (`users` only), every reseller can run its
9
+ * own staff over one shared public (`operators` only), and a B2B tool usually does both. An
10
+ * organization is an IAM-managed tenant — never a table the target keeps for itself.
11
+ *
12
+ * Both false is today's application: one organization, the project owner's, that every person acts in.
13
+ */
14
+ export interface ProjectTenancy {
15
+ /** The staff of the back office are split into tenant organizations. */
16
+ operators: boolean
17
+ /** The end users of the front office are distributed across tenant organizations. */
18
+ users: boolean
19
+ }
20
+
21
+ /**
22
+ * A tenancy decision as the project card records it (`fields.tenancy`).
23
+ *
24
+ * The flags plus where they came from. `quotes` are the requester's OWN sentences, verbatim — the
25
+ * evidence a later reader (a person reviewing the board, a run asked to reconsider) checks the
26
+ * decision against, which a paraphrase would quietly replace with the model's reading of it.
27
+ * `by` says whether a model inferred it or the owner set it; `at` is when, an ISO timestamp.
28
+ */
29
+ export interface ViableTenancyDecision extends ProjectTenancy {
30
+ quotes?: { operators?: string; users?: string }
31
+ by: 'model' | 'owner'
32
+ at: string
33
+ }
34
+
35
+ /** The longest requester sentence a tenancy decision quotes — a card refuses a longer one. */
36
+ export const TENANCY_QUOTE_MAX = 1024
37
+
38
+ /** A single-organization application — what every project is until a decision says otherwise. */
39
+ export const NO_TENANCY: ProjectTenancy = Object.freeze({ operators: false, users: false })
40
+
41
+ /**
42
+ * The tenancy of a resolved blueprint.
43
+ *
44
+ * Total, like `landingGatePreferenceOf`: an absent layer, an absent key and a value this deploy
45
+ * cannot read all answer {@link NO_TENANCY}. Only a literal `true` turns a flag on, because a flag
46
+ * read as on by mistake splits a product's people into organizations nobody asked for, while one
47
+ * read as off leaves the application exactly as it was before tenancy existed.
48
+ */
49
+ export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
50
+ const tenancy = blueprint?.experience?.tenancy
51
+ const operators = tenancy?.operators === true
52
+ const users = tenancy?.users === true
53
+
54
+ return operators || users ? Object.freeze({ operators, users }) : NO_TENANCY
55
+ }
56
+
57
+ /**
58
+ * Whether an AREA's people act inside a tenant organization.
59
+ *
60
+ * Guest has no organization to act in, and admin is the project owner, who stands above every
61
+ * tenant rather than inside one — so both are never tenanted, whatever the flags say.
62
+ */
63
+ export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
64
+ switch (area) {
65
+ case ProjectArea.User: return tenancy.users === true
66
+ case ProjectArea.Operator: return tenancy.operators === true
67
+ default: return false
68
+ }
69
+ }
@@ -1,3 +1,4 @@
1
+ import type { ProjectTenancy } from '../areas/tenancy.js'
1
2
  import type { SubProject } from '../slot/consts.js'
2
3
  import type { ViableSkill } from '../skills/consts.js'
3
4
  import type { ViablePersona } from '../skills/roles.js'
@@ -21,7 +22,7 @@ import type { TopologyDescriptor } from '../topology/types.js'
21
22
  * OPTIONAL and says what its product should do for the people using it. Optional because a
22
23
  * blueprint registered before the layer existed — or a patch serialized into a run row — must keep
23
24
  * resolving: every reader asks through a helper that answers the default for an absent layer
24
- * ({@link landingGatePreferenceOf}).
25
+ * ({@link landingGatePreferenceOf}, `tenancyOf`).
25
26
  */
26
27
  export interface Blueprint {
27
28
  id: string
@@ -85,6 +86,14 @@ export enum LandingGatePreference {
85
86
  */
86
87
  export interface ExperienceLayer {
87
88
  landingGate: LandingGatePreference
89
+ /**
90
+ * Whether the product splits its audiences into tenant organizations.
91
+ *
92
+ * Written by resolution from {@link BlueprintRef.tenancy} — the project's own decision — and by
93
+ * no blueprint or case table, which cannot know it. Absent is a single-organization application;
94
+ * always read through `tenancyOf`.
95
+ */
96
+ tenancy?: ProjectTenancy
88
97
  }
89
98
 
90
99
  const LANDING_GATE_PREFERENCES = new Set<string>(Object.values(LandingGatePreference))
@@ -266,5 +275,14 @@ export interface BlueprintRef {
266
275
  * which is the only reading that cannot silently take a capability away from a live project.
267
276
  */
268
277
  case?: string
278
+ /**
279
+ * Whether the product splits its audiences into tenant organizations — the project card's
280
+ * decision, resolved into `experience.tenancy`.
281
+ *
282
+ * Flags rather than a key, because the decision is the project's own and no table could hold it;
283
+ * two booleans are still no artifact. Absent, or both false, applies nothing, so a run row of a
284
+ * project nobody decided for serializes exactly as it did before tenancy existed.
285
+ */
286
+ tenancy?: ProjectTenancy
269
287
  overrides?: BlueprintPatch
270
288
  }
@@ -260,9 +260,9 @@ export const CONNECT_INQUIRY_MAX_TEXT = 2_000
260
260
  /**
261
261
  * How long a session survives without a sign of life.
262
262
  *
263
- * A connector refreshes its presence on every socket ping, every long-poll and every submit. Ten
264
- * minutes is generous on purpose: a parent agent running one model task in a subagent can be
265
- * silent for several, and expiring a session under it would fail a run that was progressing.
263
+ * A connector refreshes its presence on every long poll and every submit. Ten minutes is generous
264
+ * on purpose: a parent agent running one model task in a subagent can be silent for several, and
265
+ * expiring a session under it would fail a run that was progressing.
266
266
  */
267
267
  export const CONNECT_SESSION_EXPIRE_MS = 600_000
268
268
 
@@ -354,10 +354,6 @@ export const CONNECT_MARKER_DIR = '.viable'
354
354
  export const CONNECT_ENV_BEGIN = '# --- viable:managed ---'
355
355
  export const CONNECT_ENV_END = '# --- /viable:managed ---'
356
356
 
357
- /** Socket events a connector session carries. */
358
- export const CONNECT_EVENT_OP = 'connect:op'
359
- export const CONNECT_EVENT_SESSION = 'connect:session'
360
-
361
357
  /** Redis resource aliases the platform registers for the relay. */
362
358
  export const CONNECT_OP_PUBSUB = 'connect-op-pubsub'
363
359
  export const CONNECT_RESULT_PUBSUB = 'connect-result-pubsub'
@@ -381,14 +377,10 @@ export const RES_CONNECT_SESSION = 'connect-session'
381
377
  */
382
378
  export const connect = Object.freeze({
383
379
  base: 'viable:manager-api:connect:base',
384
- capabilities: 'viable:manager-api:connect:capabilities',
385
380
  session: Object.freeze({
386
381
  open: 'viable:manager-api:connect:session:open',
387
382
  openDelegated: 'viable:manager-api:connect:session:open-delegated',
388
- get: 'viable:manager-api:connect:session:get',
389
- heartbeat: 'viable:manager-api:connect:session:heartbeat',
390
383
  close: 'viable:manager-api:connect:session:close',
391
- socket: 'viable:manager-api:connect:session:socket',
392
384
  }),
393
385
  op: Object.freeze({
394
386
  pull: 'viable:manager-api:connect:op:pull',
@@ -402,10 +394,6 @@ export const connect = Object.freeze({
402
394
  attach: 'viable:manager-api:connect:project:attach',
403
395
  reinit: 'viable:manager-api:connect:project:reinit',
404
396
  modify: 'viable:manager-api:connect:project:modify',
405
- settings: 'viable:manager-api:connect:project:settings',
406
- llm: 'viable:manager-api:connect:project:llm',
407
- /** The per-project converter inference mode. Separate from `llm`: it is not a paid capability. */
408
- converterLlm: 'viable:manager-api:connect:project:converter-llm',
409
397
  /**
410
398
  * The project's own branding — copyright, organization, the two legal links, the Google tag.
411
399
  * The platform credit is deliberately NOT here: hiding it is a paid capability with its own
@@ -424,7 +412,6 @@ export const connect = Object.freeze({
424
412
  check: 'viable:manager-api:connect:convert:check',
425
413
  start: 'viable:manager-api:connect:convert:start',
426
414
  proceed: 'viable:manager-api:connect:convert:proceed',
427
- cancel: 'viable:manager-api:connect:convert:cancel',
428
415
  status: 'viable:manager-api:connect:convert:status',
429
416
  purge: 'viable:manager-api:connect:convert:purge',
430
417
  }),
@@ -1,26 +1,23 @@
1
1
  import { contract, openProtocol, protocol, typed } from '@owlmeans/entrypoint'
2
- import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint'
3
- import { route, RouteMethod, socket } from '@owlmeans/route'
4
- import { ConverterProjectLlmBodySchema } from '../convert/schemas.js'
2
+ import { route, RouteMethod } from '@owlmeans/route'
5
3
  import { connect } from './consts.js'
6
4
  import {
7
5
  ConnectAttachBodySchema, ConnectConfirmBodySchema, ConnectConvertCreateBodySchema,
8
6
  ConnectConvertProceedBodySchema, ConnectCreateBodySchema, ConnectInquiryParamsSchema,
9
7
  ConnectModifyBodySchema, ConnectOpParamsSchema, ConnectOpResultSchema,
10
8
  ConnectPipelineParamsSchema, ConnectPipelineResumeBodySchema, ConnectProjectBrandingSaveSchema,
11
- ConnectProjectIdSchema, ConnectProjectLlmBodySchema, ConnectSessionOpenSchema,
12
- ConnectSessionParamsSchema, ConnectPullQuerySchema, ConnectStoryParamsSchema, InquiryAnswerSchema,
9
+ ConnectProjectIdSchema, ConnectSessionOpenSchema, ConnectSessionParamsSchema, ConnectPullQuerySchema,
10
+ ConnectStoryParamsSchema, InquiryAnswerSchema,
13
11
  } from './schemas.js'
14
12
  import type {
15
13
  ConnectAttachBody, ConnectConfirmBody, ConnectConvertCreateBody, ConnectConvertProceedBody,
16
14
  ConnectCreateBody, ConnectInquiryAnswerBody, ConnectModifyBody,
17
15
  ConnectPipelineParams, ConnectPipelineResumeBody, ConnectProjectBranding,
18
- ConnectProjectBrandingSave, ConnectProjectLlmBody, ConnectSessionOpen,
16
+ ConnectProjectBrandingSave, ConnectSessionOpen,
19
17
  ConnectPipelineState, ConnectProjectStatus, ConnectPullQuery, ConnectSessionParams,
20
18
  ConnectStoryStatus, ConversionStatusView, ConvertCheck,
21
19
  } from './types.js'
22
20
  import type { ConnectOpResult } from './ops.js'
23
- import type { ConverterProjectLlmBody } from '../convert/types.js'
24
21
 
25
22
  /**
26
23
  * What the platform injects when it mounts the connector routes.
@@ -37,19 +34,19 @@ export interface ConnectEntrypointOptions {
37
34
  /**
38
35
  * The gate that decides whether the caller may use the local-LLM mode.
39
36
  *
40
- * Applied to the two routes that can turn it on — opening a delegated session and pinning a
41
- * project to it. Everything else is free: `cloud` is the default and the platform writes it
42
- * back by itself when a plan lapses.
37
+ * Applied to the one route that turns it on — opening a delegated session. Everything else is
38
+ * free: `cloud` is the default, and a project's own override is the platform's browser surface,
39
+ * not the connector's.
43
40
  */
44
41
  localLlm?: { alias: string, params: string[] }
45
- /** The platform-owned websocket-base protocol that carries session updates. */
46
- updateBase: EntrypointProtocol<OpenRequest, OpenValue>
47
42
  /** Path prefix; defaults to `/connect`. */
48
43
  path?: string
49
44
  }
50
45
 
51
46
  /**
52
- * Declare the connector's HTTP and socket surface.
47
+ * Declare the connector's HTTP surface — exactly the routes a connector calls: the session (long
48
+ * poll, no socket), the operation relay, projects, story status, generated files, conversion,
49
+ * inquiry answers and pipeline state.
53
50
  *
54
51
  * One immutable tree, mounted directly by the platform's entrypoint tree. Handlers are bound to these protocols
55
52
  * server-side and onto client entrypoints in the SDK — the same declarations both times, which is
@@ -69,11 +66,6 @@ export const connectProtocols = (opts: ConnectEntrypointOptions) => {
69
66
  return {
70
67
  base,
71
68
 
72
- capabilities: protocol(
73
- route(connect.capabilities, '/capabilities', { parent: base, method: RouteMethod.GET }),
74
- contract(typed()),
75
- ),
76
-
77
69
  // --- session ---------------------------------------------------------------------------
78
70
  session: {
79
71
  open: protocol(
@@ -86,29 +78,12 @@ export const connectProtocols = (opts: ConnectEntrypointOptions) => {
86
78
  }),
87
79
  contract.request({ body: typed<ConnectSessionOpen>(ConnectSessionOpenSchema) }, typed()), paid
88
80
  ),
89
- get: protocol(
90
- route(connect.session.get, '/session/:sessionId', {
91
- parent: base, method: RouteMethod.GET
92
- }),
93
- contract.request({ params: typed<ConnectSessionParams>(ConnectSessionParamsSchema) }, typed())
94
- ),
95
- heartbeat: protocol(
96
- route(connect.session.heartbeat, '/session/:sessionId/heartbeat', {
97
- parent: base, method: RouteMethod.POST
98
- }),
99
- contract.request({ params: typed<ConnectSessionParams>(ConnectSessionParamsSchema) }, typed())
100
- ),
101
81
  close: protocol(
102
82
  route(connect.session.close, '/session/:sessionId/close', {
103
83
  parent: base, method: RouteMethod.POST
104
84
  }),
105
85
  contract.request({ params: typed<ConnectSessionParams>(ConnectSessionParamsSchema) }, typed())
106
86
  ),
107
- socket: protocol(
108
- route(connect.session.socket, '/connect/:sessionId', socket({ parent: opts.updateBase })),
109
- contract.request({ params: typed<ConnectSessionParams>(ConnectSessionParamsSchema) }, typed())
110
- ),
111
-
112
87
  },
113
88
 
114
89
  // --- operations ------------------------------------------------------------------------
@@ -168,27 +143,6 @@ export const connectProtocols = (opts: ConnectEntrypointOptions) => {
168
143
  }),
169
144
  contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema), body: typed<ConnectModifyBody>(ConnectModifyBodySchema) }, typed<ConnectProjectStatus>())
170
145
  ),
171
- settings: protocol(
172
- route(connect.project.settings, '/project/:id/settings', {
173
- parent: base, method: RouteMethod.GET
174
- }),
175
- contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema) }, typed())
176
- ),
177
- llm: protocol(
178
- route(connect.project.llm, '/project/:id/llm', {
179
- parent: base, method: RouteMethod.POST
180
- }),
181
- contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema), body: typed<ConnectProjectLlmBody>(ConnectProjectLlmBodySchema) }, typed()), paid
182
- ),
183
- converterLlm: protocol(
184
- route(connect.project.converterLlm, '/project/:id/converter-llm', {
185
- parent: base, method: RouteMethod.POST,
186
- }),
187
- contract.request({
188
- params: typed<{ id: string }>(ConnectProjectIdSchema),
189
- body: typed<ConverterProjectLlmBody>(ConverterProjectLlmBodySchema),
190
- }, typed()),
191
- ),
192
146
  // Under `base` like every sibling — the guard and the ownership gate — and never under the
193
147
  // paid gate: saving branding is free, and the paid credit switch is not reachable from here.
194
148
  branding: {
@@ -252,10 +206,6 @@ export const connectProtocols = (opts: ConnectEntrypointOptions) => {
252
206
  body: typed<ConnectConvertProceedBody>(ConnectConvertProceedBodySchema),
253
207
  }, typed<ConversionStatusView>()),
254
208
  ),
255
- cancel: protocol(
256
- route(connect.convert.cancel, '/convert/:id/cancel', { parent: base, method: RouteMethod.POST }),
257
- contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema) }, typed<ConversionStatusView>()),
258
- ),
259
209
  status: protocol(
260
210
  route(connect.convert.status, '/convert/:id', { parent: base, method: RouteMethod.GET }),
261
211
  contract.request({ params: typed<{ id: string }>(ConnectProjectIdSchema) }, typed<ConversionStatusView>()),
@@ -3,13 +3,11 @@ import type { RegisteredEntrypoint, RequestShape } from '@owlmeans/entrypoint'
3
3
  import type { EntrypointReference } from '@owlmeans/context'
4
4
  import { connect } from './consts.js'
5
5
  import type { ConnectOp, ConnectOpResult } from './ops.js'
6
- import type { ConverterProjectLlmBody } from '../convert/index.js'
7
6
  import type {
8
- ConnectAttachBody, ConnectCapabilitiesView, ConnectConfirmBody, ConnectCreateBody,
9
- ConnectConvertCreateBody, ConnectConvertProceedBody, ConnectInquiryAnswerBody,
10
- ConnectModifyBody, ConnectOpSubmission, ConnectPipelineParams, ConnectPipelineResumeBody,
11
- ConnectPipelineState, ConnectProjectBranding, ConnectProjectBrandingSave, ConnectProjectLlmBody,
12
- ConnectProjectSettings, ConnectProjectStatus, ConnectProjectSummary, ConnectPullQuery,
7
+ ConnectAttachBody, ConnectConfirmBody, ConnectCreateBody, ConnectConvertCreateBody,
8
+ ConnectConvertProceedBody, ConnectInquiryAnswerBody, ConnectModifyBody, ConnectOpSubmission,
9
+ ConnectPipelineParams, ConnectPipelineResumeBody, ConnectPipelineState, ConnectProjectBranding,
10
+ ConnectProjectBrandingSave, ConnectProjectStatus, ConnectProjectSummary, ConnectPullQuery,
13
11
  ConnectSessionOpen, ConnectSessionParams, ConnectSessionView, ConnectStoryStatus,
14
12
  ConversionStatusView, ConvertCheck,
15
13
  } from './types.js'
@@ -18,12 +16,9 @@ type ConnectReference<Request extends RequestShape, Response> =
18
16
  EntrypointReference<RegisteredEntrypoint<Request, Response>>
19
17
 
20
18
  export interface ConnectReferences {
21
- capabilities: ConnectReference<{}, ConnectCapabilitiesView>
22
19
  session: {
23
20
  open: ConnectReference<{ body: ConnectSessionOpen }, ConnectSessionView>
24
21
  openDelegated: ConnectReference<{ body: ConnectSessionOpen }, ConnectSessionView>
25
- get: ConnectReference<{ params: ConnectSessionParams }, ConnectSessionView>
26
- heartbeat: ConnectReference<{ params: ConnectSessionParams }, ConnectSessionView>
27
22
  close: ConnectReference<{ params: ConnectSessionParams }, ConnectSessionView>
28
23
  }
29
24
  op: {
@@ -40,11 +35,6 @@ export interface ConnectReferences {
40
35
  attach: ConnectReference<{ body: ConnectAttachBody }, ConnectProjectStatus>
41
36
  reinit: ConnectReference<{ params: { id: string } }, ConnectProjectStatus>
42
37
  modify: ConnectReference<{ params: { id: string }, body: ConnectModifyBody }, ConnectProjectStatus>
43
- settings: ConnectReference<{ params: { id: string } }, ConnectProjectSettings>
44
- llm: ConnectReference<{ params: { id: string }, body: ConnectProjectLlmBody }, ConnectProjectSettings>
45
- converterLlm: ConnectReference<{
46
- params: { id: string }, body: ConverterProjectLlmBody
47
- }, ConnectProjectSettings>
48
38
  branding: {
49
39
  get: ConnectReference<{ params: { id: string } }, ConnectProjectBranding>
50
40
  save: ConnectReference<{
@@ -65,7 +55,6 @@ export interface ConnectReferences {
65
55
  proceed: ConnectReference<{
66
56
  params: { id: string }, body: ConnectConvertProceedBody
67
57
  }, ConversionStatusView>
68
- cancel: ConnectReference<{ params: { id: string } }, ConversionStatusView>
69
58
  status: ConnectReference<{ params: { id: string } }, ConversionStatusView>
70
59
  purge: ConnectReference<{ params: { id: string } }, ConversionStatusView>
71
60
  }
@@ -88,12 +77,9 @@ export interface ConnectReferences {
88
77
  * aliases to UI or domain code.
89
78
  */
90
79
  export const connectRef: ConnectReferences = {
91
- capabilities: entrypointRef<{}, ConnectCapabilitiesView>(connect.capabilities),
92
80
  session: {
93
81
  open: entrypointRef<{ body: ConnectSessionOpen }, ConnectSessionView>(connect.session.open),
94
82
  openDelegated: entrypointRef<{ body: ConnectSessionOpen }, ConnectSessionView>(connect.session.openDelegated),
95
- get: entrypointRef<{ params: ConnectSessionParams }, ConnectSessionView>(connect.session.get),
96
- heartbeat: entrypointRef<{ params: ConnectSessionParams }, ConnectSessionView>(connect.session.heartbeat),
97
83
  close: entrypointRef<{ params: ConnectSessionParams }, ConnectSessionView>(connect.session.close),
98
84
  },
99
85
  op: {
@@ -110,13 +96,6 @@ export const connectRef: ConnectReferences = {
110
96
  attach: entrypointRef<{ body: ConnectAttachBody }, ConnectProjectStatus>(connect.project.attach),
111
97
  reinit: entrypointRef<{ params: { id: string } }, ConnectProjectStatus>(connect.project.reinit),
112
98
  modify: entrypointRef<{ params: { id: string }, body: ConnectModifyBody }, ConnectProjectStatus>(connect.project.modify),
113
- settings: entrypointRef<{ params: { id: string } }, ConnectProjectSettings>(connect.project.settings),
114
- llm: entrypointRef<{
115
- params: { id: string }, body: ConnectProjectLlmBody
116
- }, ConnectProjectSettings>(connect.project.llm),
117
- converterLlm: entrypointRef<{
118
- params: { id: string }, body: ConverterProjectLlmBody
119
- }, ConnectProjectSettings>(connect.project.converterLlm),
120
99
  branding: {
121
100
  get: entrypointRef<{ params: { id: string } }, ConnectProjectBranding>(connect.project.branding.get),
122
101
  save: entrypointRef<{
@@ -136,7 +115,6 @@ export const connectRef: ConnectReferences = {
136
115
  proceed: entrypointRef<{
137
116
  params: { id: string }, body: ConnectConvertProceedBody
138
117
  }, ConversionStatusView>(connect.convert.proceed),
139
- cancel: entrypointRef<{ params: { id: string } }, ConversionStatusView>(connect.convert.cancel),
140
118
  status: entrypointRef<{
141
119
  params: { id: string }
142
120
  }, ConversionStatusView>(connect.convert.status),