@company-semantics/contracts 1.11.0 → 1.12.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": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -104,7 +104,8 @@
104
104
  "generate:api": "pnpm generate:api-types && pnpm generate:spec-hash",
105
105
  "generate:api-types": "openapi-typescript openapi/backend.yaml -o src/api/generated.ts",
106
106
  "generate:openapi-routes": "tsx scripts/generate-openapi-routes.ts",
107
- "generate:api-types:check": "openapi-typescript openapi/backend.yaml -o /tmp/cs-api-types-check.ts && diff -q src/api/generated.ts /tmp/cs-api-types-check.ts"
107
+ "generate:api-types:check": "openapi-typescript openapi/backend.yaml -o /tmp/cs-api-types-check.ts && diff -q src/api/generated.ts /tmp/cs-api-types-check.ts",
108
+ "generate:current": "tsx ../company-semantics-ci/scripts/generate-current.ts"
108
109
  },
109
110
  "packageManager": "pnpm@10.25.0",
110
111
  "engines": {
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Run pnpm generate:spec-hash to regenerate.
2
- export const SPEC_HASH = '491b4248b151' as const;
3
- export const SPEC_HASH_FULL = '491b4248b151c9d176a7f2ff3cff06381302277360bfc766e8cd79b2b96bac28' as const;
2
+ export const SPEC_HASH = '3c2104cecec4' as const;
3
+ export const SPEC_HASH_FULL = '3c2104cecec403986da31a11310ce09d3dd773fd095b7416c0cf6f4e30d64f6c' as const;
@@ -3113,6 +3113,7 @@ export interface components {
3113
3113
  orgId: string;
3114
3114
  depth: number;
3115
3115
  label: string | null;
3116
+ labelPlural: string | null;
3116
3117
  icon: ("city" | "buildings" | "users-four" | "users-three" | "users") | null;
3117
3118
  createdAt: string;
3118
3119
  updatedAt: string;
@@ -3124,6 +3125,7 @@ export interface components {
3124
3125
  orgId: string;
3125
3126
  depth: number;
3126
3127
  label: string | null;
3128
+ labelPlural: string | null;
3127
3129
  icon: ("city" | "buildings" | "users-four" | "users-three" | "users") | null;
3128
3130
  createdAt: string;
3129
3131
  updatedAt: string;
@@ -5787,6 +5789,7 @@ export interface operations {
5787
5789
  entries: {
5788
5790
  depth: number;
5789
5791
  label?: string;
5792
+ labelPlural?: string;
5790
5793
  /** @enum {string} */
5791
5794
  icon: "city" | "buildings" | "users-four" | "users-three" | "users";
5792
5795
  }[];
package/src/index.ts CHANGED
@@ -288,6 +288,7 @@ export type {
288
288
  // Company.md domain types (PRD-00173)
289
289
  CompanyMdVisibility,
290
290
  CompanyMdDocLevel,
291
+ CompanyMdDocKind,
291
292
  CompanyMdNodeType,
292
293
  CompanyMdSource,
293
294
  CompanyMdDependency,
@@ -6,15 +6,61 @@
6
6
  * @see PRD-00173 for design rationale
7
7
  */
8
8
 
9
- export type CompanyMdVisibility = 'public' | 'private';
9
+ export type CompanyMdVisibility = "public" | "private";
10
10
 
11
- export type CompanyMdDocLevel = 'root' | 'department' | 'team' | 'context';
11
+ /**
12
+ * @deprecated Since 1.12.0. `CompanyMdDocLevel` is superseded by `CompanyMdDocKind` + `depth`.
13
+ *
14
+ * The categorical naming here conflates structural position with a specific
15
+ * org's label vocabulary. `CompanyMdDocKind` ('root' | 'unit' | 'context')
16
+ * carries the structural discriminator; `depth` carries the position. Labels
17
+ * come from `org_level_config`.
18
+ *
19
+ * This alias remains valid through the next minor. It will be removed in the
20
+ * next major. Backend still emits these values on the wire until PRD-00524
21
+ * lands, after which `kind` + `depth` are canonical.
22
+ */
23
+ export type CompanyMdDocLevel = "root" | "department" | "team" | "context";
12
24
 
13
- export type CompanyMdNodeType = 'company' | 'department' | 'team' | 'cross_team' | 'doc' | 'goal' | 'source' | 'map' | 'context_bank';
25
+ /**
26
+ * Structural discriminator for a Company.md document.
27
+ *
28
+ * - `'root'`: the single org-wide doc (one per org).
29
+ * - `'unit'`: a doc owning an `org_unit` at depth 2..5. The specific depth is
30
+ * carried separately on `depth`. Use `depth` + `org_level_config` for
31
+ * presentation, never the string `'unit'` for user-visible labels.
32
+ * - `'context'`: a context-bank doc attached to a parent doc.
33
+ *
34
+ * Replaces the categorical `CompanyMdDocLevel` ('department' | 'team' ...).
35
+ */
36
+ export type CompanyMdDocKind = "root" | "unit" | "context";
37
+
38
+ /**
39
+ * Semantic node type used by the Company.md tree.
40
+ *
41
+ * Structural members ('company', 'department', 'team', 'cross_team') are
42
+ * @deprecated — use `'unit'` plus `depth` instead. They remain in the union
43
+ * through the next minor for backward compatibility and will be removed in
44
+ * the next major.
45
+ *
46
+ * Non-structural members ('doc', 'goal', 'source', 'map', 'context_bank')
47
+ * are not affected by the deprecation.
48
+ */
49
+ export type CompanyMdNodeType =
50
+ | "company" // @deprecated — use 'unit' with depth=1
51
+ | "department" // @deprecated — use 'unit' with depth=2
52
+ | "team" // @deprecated — use 'unit' with depth=3
53
+ | "cross_team" // @deprecated — use 'unit' with a custom typeTag
54
+ | "unit"
55
+ | "doc"
56
+ | "goal"
57
+ | "source"
58
+ | "map"
59
+ | "context_bank";
14
60
 
15
61
  export interface CompanyMdSource {
16
62
  readonly label: string;
17
- readonly sourceType: 'meeting' | 'document' | 'conversation' | 'manual';
63
+ readonly sourceType: "meeting" | "document" | "conversation" | "manual";
18
64
  readonly referencedAt: string;
19
65
  }
20
66
 
@@ -28,6 +74,15 @@ export interface CompanyMdNodeIdentity {
28
74
  readonly slug: string;
29
75
  readonly title: string;
30
76
  readonly level: CompanyMdDocLevel;
77
+ /**
78
+ * Authoritative structural position in the org tree (matches `nlevel(path)`
79
+ * on the owning org_unit). Null for non-structural nodes (context bank items,
80
+ * docs/goals/sources/maps that are not owned by a unit).
81
+ *
82
+ * Prefer this over `level` for structural reasoning. `level` is retained for
83
+ * backward compatibility and is @deprecated.
84
+ */
85
+ readonly depth: 1 | 2 | 3 | 4 | 5 | null;
31
86
  readonly parentId: string | null;
32
87
  readonly visibility: CompanyMdVisibility;
33
88
  /** Owning org_unit. Null for root docs or when the owning unit has been archived. */
@@ -53,9 +108,15 @@ export interface CompanyMdDocCore extends CompanyMdNodeIdentity {
53
108
 
54
109
  export interface CompanyMdDocCollaborators {
55
110
  readonly owner: { readonly id: string; readonly name: string } | null;
56
- readonly coOwners: ReadonlyArray<{ readonly id: string; readonly name: string }>;
111
+ readonly coOwners: ReadonlyArray<{
112
+ readonly id: string;
113
+ readonly name: string;
114
+ }>;
57
115
  readonly canEdit: boolean;
58
- readonly members: ReadonlyArray<{ readonly id: string; readonly name: string }>;
116
+ readonly members: ReadonlyArray<{
117
+ readonly id: string;
118
+ readonly name: string;
119
+ }>;
59
120
  }
60
121
 
61
122
  export interface CompanyMdDocRelations {
@@ -66,7 +127,9 @@ export interface CompanyMdDocRelations {
66
127
  readonly updatedAt: string;
67
128
  }
68
129
 
69
- export type CompanyMdDoc = CompanyMdDocCore & CompanyMdDocCollaborators & CompanyMdDocRelations;
130
+ export type CompanyMdDoc = CompanyMdDocCore &
131
+ CompanyMdDocCollaborators &
132
+ CompanyMdDocRelations;
70
133
 
71
134
  /**
72
135
  * A context bank item — a company.md doc associated with one or more parent nodes.
package/src/org/index.ts CHANGED
@@ -88,6 +88,7 @@ export { orderTreeNodes } from './tree-ordering';
88
88
  export type {
89
89
  CompanyMdVisibility,
90
90
  CompanyMdDocLevel,
91
+ CompanyMdDocKind,
91
92
  CompanyMdNodeType,
92
93
  CompanyMdSource,
93
94
  CompanyMdDependency,