Skip to content

Commit 51d3ae7

Browse files
committed
docs(spec): regenerate reference docs after dead-prop removal (#2377)
Regenerated content/docs/references/ from the updated spec schema (pnpm gen:schema && gen:docs) — field/object/action/agent/dataset reference pages drop the removed properties; data/search-engine.mdx and api/object.mdx removed as spec no longer defines them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011XchBKhKdjbhQZymt9Gn9B
1 parent 5a3363b commit 51d3ae7

10 files changed

Lines changed: 27 additions & 174 deletions

File tree

content/docs/references/ai/agent.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ const result = AIKnowledge.parse(data);
8585
| **permissions** | `string[]` | optional | Required permission-set capabilities |
8686
| **tenantId** | `string` | optional | Tenant/Organization ID |
8787
| **visibility** | `Enum<'global' \| 'organization' \| 'private'>` || [EXPERIMENTAL — NOT ENFORCED, #1901] Intended listing scope. No runtime consumer yet; use access/permissions for real gating. |
88-
| **planning** | `{ strategy: Enum<'react' \| 'plan_and_execute' \| 'reflexion' \| 'tree_of_thought'>; maxIterations: integer; allowReplan: boolean }` | optional | Autonomous reasoning and planning configuration |
88+
| **planning** | `{ maxIterations: integer }` | optional | Autonomous reasoning and planning configuration |
8989
| **memory** | `{ longTerm?: object; reflectionInterval?: integer }` | optional | Agent memory management |
9090
| **guardrails** | `{ maxTokensPerInvocation?: integer; maxExecutionTimeSec?: integer; blockedTopics?: string[] }` | optional | Safety guardrails for the agent |
9191
| **structuredOutput** | `{ format: Enum<'json_object' \| 'json_schema' \| 'regex' \| 'grammar' \| 'xml'>; schema?: Record<string, any>; strict: boolean; retryOnValidationFailure: boolean; … }` | optional | Structured output format and validation configuration |

content/docs/references/api/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"metadata",
2525
"metadata-plugin",
2626
"notification",
27-
"object",
2827
"odata",
2928
"package-api",
3029
"package-registry",

content/docs/references/api/object.mdx

Lines changed: 0 additions & 42 deletions
This file was deleted.

content/docs/references/api/versioning.mdx

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ Architecture Alignment:
3030
## TypeScript Usage
3131

3232
```typescript
33-
import { VersionDefinition, VersionNegotiationResponse, VersionStatus, VersioningStrategy } from '@objectstack/spec/api';
34-
import type { VersionDefinition, VersionNegotiationResponse, VersionStatus, VersioningStrategy } from '@objectstack/spec/api';
33+
import { VersionDefinition, VersionNegotiationResponse, VersionStatus, VersioningConfig, VersioningStrategy } from '@objectstack/spec/api';
34+
import type { VersionDefinition, VersionNegotiationResponse, VersionStatus, VersioningConfig, VersioningStrategy } from '@objectstack/spec/api';
3535

3636
// Validate data
3737
const result = VersionDefinition.parse(data);
@@ -84,6 +84,25 @@ const result = VersionDefinition.parse(data);
8484
* `retired`
8585

8686

87+
---
88+
89+
## VersioningConfig
90+
91+
### Properties
92+
93+
| Property | Type | Required | Description |
94+
| :--- | :--- | :--- | :--- |
95+
| **strategy** | `Enum<'urlPath' \| 'header' \| 'queryParam' \| 'dateBased'>` || How the API version is specified by clients |
96+
| **current** | `string` || The current/recommended API version identifier |
97+
| **default** | `string` || Fallback version when client does not specify one |
98+
| **versions** | `{ version: string; status: Enum<'preview' \| 'current' \| 'supported' \| 'deprecated' \| 'retired'>; releasedAt: string; deprecatedAt?: string; … }[]` || All available API versions with lifecycle metadata |
99+
| **headerName** | `string` || HTTP header name for version negotiation (header/dateBased strategies) |
100+
| **queryParamName** | `string` || Query parameter name for version specification (queryParam strategy) |
101+
| **urlPrefix** | `string` || URL prefix before version segment (urlPath strategy) |
102+
| **deprecation** | `{ warnHeader: boolean; sunsetHeader: boolean; linkHeader: boolean; rejectRetired: boolean; … }` | optional | Deprecation lifecycle behavior |
103+
| **includeInDiscovery** | `boolean` || Include version information in the API discovery endpoint |
104+
105+
87106
---
88107

89108
## VersioningStrategy

content/docs/references/data/field.mdx

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Field Type Enum
1414
## TypeScript Usage
1515

1616
```typescript
17-
import { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, FileAttachmentConfig, LocationCoordinates, SelectOption, VectorConfig } from '@objectstack/spec/data';
18-
import type { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, FileAttachmentConfig, LocationCoordinates, SelectOption, VectorConfig } from '@objectstack/spec/data';
17+
import { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, LocationCoordinates, SelectOption } from '@objectstack/spec/data';
18+
import type { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, LocationCoordinates, SelectOption } from '@objectstack/spec/data';
1919

2020
// Validate data
2121
const result = Address.parse(data);
@@ -139,10 +139,7 @@ const result = Address.parse(data);
139139
| **step** | `number` | optional | Step increment for slider (default: 1) |
140140
| **currencyConfig** | `{ precision?: integer; currencyMode?: Enum<'dynamic' \| 'fixed'>; defaultCurrency?: string }` | optional | Configuration for currency field type |
141141
| **dimensions** | `integer` | optional | Vector dimensionality (e.g., 1536 for OpenAI embeddings) |
142-
| **vectorConfig** | `{ dimensions: integer; distanceMetric?: Enum<'cosine' \| 'euclidean' \| 'dotProduct' \| 'manhattan'>; normalized?: boolean; indexed?: boolean; … }` | optional | Configuration for vector field type (AI/ML embeddings) |
143-
| **fileAttachmentConfig** | `{ minSize?: number; maxSize?: number; allowedTypes?: string[]; blockedTypes?: string[]; … }` | optional | Configuration for file and attachment field types |
144142
| **trackHistory** | `boolean` | optional | Render this field's value changes as human-readable entries on the record activity timeline (ADR-0052 §5b). Opt-in per field. |
145-
| **dependencies** | `string[]` | optional | Array of field names that this field depends on (for formulas, visibility rules, etc.) |
146143
| **group** | `string` | optional | Field group name for organizing fields in forms and layouts (e.g., "contact_info", "billing", "system") |
147144
| **visibleWhen** | `string \| { dialect: Enum<'cel' \| 'js' \| 'cron' \| 'template'>; source?: string; ast?: any; meta?: object }` | optional | Predicate (CEL) — field is shown only when TRUE (else hidden). e.g. P`record.type == 'invoice'` |
148145
| **readonlyWhen** | `string \| { dialect: Enum<'cel' \| 'js' \| 'cron' \| 'template'>; source?: string; ast?: any; meta?: object }` | optional | Predicate (CEL) — field is read-only when TRUE. e.g. P`record.status == 'paid'` |
@@ -217,40 +214,6 @@ const result = Address.parse(data);
217214
* `vector`
218215

219216

220-
---
221-
222-
## FileAttachmentConfig
223-
224-
### Properties
225-
226-
| Property | Type | Required | Description |
227-
| :--- | :--- | :--- | :--- |
228-
| **minSize** | `number` | optional | Minimum file size in bytes |
229-
| **maxSize** | `number` | optional | Maximum file size in bytes (e.g., 10485760 = 10MB) |
230-
| **allowedTypes** | `string[]` | optional | Allowed file extensions (e.g., [".pdf", ".docx", ".jpg"]) |
231-
| **blockedTypes** | `string[]` | optional | Blocked file extensions (e.g., [".exe", ".bat", ".sh"]) |
232-
| **allowedMimeTypes** | `string[]` | optional | Allowed MIME types (e.g., ["image/jpeg", "application/pdf"]) |
233-
| **blockedMimeTypes** | `string[]` | optional | Blocked MIME types |
234-
| **virusScan** | `boolean` || Enable virus scanning for uploaded files |
235-
| **virusScanProvider** | `Enum<'clamav' \| 'virustotal' \| 'metadefender' \| 'custom'>` | optional | Virus scanning service provider |
236-
| **virusScanOnUpload** | `boolean` || Scan files immediately on upload |
237-
| **quarantineOnThreat** | `boolean` || Quarantine files if threat detected |
238-
| **storageProvider** | `string` | optional | Object storage provider name (references ObjectStorageConfig) |
239-
| **storageBucket** | `string` | optional | Target bucket name |
240-
| **storagePrefix** | `string` | optional | Storage path prefix (e.g., "uploads/documents/") |
241-
| **imageValidation** | `{ minWidth?: number; maxWidth?: number; minHeight?: number; maxHeight?: number; … }` | optional | Image-specific validation rules |
242-
| **allowMultiple** | `boolean` || Allow multiple file uploads (overrides field.multiple) |
243-
| **allowReplace** | `boolean` || Allow replacing existing files |
244-
| **allowDelete** | `boolean` || Allow deleting uploaded files |
245-
| **requireUpload** | `boolean` || Require at least one file when field is required |
246-
| **extractMetadata** | `boolean` || Extract file metadata (name, size, type, etc.) |
247-
| **extractText** | `boolean` || Extract text content from documents (OCR/parsing) |
248-
| **versioningEnabled** | `boolean` || Keep previous versions of replaced files |
249-
| **maxVersions** | `number` | optional | Maximum number of versions to retain |
250-
| **publicRead** | `boolean` || Allow public read access to uploaded files |
251-
| **presignedUrlExpiry** | `number` || Presigned URL expiration in seconds (default: 1 hour) |
252-
253-
254217
---
255218

256219
## LocationCoordinates
@@ -282,18 +245,3 @@ const result = Address.parse(data);
282245

283246
---
284247

285-
## VectorConfig
286-
287-
### Properties
288-
289-
| Property | Type | Required | Description |
290-
| :--- | :--- | :--- | :--- |
291-
| **dimensions** | `integer` || Vector dimensionality (e.g., 1536 for OpenAI embeddings) |
292-
| **distanceMetric** | `Enum<'cosine' \| 'euclidean' \| 'dotProduct' \| 'manhattan'>` || Distance/similarity metric for vector search |
293-
| **normalized** | `boolean` || Whether vectors are normalized (unit length) |
294-
| **indexed** | `boolean` || Whether to create a vector index for fast similarity search |
295-
| **indexType** | `Enum<'hnsw' \| 'ivfflat' \| 'flat'>` | optional | Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets) |
296-
297-
298-
---
299-

content/docs/references/data/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"notification",
2121
"object",
2222
"query",
23-
"search-engine",
2423
"seed",
2524
"seed-loader",
2625
"subscription",

content/docs/references/data/object.mdx

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ API Operations Enum
1414
## TypeScript Usage
1515

1616
```typescript
17-
import { ApiMethod, Index, Lifecycle, LifecycleClass, Object, ObjectAccessConfig, ObjectCapabilities, ObjectExtension, ObjectExternalBinding, ObjectFieldGroup, ObjectOwnershipEnum, ObjectRequiredPermissions, PerOperationRequiredPermissions, RowCrudActionOverride, SoftDeleteConfig, TenancyConfig, VersioningConfig } from '@objectstack/spec/data';
18-
import type { ApiMethod, Index, Lifecycle, LifecycleClass, Object, ObjectAccessConfig, ObjectCapabilities, ObjectExtension, ObjectExternalBinding, ObjectFieldGroup, ObjectOwnershipEnum, ObjectRequiredPermissions, PerOperationRequiredPermissions, RowCrudActionOverride, SoftDeleteConfig, TenancyConfig, VersioningConfig } from '@objectstack/spec/data';
17+
import { ApiMethod, Index, Lifecycle, LifecycleClass, Object, ObjectAccessConfig, ObjectCapabilities, ObjectExtension, ObjectExternalBinding, ObjectFieldGroup, ObjectOwnershipEnum, ObjectRequiredPermissions, PerOperationRequiredPermissions, RowCrudActionOverride, TenancyConfig } from '@objectstack/spec/data';
18+
import type { ApiMethod, Index, Lifecycle, LifecycleClass, Object, ObjectAccessConfig, ObjectCapabilities, ObjectExtension, ObjectExternalBinding, ObjectFieldGroup, ObjectOwnershipEnum, ObjectRequiredPermissions, PerOperationRequiredPermissions, RowCrudActionOverride, TenancyConfig } from '@objectstack/spec/data';
1919

2020
// Validate data
2121
const result = ApiMethod.parse(data);
@@ -115,25 +115,20 @@ const result = ApiMethod.parse(data);
115115
| **tenancy** | `{ enabled: boolean; tenantField?: string }` | optional | Multi-tenancy configuration for SaaS applications |
116116
| **access** | `{ default?: Enum<'public' \| 'private'> }` | optional | [ADR-0066 D2] Object exposure posture (public-by-default vs private secure-by-default). |
117117
| **requiredPermissions** | `string[] \| { read?: string[]; create?: string[]; update?: string[]; delete?: string[] }` | optional | [ADR-0066 D3/⑤] Capabilities required to access this object (AND-gate) — `string[]` gates all CRUD, or a `{read,create,update,delete}` map gates per operation. |
118-
| **softDelete** | `{ enabled: boolean; field?: string; cascadeDelete?: boolean }` | optional | Soft delete (trash/recycle bin) configuration |
119-
| **versioning** | `{ enabled: boolean; strategy: Enum<'snapshot' \| 'delta' \| 'event-sourcing'>; retentionDays?: number; versionField?: string }` | optional | Record versioning and history tracking configuration |
120118
| **lifecycle** | `{ class: Enum<'record' \| 'audit' \| 'telemetry' \| 'transient' \| 'event'>; retention?: object; ttl?: object; storage?: object; … }` | optional | Data lifecycle contract (ADR-0057): class + retention/ttl/rotation/archive policies enforced by the platform LifecycleService. |
121119
| **validations** | `any[]` | optional | Object-level validation rules |
122120
| **activityMilestones** | `{ field: string; value: string; summary: string; type?: string }[]` | optional | Declarative semantic activity milestones — emit a templated timeline row when a field transitions into a value, no hook code (ADR-0052 §5b.2). |
123-
| **nameField** | `string` | optional | [ADR-0079] Canonical primary title field — the stored field used as the record display name (e.g. "name", "title"). Pairs with recordName. |
121+
| **nameField** | `string` | optional | [ADR-0079] Canonical primary title field — the stored field used as the record display name (e.g. "name", "title"). |
124122
| **displayNameField** | `string` | optional | [DEPRECATED → nameField] Field to use as the record display name (e.g., "name", "title"). Accepted as an alias for nameField. |
125-
| **recordName** | `{ type: Enum<'text' \| 'autonumber'>; displayFormat?: string; startNumber?: integer }` | optional | Record name generation configuration (Salesforce pattern) |
126123
| **titleFormat** | `string \| { dialect: Enum<'cel' \| 'js' \| 'cron' \| 'template'>; source?: string; ast?: any; meta?: object }` | optional | [DEPRECATED → nameField (ADR-0079)] Render-only title template; the server cannot return or query it, and an explicit nameField now takes precedence. Migrate a single-field title to nameField, a composite to a formula field designated as nameField. |
127124
| **highlightFields** | `string[]` | optional | [ADR-0085] Ordered most-important fields; first entry wins where only one fits. Drives default columns, cards, previews, detail highlight strip. Renamed from compactLayout. |
128125
| **stageField** | `string \| 'false'` | optional | [ADR-0085] Lifecycle stage field (linear/ordered), or false to declare the status field non-linear and suppress stage heuristics. Absent = heuristic detection allowed. |
129126
| **listViews** | `Record<string, { name?: string; label?: string; type?: Enum<'grid' \| 'kanban' \| 'gallery' \| 'calendar' \| 'timeline' \| 'gantt' \| 'map' \| 'chart' \| 'tree'>; data?: { provider: 'object'; object: string } \| { provider: 'api'; read?: object; write?: object } \| { provider: 'value'; items: any[] } \| { provider: 'schema'; schemaId: string; schema?: Record<string, any> }; … }>` | optional | Built-in named list views (segmented tabs) shipped with the object schema — "views" mode, dropdown userFilters allowed, no page-only tabs (ADR-0047) |
130127
| **searchableFields** | `string[]` | optional | Fields the `$search` query matches against (ADR-0061). Canonical default for the record picker, list quick-search and global search; views may narrow it. When unset, search auto-defaults to the name/title field plus short-text fields. |
131-
| **search** | `{ fields: string[]; displayFields?: string[]; filters?: string[] }` | optional | Search engine configuration |
132128
| **enable** | `{ trackHistory?: boolean; searchable?: boolean; apiEnabled?: boolean; apiMethods?: Enum<'get' \| 'list' \| 'create' \| 'update' \| 'delete' \| 'upsert' \| 'bulk' \| 'aggregate' \| 'history' \| 'search' \| 'restore' \| 'purge' \| 'import' \| 'export'>[]; … }` | optional | Enabled system features modules |
133129
| **sharingModel** | `Enum<'private' \| 'public_read' \| 'public_read_write' \| 'controlled_by_parent'>` | optional | Org-Wide Default record visibility (OWD) for INTERNAL users. Canonical four only (legacy aliases removed, ADR-0090 D4): private (owner-only) \| public_read (everyone reads, owner writes) \| public_read_write (everyone reads+writes) \| controlled_by_parent (derived from the master record). A CUSTOM object that omits this resolves to private at runtime (ADR-0090 D1). |
134130
| **externalSharingModel** | `Enum<'private' \| 'public_read' \| 'public_read_write' \| 'controlled_by_parent'>` | optional | [ADR-0090 D11] OWD for external (portal/partner) principals. Defaults to private; must be &lt;= sharingModel in openness. |
135131
| **publicSharing** | `{ enabled?: boolean; allowedAudiences?: Enum<'public' \| 'link_only' \| 'signed_in' \| 'email'>[]; allowedPermissions?: Enum<'view' \| 'comment' \| 'edit'>[]; maxExpiryDays?: integer; … }` | optional | Public share-link policy (Notion/Figma-style link sharing) |
136-
| **keyPrefix** | `string` | optional | Short prefix for record IDs (e.g., "001" for Account) |
137132
| **actions** | `{ name: string; label: string; objectName?: string; icon?: string; … }[]` | optional | Actions associated with this object (auto-populated from top-level actions via objectName) |
138133
| **protection** | `{ lock: Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>; reason: string; docsUrl?: string }` | optional | Package author protection block — lock policy for this object. |
139134
| **_lock** | `Enum<'none' \| 'no-overlay' \| 'no-delete' \| 'full'>` | optional | Item-level lock — controls overlay & delete (ADR-0010). |
@@ -297,19 +292,6 @@ Boolean-or-predicates override for a built-in row CRUD affordance.
297292
| **disabledWhen** | `string \| { dialect: Enum<'cel' \| 'js' \| 'cron' \| 'template'>; source?: string; ast?: any; meta?: object }` | optional | Per-record CEL predicate; true → render the row button disabled for that record. Fail-soft. |
298293

299294

300-
---
301-
302-
## SoftDeleteConfig
303-
304-
### Properties
305-
306-
| Property | Type | Required | Description |
307-
| :--- | :--- | :--- | :--- |
308-
| **enabled** | `boolean` || Enable soft delete (trash/recycle bin) |
309-
| **field** | `string` || Field name for soft delete timestamp |
310-
| **cascadeDelete** | `boolean` || Cascade soft delete to related records |
311-
312-
313295
---
314296

315297
## TenancyConfig
@@ -324,17 +306,3 @@ Boolean-or-predicates override for a built-in row CRUD affordance.
324306

325307
---
326308

327-
## VersioningConfig
328-
329-
### Properties
330-
331-
| Property | Type | Required | Description |
332-
| :--- | :--- | :--- | :--- |
333-
| **enabled** | `boolean` || Enable record versioning |
334-
| **strategy** | `Enum<'snapshot' \| 'delta' \| 'event-sourcing'>` || Versioning strategy: snapshot (full copy), delta (changes only), event-sourcing (event log) |
335-
| **retentionDays** | `number` | optional | Number of days to retain old versions (undefined = infinite) |
336-
| **versionField** | `string` || Field name for version number/timestamp |
337-
338-
339-
---
340-

0 commit comments

Comments
 (0)