@noodleseed/one 0.178.0 → 0.179.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.
@@ -1 +1 @@
1
- {"version":3,"file":"solutions-conversations.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4CnD,kGAAkG;AAClG,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CA8LjB"}
1
+ {"version":3,"file":"solutions-conversations.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4CnD,kGAAkG;AAClG,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CAmMjB"}
@@ -124,6 +124,11 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
124
124
  printJsonOk(data);
125
125
  else
126
126
  console.log([
127
+ ...('preview' in data && data.preview
128
+ ? [
129
+ `Preview environment: conversations are kept for ${data.preview.retentionDays} days.`,
130
+ ]
131
+ : []),
127
132
  ...(exported
128
133
  ? exported.conversations.flatMap((row) => [line(row), ...row.items.map(itemLine)])
129
134
  : data.conversations.map(line)),
@@ -1 +1 @@
1
- {"version":3,"file":"solutions-conversations.js","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solutions-conversations.js","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,9 @@ export declare const MANAGED_RETENTION_DAYS: readonly [7, 30, 90];
15
15
  export type ManagedRetentionDays = (typeof MANAGED_RETENTION_DAYS)[number];
16
16
  export declare const BUSINESS_ROLES: readonly ["administrator", "manager", "operator", "viewer"];
17
17
  export type BusinessRole = (typeof BUSINESS_ROLES)[number];
18
- export type BusinessPermission = 'installation:administer' | 'grants:manage' | 'records:create' | 'records:read' | 'records:update' | 'records:assign' | 'records:status' | 'records:note' | 'records:delete' | 'records:export';
18
+ export type BusinessPermission = 'installation:administer' | 'grants:manage' | 'records:create' | 'records:read' | 'records:update' | 'records:assign' | 'records:status' | 'records:note' | 'records:delete' | 'records:export'
19
+ /** Workspace Builders and administrators read Preview-environment conversations (ADR 0241). */
20
+ | 'drafts:preview';
19
21
  export declare const MANAGED_REQUEST_STATUSES: readonly ["new", "in_progress", "resolved", "closed"];
20
22
  export type ManagedRequestStatus = (typeof MANAGED_REQUEST_STATUSES)[number];
21
23
  export declare const BUILT_IN_PROFILE_KEYS: readonly ["travel", "b2b_saas", "ecommerce", "restaurant"];
@@ -11,6 +11,7 @@ const operations = {
11
11
  'records:note': 'records:write',
12
12
  'records:delete': 'records:erase',
13
13
  'records:export': 'records:export',
14
+ 'drafts:preview': 'drafts:preview',
14
15
  };
15
16
  export function workspacePermissionForBusinessOperation(permission) {
16
17
  return operations[permission];
@@ -27,6 +27,11 @@ export class ApplicationConversations {
27
27
  constructor(options) {
28
28
  this.options = options;
29
29
  }
30
+ /** Whether this installation serves a Preview environment; failure keeps production rules. */
31
+ async isPreview(scope) {
32
+ const tenant = { org: scope.org, app: scope.app, env: scope.env };
33
+ return (await this.options.preview?.(tenant).catch(() => false)) ?? false;
34
+ }
30
35
  async project(scope, action, input, local = runLocal) {
31
36
  const tenant = { org: scope.org, app: scope.app, env: scope.env };
32
37
  const allowed = action === 'list' || action === 'export' ? ['limit', 'cursor', 'channel', 'status'] : [];
@@ -138,6 +143,7 @@ export class ApplicationConversations {
138
143
  data: {
139
144
  conversations: page.summaries.map(summary),
140
145
  ...(page.nextCursor ? { nextCursor: page.nextCursor } : {}),
146
+ ...((await this.isPreview(scope)) ? { preview: { retentionDays: page.days } } : {}),
141
147
  },
142
148
  }),
143
149
  audits: [],
@@ -181,7 +187,7 @@ export class ApplicationConversations {
181
187
  });
182
188
  const after = decodeConversationCursor(cursor, binding);
183
189
  const now = this.#now();
184
- const notBefore = await this.#notBefore(tenant, now);
190
+ const { notBefore, days } = await this.#window(tenant, now);
185
191
  const rows = await local(() => this.options.store.list(tenant, {
186
192
  now,
187
193
  notBefore,
@@ -195,6 +201,7 @@ export class ApplicationConversations {
195
201
  return {
196
202
  now,
197
203
  notBefore,
204
+ days,
198
205
  summaries,
199
206
  nextCursor: rows.length > limit && last ? encodeConversationCursor(binding, last) : undefined,
200
207
  };
@@ -208,10 +215,13 @@ export class ApplicationConversations {
208
215
  * nothing deleted, which is all the business history contract forbids.
209
216
  */
210
217
  async #notBefore(tenant, now) {
218
+ return (await this.#window(tenant, now)).notBefore;
219
+ }
220
+ async #window(tenant, now) {
211
221
  const policy = await this.options.policy(tenant).catch(() => undefined);
212
222
  if (!policy || !Number.isInteger(policy.maximumDays))
213
223
  throw new ConversationHistoryError('conversation_unavailable');
214
- return conversationReadBound(policy, now);
224
+ return { days: conversationWindowDays(policy), notBefore: conversationReadBound(policy, now) };
215
225
  }
216
226
  #hash(value) {
217
227
  return createHmac('sha256', this.options.identityKey)
@@ -267,9 +277,13 @@ function detail(conversation, windowMs) {
267
277
  }
268
278
  /** Oldest visible item time under a policy's live window; Off hides every item. */
269
279
  export function conversationReadBound(policy, now) {
270
- const days = Math.max(0, Math.min(policy.conversationDays ?? 0, policy.maximumDays));
280
+ const days = conversationWindowDays(policy);
271
281
  return days === 0 ? now + 1 : now - days * CONVERSATION_DAY_MS;
272
282
  }
283
+ /** The live window in days: the chosen duration under the plan maximum; 0 hides everything. */
284
+ function conversationWindowDays(policy) {
285
+ return Math.max(0, Math.min(policy.conversationDays ?? 0, policy.maximumDays));
286
+ }
273
287
  /** An opaque keyset position bound to the purpose, scope and page shape that `binding` hashes. */
274
288
  export function encodeConversationCursor(binding, last) {
275
289
  return Buffer.from(JSON.stringify({ binding, lastMessageAt: last.lastMessageAt, id: last.id })).toString('base64url');
@@ -0,0 +1,43 @@
1
+ import { ALL_CONVERSATION_SOURCES, } from './contracts.js';
2
+ /**
3
+ * ADR 0241 decision 18: a Preview environment's conversations are kept this long, whatever the stored
4
+ * opt-in or recording switches, and never longer than the plan maximum.
5
+ */
6
+ export const PREVIEW_CONVERSATION_DAYS = 3;
7
+ /**
8
+ * A Preview environment is a deployed environment of an app whose production environment is another,
9
+ * designated one. An unknown environment, an app with no resolved production designation, or an
10
+ * unreadable registry keeps production semantics, so a live chat never loses its opt-in or reaches a
11
+ * Builder by default.
12
+ */
13
+ export function previewEnvironments(registry) {
14
+ return async (tenant) => {
15
+ try {
16
+ const current = await registry.getEnvironment(tenant.org, tenant.app, tenant.env);
17
+ if (current === undefined || current.isProduction)
18
+ return false;
19
+ const environments = await registry.listEnvironments(tenant.org, tenant.app);
20
+ return environments.some((item) => item.isProduction && item.envName !== tenant.env);
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ };
26
+ }
27
+ /** A Preview tenant records every source for the fixed window; production policy is returned as is. */
28
+ export function withPreviewConversations(policy, isPreview) {
29
+ return async (tenant) => {
30
+ const current = await policy(tenant);
31
+ if (current === undefined || !(await isPreview(tenant)))
32
+ return current;
33
+ return previewConversationPolicy(current.maximumDays);
34
+ };
35
+ }
36
+ function previewConversationPolicy(maximumDays) {
37
+ return {
38
+ maximumDays,
39
+ conversationDays: Math.max(0, Math.min(PREVIEW_CONVERSATION_DAYS, maximumDays)),
40
+ sources: { ...ALL_CONVERSATION_SOURCES },
41
+ };
42
+ }
43
+ //# sourceMappingURL=preview.js.map
@@ -1,7 +1,10 @@
1
1
  import { readJsonBody, sendJson } from '@noodle-borg/transport-http';
2
2
  import { ConversationReviewRequestSchema } from '@noodle-borg/wire-contracts';
3
+ import { businessGrantAllows } from '../business-information/model.js';
3
4
  import { ConversationHistoryError, } from '../conversation-history/operator.js';
5
+ import { sendForbidden } from '../http-util.js';
4
6
  import { requireIdentity, requireInstallationPermission, } from './business-information.js';
7
+ import { resolveBusinessStaffGrant } from './business-information-access.js';
5
8
  /**
6
9
  * ADR 0241 decision 10: readers see text; reviewing and noting need the record-handling permissions an
7
10
  * Operator holds; only export and erasure need Owner/Administrator authority.
@@ -25,7 +28,11 @@ export async function handleApplicationConversations(req, res, url, ref, deps) {
25
28
  if (identity === false)
26
29
  return;
27
30
  // A review's permissions follow its fields, so it is read-authorized before its body is parsed.
28
- let permissions = [PERMISSIONS[route]];
31
+ let permissions = [
32
+ action === 'list' || action === 'show'
33
+ ? await readPermission(ref, identity, deps)
34
+ : PERMISSIONS[route],
35
+ ];
29
36
  const authorize = async () => {
30
37
  const [last = PERMISSIONS[route], ...earlier] = [...permissions].reverse();
31
38
  for (const permission of earlier)
@@ -74,8 +81,12 @@ export async function handleApplicationConversations(req, res, url, ref, deps) {
74
81
  env: authorized.scope.env,
75
82
  actorSubject: identity.subject,
76
83
  });
77
- if (await authorize())
78
- sendJson(res, 200, result.response);
84
+ if (!(await authorize()))
85
+ return;
86
+ // A Preview read is answered only while the environment is still a Preview.
87
+ if (fence === 'drafts:preview' && !(await deps.conversations.isPreview(authorized.scope)))
88
+ return sendForbidden(res, 'business permission required: records:read');
89
+ sendJson(res, 200, result.response);
79
90
  }
80
91
  catch (error) {
81
92
  if (!(error instanceof ConversationHistoryError))
@@ -87,4 +98,22 @@ export async function handleApplicationConversations(req, res, url, ref, deps) {
87
98
  : 400, { code: error.code, error: error.message });
88
99
  }
89
100
  }
101
+ /**
102
+ * ADR 0241 decision 18: a Builder never holds `records:read`, but reads a Preview environment's
103
+ * conversations under `drafts:preview`. Every other caller keeps the ordinary read permission, so a
104
+ * production installation still denies Builders.
105
+ */
106
+ async function readPermission(ref, identity, deps) {
107
+ if (ref.installationId === undefined || !deps.conversations)
108
+ return 'records:read';
109
+ const installation = await deps.store.getInstallationById(ref.org, ref.installationId);
110
+ if (installation === undefined)
111
+ return 'records:read';
112
+ const grant = await resolveBusinessStaffGrant(deps, installation.scope, identity.subject);
113
+ return !businessGrantAllows(grant, 'records:read') &&
114
+ businessGrantAllows(grant, 'drafts:preview') &&
115
+ (await deps.conversations.isPreview(installation.scope))
116
+ ? 'drafts:preview'
117
+ : 'records:read';
118
+ }
90
119
  //# sourceMappingURL=business-information-conversations.js.map
@@ -2,6 +2,7 @@ import { randomBytes } from 'node:crypto';
2
2
  import { ActivityPolicyError, ApplicationActivity } from './application-activity.js';
3
3
  import { historyDisabledSurfaces } from './application-history-settings.js';
4
4
  import { ApplicationConversations } from './conversation-history/operator.js';
5
+ import { previewEnvironments, withPreviewConversations } from './conversation-history/preview.js';
5
6
  /** Installation history projections over the optional durable stores the service was given. */
6
7
  export function createHistoryProjections(options, moduleHost, installations, registry) {
7
8
  const history = options.conversationHistory;
@@ -13,12 +14,14 @@ export function createHistoryProjections(options, moduleHost, installations, reg
13
14
  ...(history === undefined ? {} : { conversationHistory: history.store }),
14
15
  historyDisabledSurfaces: async (scope) => historyDisabledSurfaces((await registry.getActiveByTenant(scope))?.served.artifact.server.assistant),
15
16
  });
16
- const conversationPolicy = history?.policy ?? settingsConversationPolicy(installations, activity);
17
+ const preview = previewEnvironments(registry);
18
+ const conversationPolicy = withPreviewConversations(history?.policy ?? settingsConversationPolicy(installations, activity), preview);
17
19
  const conversations = history === undefined
18
20
  ? undefined
19
21
  : new ApplicationConversations({
20
22
  store: history.store,
21
23
  policy: conversationPolicy,
24
+ preview,
22
25
  identityKey: history.identityKey ?? randomBytes(32).toString('hex'),
23
26
  ...(options.clock === undefined
24
27
  ? {}
@@ -189,6 +189,9 @@ export declare const ConversationListResponseSchema: z.ZodObject<{
189
189
  }>;
190
190
  }, z.core.$strict>>;
191
191
  nextCursor: z.ZodOptional<z.ZodString>;
192
+ preview: z.ZodOptional<z.ZodObject<{
193
+ retentionDays: z.ZodNumber;
194
+ }, z.core.$strict>>;
192
195
  }, z.core.$strict>;
193
196
  }, z.core.$strict>;
194
197
  /** Show and review both answer with the conversation as staff now see it. */
@@ -357,6 +360,9 @@ export declare const ConversationListClientResponseSchema: z.ZodObject<{
357
360
  }>;
358
361
  }, z.core.$strip>>;
359
362
  nextCursor: z.ZodOptional<z.ZodString>;
363
+ preview: z.ZodOptional<z.ZodObject<{
364
+ retentionDays: z.ZodNumber;
365
+ }, z.core.$strip>>;
360
366
  }, z.core.$strip>;
361
367
  }, z.core.$strip>;
362
368
  export declare const ConversationShowClientResponseSchema: z.ZodObject<{
@@ -57,11 +57,14 @@ export const ConversationShowSchema = z.strictObject({
57
57
  notes: z.array(ConversationNoteSchema).max(100),
58
58
  });
59
59
  const NextCursorSchema = z.string().min(1).max(2048);
60
+ /** Present only for a Preview environment, whose conversations keep a short fixed window. */
61
+ const PreviewWindowSchema = z.strictObject({ retentionDays: z.number().int().min(0).max(365) });
60
62
  export const ConversationListResponseSchema = z.strictObject({
61
63
  ok: z.literal(true),
62
64
  data: z.strictObject({
63
65
  conversations: z.array(ConversationSummarySchema).max(100),
64
66
  nextCursor: NextCursorSchema.optional(),
67
+ preview: PreviewWindowSchema.optional(),
65
68
  }),
66
69
  });
67
70
  /** Show and review both answer with the conversation as staff now see it. */
@@ -126,6 +129,7 @@ export const ConversationListClientResponseSchema = z.object({
126
129
  data: z.object({
127
130
  conversations: z.array(ClientSummarySchema).max(100),
128
131
  nextCursor: NextCursorSchema.optional(),
132
+ preview: z.object(PreviewWindowSchema.shape).optional(),
129
133
  }),
130
134
  });
131
135
  export const ConversationShowClientResponseSchema = z.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodleseed/one",
3
- "version": "0.178.0",
3
+ "version": "0.179.0",
4
4
  "private": false,
5
5
  "description": "Noodle CLI by Noodle Seed — author, run, and deploy declarative MCP servers. Embedding the assistant in your own web app is @noodleseed/assistant.",
6
6
  "license": "Apache-2.0",