@company-semantics/contracts 38.1.0 → 39.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@company-semantics/contracts",
3
- "version": "38.1.0",
3
+ "version": "39.1.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -102,8 +102,8 @@
102
102
  "guard:test": "vitest run scripts/ci/__tests__",
103
103
  "release": "npx tsx scripts/release.ts",
104
104
  "prepublishOnly": "echo 'ERROR: Publishing is CI-only via tag push. Use pnpm release instead.' && exit 1",
105
- "test": "vitest run",
106
- "test:run": "vitest run",
105
+ "test": "bash scripts/vitest-run.sh run",
106
+ "test:run": "bash scripts/vitest-run.sh run",
107
107
  "color": "tsx scripts/color.ts",
108
108
  "generate:spec-hash": "tsx scripts/generate-spec-hash.ts",
109
109
  "generate:spec-hash:check": "tsx scripts/generate-spec-hash.ts --check",
@@ -132,10 +132,10 @@
132
132
  "amphtml-validator": "^1.0.38",
133
133
  "culori": "^4.0.2",
134
134
  "husky": "^9.1.7",
135
- "lint-staged": "^17.0.8",
136
- "markdownlint-cli2": "^0.23.0",
135
+ "lint-staged": "^17.1.0",
136
+ "markdownlint-cli2": "^0.23.1",
137
137
  "openapi-typescript": "^7.13.0",
138
- "prettier": "^3.9.5",
138
+ "prettier": "^3.9.6",
139
139
  "tsx": "^4.23.1",
140
140
  "typescript": "^5.8.3",
141
141
  "vitest": "^4.1.10",
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Run pnpm generate:spec-hash to regenerate.
2
- export const SPEC_HASH = '35fcb4a5f2ca' as const;
3
- export const SPEC_HASH_FULL = '35fcb4a5f2ca6f167a3b18024de026f143681623fea3442c2587b2ab64c9d34a' as const;
2
+ export const SPEC_HASH = '4669379f3c9c' as const;
3
+ export const SPEC_HASH_FULL = '4669379f3c9c9733dea3f5bf53f2c1c0d1f0e496fddbf874e8d1f1951e805d7c' as const;
@@ -4546,6 +4546,8 @@ export interface components {
4546
4546
  }[];
4547
4547
  canEdit: boolean;
4548
4548
  canUploadContext?: boolean;
4549
+ canManageAcl?: boolean;
4550
+ canChangeVisibility?: boolean;
4549
4551
  inheritsFromId: string | null;
4550
4552
  inheritsFrom: string | null;
4551
4553
  sources: {
@@ -153,6 +153,26 @@ export const CompanyMdDocResponseSchema = z.object({
153
153
  * doc shapes returned outside the single-doc read.
154
154
  */
155
155
  canUploadContext: z.boolean().optional(),
156
+ /**
157
+ * COLLABORATION capability signal (ADR-BE-434): whether the requesting actor
158
+ * holds `CompanyMd.CanShare` (`ACL_MANAGE` — the editor+ effective band OR the
159
+ * `org.manage_content_sharing` admin custody) on this doc — the SAME binding the
160
+ * `/acl` + sharing routes enforce. The app gates the Share affordance on it so a
161
+ * viewer/commenter never opens a dead Share dialog. Signal only; admittance and
162
+ * enforcement are unchanged. Optional for back-compat with doc shapes returned
163
+ * outside the single-doc read.
164
+ */
165
+ canManageAcl: z.boolean().optional(),
166
+ /**
167
+ * GOVERNANCE capability signal (ADR-BE-435): whether the requesting actor holds
168
+ * `CompanyMd.CanChangeVisibility` (owner OR the `org.manage_content_sharing`
169
+ * admin custody) on this doc — the SAME binding the visibility/sharing-policy
170
+ * write enforces. The app renders the Share dialog's general-access +
171
+ * discoverability controls read-only when false, so a non-governing editor
172
+ * cannot change a governance control and 403 on save. Signal only; admittance
173
+ * and enforcement are unchanged. Optional for back-compat.
174
+ */
175
+ canChangeVisibility: z.boolean().optional(),
156
176
  // Stable id of the inherited-from doc — the resolution key (mirrors the
157
177
  // resolved parentId). `inheritsFrom` is presentation only (ADR-BE-315).
158
178
  inheritsFromId: z.string().nullable(),
@@ -123,7 +123,6 @@ export const AclListResponseSchema = z.object({
123
123
  * disables the control rather than rewriting the value.
124
124
  */
125
125
  discoverability: EntityDiscoverabilitySchema.optional(),
126
- editors_can_share: z.boolean(),
127
126
  grants: z.array(AclGrantResponseSchema),
128
127
  });
129
128
  export type AclListResponse = z.infer<typeof AclListResponseSchema>;