@c4a/core 0.4.12 → 0.4.15-alpha.2

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 (3) hide show
  1. package/README.md +40 -0
  2. package/index.js +576 -73
  3. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # @c4a/core
2
+
3
+ `@c4a/core` is the shared foundation package for C4A. It provides reusable types, schemas, error definitions, and utility helpers used across multiple packages.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ bun add @c4a/core
9
+ # or
10
+ npm install @c4a/core
11
+ ```
12
+
13
+ ## What It Includes
14
+
15
+ - **Domain types**: common TypeScript types for entities, relations, contents, and sources
16
+ - **Schema definitions**: Zod-based input/output validation models
17
+ - **Error system**: unified error codes and `C4AError`
18
+ - **Ref utilities**: helpers for parsing and building `ref:*` pointers
19
+ - **Shared constants and helpers**: reusable utilities for API, CLI, Daemon, Web, and other packages
20
+
21
+ ## Example
22
+
23
+ ```ts
24
+ import { C4AError, ErrorCode, parseRef } from "@c4a/core";
25
+
26
+ const parsed = parseRef("ref:entity:ent_123");
27
+ if (!parsed) {
28
+ throw new C4AError(ErrorCode.VALIDATION_FAILED, "Invalid ref");
29
+ }
30
+ ```
31
+
32
+ ## Common Use Cases
33
+
34
+ - Reuse a single contract across a monorepo to avoid type drift
35
+ - Validate external inputs with consistent schemas and error handling
36
+ - Parse and build cross-resource reference pointers
37
+
38
+ ## License
39
+
40
+ MIT
package/index.js CHANGED
@@ -7000,6 +7000,7 @@ var RelationType;
7000
7000
  RelationType2["Triggers"] = "TRIGGERS";
7001
7001
  RelationType2["References"] = "REFERENCES";
7002
7002
  RelationType2["Corresponds"] = "CORRESPONDS";
7003
+ RelationType2["Mentions"] = "MENTIONS";
7003
7004
  })(RelationType ||= {});
7004
7005
  var AtomField;
7005
7006
  ((AtomField2) => {
@@ -7017,6 +7018,7 @@ var AtomField;
7017
7018
  AtomField2["Constraints"] = "constraints";
7018
7019
  AtomField2["Comparisons"] = "comparisons";
7019
7020
  AtomField2["Boundaries"] = "boundaries";
7021
+ AtomField2["Claims"] = "claims";
7020
7022
  })(AtomField ||= {});
7021
7023
  var Kind;
7022
7024
  ((Kind2) => {
@@ -7029,12 +7031,124 @@ var Perspective;
7029
7031
  Perspective2["Business"] = "business";
7030
7032
  Perspective2["Technical"] = "technical";
7031
7033
  })(Perspective ||= {});
7034
+ // src/types/edgeSyncRules.ts
7035
+ var EDGE_SYNC_RULES = [
7036
+ {
7037
+ field: "container_id",
7038
+ sourceEntityType: "component" /* Component */,
7039
+ edgeType: "CONTAINS" /* Contains */,
7040
+ direction: "reverse",
7041
+ writeGraph: true
7042
+ },
7043
+ {
7044
+ field: "system_id",
7045
+ sourceEntityType: "container" /* Container */,
7046
+ edgeType: "CONTAINS" /* Contains */,
7047
+ direction: "reverse",
7048
+ writeGraph: true
7049
+ },
7050
+ {
7051
+ field: "ref_sor",
7052
+ sourceEntityType: "sor" /* SoR */,
7053
+ edgeType: "REFERENCES" /* References */,
7054
+ direction: "forward",
7055
+ writeGraph: true
7056
+ },
7057
+ {
7058
+ field: "product_refs",
7059
+ sourceEntityType: "epic" /* Epic */,
7060
+ edgeType: "REFERENCES" /* References */,
7061
+ direction: "forward",
7062
+ writeGraph: true
7063
+ },
7064
+ {
7065
+ field: "atoms.entities.ref",
7066
+ sourceEntityType: "any",
7067
+ edgeType: "MENTIONS" /* Mentions */,
7068
+ direction: "forward",
7069
+ writeGraph: true
7070
+ },
7071
+ {
7072
+ field: "atoms.behaviors.ref",
7073
+ sourceEntityType: "any",
7074
+ edgeType: "MENTIONS" /* Mentions */,
7075
+ direction: "forward",
7076
+ writeGraph: true
7077
+ },
7078
+ {
7079
+ field: "product_id",
7080
+ sourceEntityType: "sor" /* SoR */,
7081
+ edgeType: null,
7082
+ direction: "forward",
7083
+ writeGraph: false
7084
+ },
7085
+ {
7086
+ field: "process_id",
7087
+ sourceEntityType: "sor" /* SoR */,
7088
+ edgeType: "PRODUCES" /* Produces */,
7089
+ direction: "reverse",
7090
+ writeGraph: true
7091
+ }
7092
+ ];
7093
+ // src/types/refPointer.ts
7094
+ var REF_POINTER_PATTERN = /^ref:(entity|relation|content):(.+)$/;
7095
+ function parseRef(pointer) {
7096
+ const match = REF_POINTER_PATTERN.exec(pointer);
7097
+ if (!match) {
7098
+ return null;
7099
+ }
7100
+ const [, type, id] = match;
7101
+ if (!id) {
7102
+ return null;
7103
+ }
7104
+ return { type, id };
7105
+ }
7106
+ function buildRef(type, id) {
7107
+ return `ref:${type}:${id}`;
7108
+ }
7109
+ function isRefPointer(value) {
7110
+ return typeof value === "string" && parseRef(value) !== null;
7111
+ }
7112
+ function extractAllRefs(data) {
7113
+ const results = [];
7114
+ const visit = (value, path) => {
7115
+ if (typeof value === "string") {
7116
+ if (isRefPointer(value)) {
7117
+ results.push({ pointer: value, fieldPath: path });
7118
+ }
7119
+ return;
7120
+ }
7121
+ if (Array.isArray(value)) {
7122
+ value.forEach((item, index) => {
7123
+ const nextPath = path ? `${path}[${index}]` : `[${index}]`;
7124
+ visit(item, nextPath);
7125
+ });
7126
+ return;
7127
+ }
7128
+ if (value && typeof value === "object") {
7129
+ for (const [key, entry] of Object.entries(value)) {
7130
+ const nextPath = path ? `${path}.${key}` : key;
7131
+ visit(entry, nextPath);
7132
+ }
7133
+ }
7134
+ };
7135
+ visit(data, "");
7136
+ return results;
7137
+ }
7032
7138
  // src/types/serverConfig.ts
7033
7139
  var DEFAULT_SERVER_CONFIG = {
7034
7140
  server: {
7035
7141
  port: 5100,
7036
7142
  host: "::"
7037
7143
  },
7144
+ git_hosts: [],
7145
+ daemon_scheduler: {
7146
+ enabled: true,
7147
+ host: "localhost",
7148
+ port: 5110,
7149
+ workspace: "./data/daemon-workspace",
7150
+ max_daemons: 20
7151
+ },
7038
7152
  doc_db: {
7039
7153
  provider: "sqlite",
7040
7154
  sqlite: {
@@ -7057,6 +7171,9 @@ var DEFAULT_SERVER_CONFIG = {
7057
7171
  username: "root",
7058
7172
  password: "nebula",
7059
7173
  space: "c4a"
7174
+ },
7175
+ duckdb: {
7176
+ path: "./data/c4a-graph.duckdb"
7060
7177
  }
7061
7178
  },
7062
7179
  vector_db: {
@@ -7078,7 +7195,8 @@ var DEFAULT_SERVER_CONFIG = {
7078
7195
  openai: {
7079
7196
  api_key: "",
7080
7197
  base_url: "",
7081
- default_model: "gpt-5.3-codex"
7198
+ default_model: "gpt-5.3-codex",
7199
+ wire_api: "chat"
7082
7200
  },
7083
7201
  anthropic: {
7084
7202
  api_key: "",
@@ -10753,23 +10871,23 @@ class ZodEffects extends ZodType {
10753
10871
  }
10754
10872
  if (effect.type === "transform") {
10755
10873
  if (ctx.common.async === false) {
10756
- const base2 = this._def.schema._parseSync({
10874
+ const base = this._def.schema._parseSync({
10757
10875
  data: ctx.data,
10758
10876
  path: ctx.path,
10759
10877
  parent: ctx
10760
10878
  });
10761
- if (!isValid(base2))
10879
+ if (!isValid(base))
10762
10880
  return INVALID;
10763
- const result = effect.transform(base2.value, checkCtx);
10881
+ const result = effect.transform(base.value, checkCtx);
10764
10882
  if (result instanceof Promise) {
10765
10883
  throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);
10766
10884
  }
10767
10885
  return { status: status.value, value: result };
10768
10886
  } else {
10769
- return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base2) => {
10770
- if (!isValid(base2))
10887
+ return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {
10888
+ if (!isValid(base))
10771
10889
  return INVALID;
10772
- return Promise.resolve(effect.transform(base2.value, checkCtx)).then((result) => ({
10890
+ return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({
10773
10891
  status: status.value,
10774
10892
  value: result
10775
10893
  }));
@@ -11158,7 +11276,7 @@ var atomFieldSchema = exports_external.enum(Object.values(AtomField));
11158
11276
  var kindSchema = exports_external.enum(Object.values(Kind));
11159
11277
  var scopeSchema = exports_external.literal("project");
11160
11278
  var perspectiveSchema = exports_external.enum(Object.values(Perspective));
11161
- var confidenceSchema = exports_external.object({
11279
+ var extractionConfidenceSchema = exports_external.object({
11162
11280
  structural: exports_external.number().min(0).max(1),
11163
11281
  semantic: exports_external.number().min(0).max(1)
11164
11282
  });
@@ -11166,19 +11284,36 @@ var metadataSchema = exports_external.object({
11166
11284
  created_at: exports_external.string().datetime(),
11167
11285
  updated_at: exports_external.string().datetime(),
11168
11286
  version_tag: exports_external.string().optional(),
11169
- confidence: confidenceSchema.optional()
11287
+ extraction_confidence: extractionConfidenceSchema.optional(),
11288
+ confidence: exports_external.number().min(0).max(1).optional(),
11289
+ aliases: exports_external.array(exports_external.string()).optional(),
11290
+ rank: exports_external.number().optional(),
11291
+ community_id: exports_external.string().optional(),
11292
+ community_level: exports_external.number().optional()
11293
+ });
11294
+ var entityRefPointerSchema = exports_external.string().regex(/^ref:entity:.+$/, "must be a ref pointer in format ref:entity:<id>");
11295
+ var sourceRefSpanSchema = exports_external.object({
11296
+ start: exports_external.number().int().min(1),
11297
+ end: exports_external.number().int().min(1)
11170
11298
  });
11299
+ var sourceRefSchema = exports_external.object({
11300
+ ref: exports_external.string(),
11301
+ span: sourceRefSpanSchema.optional()
11302
+ });
11303
+ var sourceRefsSchema = exports_external.array(sourceRefSchema).optional();
11304
+
11171
11305
  // src/schemas/atomsSchema.ts
11172
11306
  var confidenceAtomSchema = exports_external.number().min(0).max(1).optional();
11173
11307
  var entityAtomSchema = exports_external.object({
11174
11308
  name: exports_external.string(),
11175
- kind: kindSchema.optional(),
11309
+ kind: kindSchema.optional().catch(undefined),
11310
+ ref: exports_external.string().optional(),
11176
11311
  confidence: confidenceAtomSchema
11177
11312
  });
11178
11313
  var relationAtomSchema = exports_external.object({
11179
11314
  from: exports_external.string(),
11180
11315
  to: exports_external.string(),
11181
- type: relationTypeSchema,
11316
+ type: exports_external.string(),
11182
11317
  description: exports_external.string().optional(),
11183
11318
  confidence: confidenceAtomSchema
11184
11319
  });
@@ -11186,6 +11321,8 @@ var behaviorAtomSchema = exports_external.object({
11186
11321
  name: exports_external.string(),
11187
11322
  signature: exports_external.string().optional(),
11188
11323
  description: exports_external.string().optional(),
11324
+ performed_by: exports_external.array(exports_external.string()).optional(),
11325
+ ref: exports_external.string().optional(),
11189
11326
  confidence: confidenceAtomSchema
11190
11327
  });
11191
11328
  var attributeAtomSchema = exports_external.object({
@@ -11226,6 +11363,7 @@ var decisionPhaseSchema = exports_external.object({
11226
11363
  rationale: exports_external.string().optional()
11227
11364
  });
11228
11365
  var decisionAtomSchema = exports_external.object({
11366
+ name: exports_external.string().optional(),
11229
11367
  description: exports_external.string(),
11230
11368
  rationale: exports_external.string(),
11231
11369
  alternatives: exports_external.array(exports_external.string()).optional(),
@@ -11248,13 +11386,13 @@ var metricAtomSchema = exports_external.object({
11248
11386
  });
11249
11387
  var roleAtomSchema = exports_external.object({
11250
11388
  name: exports_external.string(),
11251
- kind: exports_external.enum(["internal", "external"]),
11389
+ kind: exports_external.enum(["human", "team", "persona"]).catch("human"),
11252
11390
  performs: exports_external.array(exports_external.string()).optional(),
11253
- confidence: confidenceAtomSchema
11391
+ description: exports_external.string().optional()
11254
11392
  });
11255
11393
  var constraintAtomSchema = exports_external.object({
11256
11394
  description: exports_external.string(),
11257
- severity: exports_external.enum(["must", "should", "may"]),
11395
+ severity: exports_external.enum(["must", "should", "may"]).catch("must"),
11258
11396
  metric_ref: exports_external.string().optional(),
11259
11397
  confidence: confidenceAtomSchema
11260
11398
  });
@@ -11281,6 +11419,16 @@ var comparisonAtomSchema = exports_external.object({
11281
11419
  decision_ref: exports_external.string().optional(),
11282
11420
  confidence: confidenceAtomSchema
11283
11421
  });
11422
+ var claimAtomSchema = exports_external.object({
11423
+ claim_type: exports_external.string(),
11424
+ description: exports_external.string(),
11425
+ status: exports_external.enum(["active", "deprecated", "proposed"]),
11426
+ valid_from: exports_external.string(),
11427
+ valid_until: exports_external.string().optional(),
11428
+ session_ref: exports_external.string().optional(),
11429
+ changed_by: exports_external.string(),
11430
+ confidence: confidenceAtomSchema
11431
+ });
11284
11432
  var dataAtomsSchema = exports_external.object({
11285
11433
  entities: exports_external.array(entityAtomSchema).optional(),
11286
11434
  relations: exports_external.array(relationAtomSchema).optional(),
@@ -11295,31 +11443,115 @@ var dataAtomsSchema = exports_external.object({
11295
11443
  roles: exports_external.array(roleAtomSchema).optional(),
11296
11444
  constraints: exports_external.array(constraintAtomSchema).optional(),
11297
11445
  comparisons: exports_external.array(comparisonAtomSchema).optional(),
11298
- boundaries: exports_external.array(boundaryAtomSchema).optional()
11299
- }).superRefine((atoms2, ctx) => {
11300
- if (!atoms2.transitions || atoms2.transitions.length === 0) {
11301
- return;
11302
- }
11446
+ boundaries: exports_external.array(boundaryAtomSchema).optional(),
11447
+ claims: exports_external.array(claimAtomSchema).optional()
11448
+ }).superRefine((atoms, ctx) => {
11303
11449
  const stateValues = new Set;
11304
- for (const state of atoms2.states ?? []) {
11450
+ const stateNames = new Set;
11451
+ for (const state of atoms.states ?? []) {
11452
+ stateNames.add(state.name);
11305
11453
  for (const value of state.values) {
11306
11454
  stateValues.add(value);
11307
11455
  }
11308
11456
  }
11309
- for (const transition of atoms2.transitions) {
11310
- if (!stateValues.has(transition.from)) {
11311
- ctx.addIssue({
11312
- code: exports_external.ZodIssueCode.custom,
11313
- path: ["transitions"],
11314
- message: `transition.from references unknown state: ${transition.from}`
11315
- });
11457
+ const behaviorNames = new Set;
11458
+ for (const behavior of atoms.behaviors ?? []) {
11459
+ behaviorNames.add(behavior.name);
11460
+ }
11461
+ const roleNames = new Set;
11462
+ for (const role of atoms.roles ?? []) {
11463
+ roleNames.add(role.name);
11464
+ }
11465
+ const eventNames = new Set;
11466
+ for (const event of atoms.events ?? []) {
11467
+ eventNames.add(event.name);
11468
+ }
11469
+ const metricNames = new Set;
11470
+ for (const metric of atoms.metrics ?? []) {
11471
+ metricNames.add(metric.name);
11472
+ }
11473
+ if (atoms.transitions && atoms.transitions.length > 0) {
11474
+ for (const transition of atoms.transitions) {
11475
+ if (!stateValues.has(transition.from)) {
11476
+ ctx.addIssue({
11477
+ code: exports_external.ZodIssueCode.custom,
11478
+ path: ["transitions"],
11479
+ message: `transition.from references unknown state: ${transition.from}`
11480
+ });
11481
+ }
11482
+ if (!stateValues.has(transition.to)) {
11483
+ ctx.addIssue({
11484
+ code: exports_external.ZodIssueCode.custom,
11485
+ path: ["transitions"],
11486
+ message: `transition.to references unknown state: ${transition.to}`
11487
+ });
11488
+ }
11489
+ const hasEvents = eventNames.size > 0;
11490
+ const hasBehaviors = behaviorNames.size > 0;
11491
+ if (hasEvents || hasBehaviors) {
11492
+ const triggerMatchesEvent = hasEvents && eventNames.has(transition.trigger);
11493
+ const triggerMatchesBehavior = hasBehaviors && behaviorNames.has(transition.trigger);
11494
+ if (!triggerMatchesEvent && !triggerMatchesBehavior) {
11495
+ ctx.addIssue({
11496
+ code: exports_external.ZodIssueCode.custom,
11497
+ path: ["transitions"],
11498
+ message: `transition.trigger references unknown event/behavior: ${transition.trigger}`
11499
+ });
11500
+ }
11501
+ }
11316
11502
  }
11317
- if (!stateValues.has(transition.to)) {
11318
- ctx.addIssue({
11319
- code: exports_external.ZodIssueCode.custom,
11320
- path: ["transitions"],
11321
- message: `transition.to references unknown state: ${transition.to}`
11322
- });
11503
+ }
11504
+ if (atoms.roles && atoms.roles.length > 0) {
11505
+ for (const [index, role] of atoms.roles.entries()) {
11506
+ for (const perform of role.performs ?? []) {
11507
+ if (!behaviorNames.has(perform)) {
11508
+ ctx.addIssue({
11509
+ code: exports_external.ZodIssueCode.custom,
11510
+ path: ["roles", index, "performs"],
11511
+ message: `role.performs references unknown behavior: ${perform}`
11512
+ });
11513
+ }
11514
+ }
11515
+ }
11516
+ }
11517
+ if (atoms.behaviors && atoms.behaviors.length > 0) {
11518
+ for (const [index, behavior] of atoms.behaviors.entries()) {
11519
+ for (const performer of behavior.performed_by ?? []) {
11520
+ if (!roleNames.has(performer)) {
11521
+ ctx.addIssue({
11522
+ code: exports_external.ZodIssueCode.custom,
11523
+ path: ["behaviors", index, "performed_by"],
11524
+ message: `behavior.performed_by references unknown role: ${performer}`
11525
+ });
11526
+ }
11527
+ }
11528
+ }
11529
+ }
11530
+ if (atoms.rules && atoms.rules.length > 0) {
11531
+ const allowedDependsOn = new Set([...stateNames, ...metricNames]);
11532
+ for (const [index, rule] of atoms.rules.entries()) {
11533
+ for (const dependency of rule.depends_on ?? []) {
11534
+ if (!allowedDependsOn.has(dependency)) {
11535
+ ctx.addIssue({
11536
+ code: exports_external.ZodIssueCode.custom,
11537
+ path: ["rules", index, "depends_on"],
11538
+ message: `rule.depends_on references unknown state/metric: ${dependency}`
11539
+ });
11540
+ }
11541
+ }
11542
+ }
11543
+ }
11544
+ if (atoms.events && atoms.events.length > 0) {
11545
+ for (const [index, event] of atoms.events.entries()) {
11546
+ for (const behaviorName of event.trigger_for ?? []) {
11547
+ if (!behaviorNames.has(behaviorName)) {
11548
+ ctx.addIssue({
11549
+ code: exports_external.ZodIssueCode.custom,
11550
+ path: ["events", index, "trigger_for"],
11551
+ message: `event.trigger_for references unknown behavior: ${behaviorName}`
11552
+ });
11553
+ }
11554
+ }
11323
11555
  }
11324
11556
  }
11325
11557
  });
@@ -11335,7 +11567,8 @@ var atomsWhitelistByEntityType = {
11335
11567
  "states" /* States */,
11336
11568
  "rules" /* Rules */,
11337
11569
  "transitions" /* Transitions */,
11338
- "events" /* Events */
11570
+ "events" /* Events */,
11571
+ "claims" /* Claims */
11339
11572
  ]),
11340
11573
  ["process" /* Process */]: new Set,
11341
11574
  ["sor" /* SoR */]: new Set([
@@ -11351,7 +11584,8 @@ var atomsWhitelistByEntityType = {
11351
11584
  "metrics" /* Metrics */,
11352
11585
  "roles" /* Roles */,
11353
11586
  "constraints" /* Constraints */,
11354
- "comparisons" /* Comparisons */
11587
+ "comparisons" /* Comparisons */,
11588
+ "claims" /* Claims */
11355
11589
  ]),
11356
11590
  ["contract" /* Contract */]: new Set,
11357
11591
  ["epic" /* Epic */]: new Set([
@@ -11359,15 +11593,16 @@ var atomsWhitelistByEntityType = {
11359
11593
  "metrics" /* Metrics */,
11360
11594
  "roles" /* Roles */,
11361
11595
  "constraints" /* Constraints */,
11362
- "comparisons" /* Comparisons */
11596
+ "comparisons" /* Comparisons */,
11597
+ "claims" /* Claims */
11363
11598
  ]),
11364
11599
  ["document" /* Document */]: new Set
11365
11600
  };
11366
11601
  var allowedAtomFieldSchema = atomFieldSchema;
11367
- var validateAtomsWhitelist = (entityType, atoms2) => {
11602
+ var validateAtomsWhitelist = (entityType, atoms) => {
11368
11603
  const allowed = atomsWhitelistByEntityType[entityType] ?? new Set;
11369
11604
  const illegalFields = [];
11370
- for (const [key, value] of Object.entries(atoms2)) {
11605
+ for (const [key, value] of Object.entries(atoms)) {
11371
11606
  if (value === undefined) {
11372
11607
  continue;
11373
11608
  }
@@ -11377,6 +11612,60 @@ var validateAtomsWhitelist = (entityType, atoms2) => {
11377
11612
  }
11378
11613
  return illegalFields;
11379
11614
  };
11615
+
11616
+ // src/types/docDigest.ts
11617
+ var paragraphAtomSchema = exports_external.object({
11618
+ entities: exports_external.array(entityAtomSchema).optional(),
11619
+ relations: exports_external.array(relationAtomSchema).optional(),
11620
+ behaviors: exports_external.array(behaviorAtomSchema).optional(),
11621
+ attributes: exports_external.array(attributeAtomSchema).optional(),
11622
+ states: exports_external.array(stateAtomSchema).optional(),
11623
+ rules: exports_external.array(ruleAtomSchema).optional(),
11624
+ transitions: exports_external.array(transitionAtomSchema).optional(),
11625
+ events: exports_external.array(eventAtomSchema).optional(),
11626
+ decisions: exports_external.array(decisionAtomSchema).optional(),
11627
+ metrics: exports_external.array(metricAtomSchema).optional(),
11628
+ roles: exports_external.array(roleAtomSchema).optional(),
11629
+ constraints: exports_external.array(constraintAtomSchema).optional(),
11630
+ comparisons: exports_external.array(comparisonAtomSchema).optional(),
11631
+ boundaries: exports_external.array(boundaryAtomSchema).optional()
11632
+ });
11633
+ var docParagraphSchema = exports_external.object({
11634
+ text: exports_external.string(),
11635
+ atoms: paragraphAtomSchema
11636
+ });
11637
+ var sectionSchema = exports_external.object({
11638
+ heading: exports_external.string(),
11639
+ level: exports_external.number().int().min(0).max(6),
11640
+ paragraphs: exports_external.array(docParagraphSchema)
11641
+ });
11642
+ var embeddingEntrySchema = exports_external.object({
11643
+ sectionIndex: exports_external.number().int(),
11644
+ paragraphIndex: exports_external.number().int(),
11645
+ vector: exports_external.array(exports_external.number())
11646
+ });
11647
+ var docDigestSchema = exports_external.object({
11648
+ version: exports_external.literal("1"),
11649
+ sections: exports_external.array(sectionSchema),
11650
+ embeddings: exports_external.array(embeddingEntrySchema),
11651
+ metadata: exports_external.object({
11652
+ sourceId: exports_external.string(),
11653
+ hashId: exports_external.string(),
11654
+ sourcePath: exports_external.string(),
11655
+ contentHash: exports_external.string(),
11656
+ chunkCount: exports_external.number().int(),
11657
+ totalTokens: exports_external.number().int(),
11658
+ llmCalls: exports_external.number().int(),
11659
+ processedAt: exports_external.string()
11660
+ })
11661
+ });
11662
+ var docChunkParagraphSchema = exports_external.object({
11663
+ tag: exports_external.string().regex(/^P\d+$/),
11664
+ atoms: paragraphAtomSchema
11665
+ });
11666
+ var docChunkResultSchema = exports_external.object({
11667
+ paragraphs: exports_external.array(docChunkParagraphSchema)
11668
+ });
11380
11669
  // src/schemas/entitySchema.ts
11381
11670
  var baseEntitySchema = exports_external.object({
11382
11671
  id: exports_external.string(),
@@ -11385,7 +11674,8 @@ var baseEntitySchema = exports_external.object({
11385
11674
  kind: kindSchema,
11386
11675
  scope: scopeSchema,
11387
11676
  perspective: perspectiveSchema,
11388
- metadata: metadataSchema
11677
+ metadata: metadataSchema,
11678
+ source_refs: sourceRefsSchema
11389
11679
  });
11390
11680
  var productDataSchema = exports_external.object({
11391
11681
  description: exports_external.string().optional(),
@@ -11399,7 +11689,8 @@ var productEntitySchema = baseEntitySchema.extend({
11399
11689
  });
11400
11690
  var systemDataSchema = exports_external.object({
11401
11691
  description: exports_external.string().optional(),
11402
- corresponds_to: exports_external.string().optional()
11692
+ corresponds_to: exports_external.string().optional(),
11693
+ atoms: exports_external.undefined().optional()
11403
11694
  });
11404
11695
  var systemEntitySchema = baseEntitySchema.extend({
11405
11696
  type: exports_external.literal("system" /* System */),
@@ -11445,9 +11736,10 @@ var sorEntitySchema = baseEntitySchema.extend({
11445
11736
  data: sorDataSchema
11446
11737
  });
11447
11738
  var contractDataSchema = exports_external.object({
11448
- format: exports_external.enum(["openapi", "asyncapi", "proto"]),
11739
+ format: exports_external.enum(["openapi", "asyncapi", "proto", "graphql", "custom"]),
11449
11740
  spec: exports_external.string(),
11450
- component_id: exports_external.string().optional()
11741
+ version: exports_external.string().optional(),
11742
+ description: exports_external.string().optional()
11451
11743
  });
11452
11744
  var contractEntitySchema = baseEntitySchema.extend({
11453
11745
  type: exports_external.literal("contract" /* Contract */),
@@ -11455,7 +11747,7 @@ var contractEntitySchema = baseEntitySchema.extend({
11455
11747
  });
11456
11748
  var epicDataSchema = exports_external.object({
11457
11749
  description: exports_external.string().optional(),
11458
- product_refs: exports_external.array(exports_external.string()).optional(),
11750
+ product_refs: exports_external.array(entityRefPointerSchema).optional(),
11459
11751
  atoms: dataAtomsSchema.optional()
11460
11752
  });
11461
11753
  var epicEntitySchema = baseEntitySchema.extend({
@@ -11531,18 +11823,45 @@ var entitySchema = exports_external.discriminatedUnion("type", [
11531
11823
  });
11532
11824
  }
11533
11825
  }
11826
+ if (entity2.type === "sor" /* SoR */ && entity2.data.atoms) {
11827
+ const { constraints, rules } = entity2.data.atoms;
11828
+ const hasConstraints = Array.isArray(constraints) && constraints.length > 0;
11829
+ const hasRules = Array.isArray(rules) && rules.length > 0;
11830
+ if (!hasConstraints && !hasRules) {
11831
+ ctx.addIssue({
11832
+ code: exports_external.ZodIssueCode.custom,
11833
+ path: ["data", "atoms"],
11834
+ message: "SoR must have at least one constraint or rule"
11835
+ });
11836
+ }
11837
+ }
11838
+ if (entity2.type === "epic" /* Epic */ && entity2.data.atoms) {
11839
+ const { decisions } = entity2.data.atoms;
11840
+ const hasDecisions = Array.isArray(decisions) && decisions.length > 0;
11841
+ if (!hasDecisions) {
11842
+ ctx.addIssue({
11843
+ code: exports_external.ZodIssueCode.custom,
11844
+ path: ["data", "atoms"],
11845
+ message: "Epic must have at least one decision"
11846
+ });
11847
+ }
11848
+ }
11534
11849
  });
11535
11850
  // src/schemas/relationSchema.ts
11536
11851
  var relationDataSchema = exports_external.object({
11537
- description: exports_external.string().optional()
11852
+ description: exports_external.string().optional(),
11853
+ _source: exports_external.literal("field_sync").optional()
11538
11854
  });
11539
11855
  var relationSchema = exports_external.object({
11540
11856
  id: exports_external.string(),
11541
11857
  type: relationTypeSchema,
11542
11858
  from: exports_external.string(),
11543
11859
  to: exports_external.string(),
11860
+ weight: exports_external.number().optional(),
11861
+ confidence: exports_external.number().min(0).max(1).optional(),
11544
11862
  data: relationDataSchema.optional(),
11545
- metadata: metadataSchema.optional()
11863
+ metadata: metadataSchema.optional(),
11864
+ source_refs: sourceRefsSchema
11546
11865
  });
11547
11866
  // src/errors/c4aError.ts
11548
11867
  class C4AError extends Error {
@@ -11590,8 +11909,36 @@ var ErrorCode;
11590
11909
  ErrorCode2["LLM_NOT_AVAILABLE"] = "LLM_NOT_AVAILABLE";
11591
11910
  ErrorCode2["LLM_CALL_FAILED"] = "LLM_CALL_FAILED";
11592
11911
  ErrorCode2["LLM_AUTH_FAILED"] = "LLM_AUTH_FAILED";
11912
+ ErrorCode2["AUTH_REQUIRED"] = "AUTH_REQUIRED";
11913
+ ErrorCode2["AUTH_INVALID_TOKEN"] = "AUTH_INVALID_TOKEN";
11914
+ ErrorCode2["AUTH_INVALID_API_KEY"] = "AUTH_INVALID_API_KEY";
11915
+ ErrorCode2["AUTH_PROVIDER_ERROR"] = "AUTH_PROVIDER_ERROR";
11916
+ ErrorCode2["AUTH_RESERVED_NAME"] = "AUTH_RESERVED_NAME";
11917
+ ErrorCode2["DAEMON_OFFLINE"] = "DAEMON_OFFLINE";
11918
+ ErrorCode2["SOURCE_NOT_FOUND"] = "SOURCE_NOT_FOUND";
11919
+ ErrorCode2["REPO_PATH_NOT_FOUND"] = "REPO_PATH_NOT_FOUND";
11920
+ ErrorCode2["COMMIT_NOT_FOUND"] = "COMMIT_NOT_FOUND";
11921
+ ErrorCode2["INDEX_IN_PROGRESS"] = "INDEX_IN_PROGRESS";
11922
+ ErrorCode2["DIGEST_NOT_FOUND"] = "DIGEST_NOT_FOUND";
11923
+ ErrorCode2["INVALID_REGEX"] = "INVALID_REGEX";
11924
+ ErrorCode2["SOURCE_ACCESS_DENIED"] = "SOURCE_ACCESS_DENIED";
11925
+ ErrorCode2["WORKSPACE_ISOLATION"] = "WORKSPACE_ISOLATION";
11593
11926
  ErrorCode2["VECTOR_DIMENSION_MISMATCH"] = "VECTOR_DIMENSION_MISMATCH";
11594
11927
  ErrorCode2["VECTOR_REBUILD_PARTIAL"] = "VECTOR_REBUILD_PARTIAL";
11928
+ ErrorCode2["COMMIT_NOT_AVAILABLE"] = "COMMIT_NOT_AVAILABLE";
11929
+ ErrorCode2["DAEMON_AUTO_START_FAILED"] = "DAEMON_AUTO_START_FAILED";
11930
+ ErrorCode2["GIT_ARCHIVE_FAILED"] = "GIT_ARCHIVE_FAILED";
11931
+ ErrorCode2["GIT_HOST_NOT_CONFIGURED"] = "GIT_HOST_NOT_CONFIGURED";
11932
+ ErrorCode2["GIT_API_RATE_LIMITED"] = "GIT_API_RATE_LIMITED";
11933
+ ErrorCode2["GIT_API_TREE_TRUNCATED"] = "GIT_API_TREE_TRUNCATED";
11934
+ ErrorCode2["GIT_API_AUTH_FAILED"] = "GIT_API_AUTH_FAILED";
11935
+ ErrorCode2["GIT_API_REPO_NOT_FOUND"] = "GIT_API_REPO_NOT_FOUND";
11936
+ ErrorCode2["GIT_API_NETWORK_ERROR"] = "GIT_API_NETWORK_ERROR";
11937
+ ErrorCode2["DOC_INDEX_LLM_UNAVAILABLE"] = "DOC_INDEX_LLM_UNAVAILABLE";
11938
+ ErrorCode2["DOC_INDEX_EMBEDDING_UNAVAILABLE"] = "DOC_INDEX_EMBEDDING_UNAVAILABLE";
11939
+ ErrorCode2["DOC_INDEX_CONTENT_MISSING"] = "DOC_INDEX_CONTENT_MISSING";
11940
+ ErrorCode2["DOC_INDEX_PARSE_FAILED"] = "DOC_INDEX_PARSE_FAILED";
11941
+ ErrorCode2["DOC_INDEX_LLM_EXHAUSTED"] = "DOC_INDEX_LLM_EXHAUSTED";
11595
11942
  ErrorCode2["UNKNOWN"] = "UNKNOWN";
11596
11943
  })(ErrorCode ||= {});
11597
11944
  // src/errors/httpStatus.ts
@@ -11602,29 +11949,57 @@ var ERROR_CODE_HTTP_STATUS = {
11602
11949
  ["PARSE_YAML" /* PARSE_YAML */]: 400,
11603
11950
  ["RELATION_INVALID" /* RELATION_INVALID */]: 400,
11604
11951
  ["QUERY_INVALID_PARAMS" /* QUERY_INVALID_PARAMS */]: 400,
11952
+ ["INVALID_REGEX" /* INVALID_REGEX */]: 400,
11605
11953
  ["BACKUP_VERSION_INCOMPATIBLE" /* BACKUP_VERSION_INCOMPATIBLE */]: 400,
11606
11954
  ["BACKUP_MANIFEST_INVALID" /* BACKUP_MANIFEST_INVALID */]: 400,
11607
11955
  ["VECTOR_DIMENSION_MISMATCH" /* VECTOR_DIMENSION_MISMATCH */]: 400,
11608
11956
  ["STORAGE_NOT_FOUND" /* STORAGE_NOT_FOUND */]: 404,
11609
11957
  ["ENTITY_NOT_FOUND" /* ENTITY_NOT_FOUND */]: 404,
11610
11958
  ["BACKUP_DIR_NOT_FOUND" /* BACKUP_DIR_NOT_FOUND */]: 404,
11959
+ ["SOURCE_NOT_FOUND" /* SOURCE_NOT_FOUND */]: 404,
11960
+ ["DIGEST_NOT_FOUND" /* DIGEST_NOT_FOUND */]: 404,
11611
11961
  ["STORAGE_CONFLICT" /* STORAGE_CONFLICT */]: 409,
11612
11962
  ["ENTITY_DUPLICATE" /* ENTITY_DUPLICATE */]: 409,
11963
+ ["INDEX_IN_PROGRESS" /* INDEX_IN_PROGRESS */]: 409,
11613
11964
  ["API_UNAUTHORIZED" /* API_UNAUTHORIZED */]: 401,
11614
11965
  ["LLM_AUTH_FAILED" /* LLM_AUTH_FAILED */]: 401,
11966
+ ["AUTH_REQUIRED" /* AUTH_REQUIRED */]: 401,
11967
+ ["AUTH_INVALID_TOKEN" /* AUTH_INVALID_TOKEN */]: 401,
11968
+ ["AUTH_INVALID_API_KEY" /* AUTH_INVALID_API_KEY */]: 401,
11969
+ ["AUTH_RESERVED_NAME" /* AUTH_RESERVED_NAME */]: 400,
11970
+ ["SOURCE_ACCESS_DENIED" /* SOURCE_ACCESS_DENIED */]: 403,
11971
+ ["REPO_PATH_NOT_FOUND" /* REPO_PATH_NOT_FOUND */]: 422,
11972
+ ["COMMIT_NOT_FOUND" /* COMMIT_NOT_FOUND */]: 422,
11973
+ ["COMMIT_NOT_AVAILABLE" /* COMMIT_NOT_AVAILABLE */]: 422,
11974
+ ["GIT_HOST_NOT_CONFIGURED" /* GIT_HOST_NOT_CONFIGURED */]: 422,
11975
+ ["GIT_API_TREE_TRUNCATED" /* GIT_API_TREE_TRUNCATED */]: 422,
11615
11976
  ["API_RATE_LIMITED" /* API_RATE_LIMITED */]: 429,
11977
+ ["GIT_API_RATE_LIMITED" /* GIT_API_RATE_LIMITED */]: 429,
11616
11978
  ["API_NOT_IMPLEMENTED" /* API_NOT_IMPLEMENTED */]: 501,
11617
11979
  ["BATCH_PARTIAL_FAILURE" /* BATCH_PARTIAL_FAILURE */]: 200,
11618
11980
  ["VECTOR_REBUILD_PARTIAL" /* VECTOR_REBUILD_PARTIAL */]: 200,
11619
11981
  ["STORAGE_FAILED" /* STORAGE_FAILED */]: 500,
11620
11982
  ["EMBEDDING_FAILED" /* EMBEDDING_FAILED */]: 500,
11621
11983
  ["LLM_CALL_FAILED" /* LLM_CALL_FAILED */]: 500,
11984
+ ["GIT_API_NETWORK_ERROR" /* GIT_API_NETWORK_ERROR */]: 502,
11622
11985
  ["BACKUP_FAILED" /* BACKUP_FAILED */]: 500,
11623
11986
  ["RESTORE_FAILED" /* RESTORE_FAILED */]: 500,
11624
11987
  ["PURGE_FAILED" /* PURGE_FAILED */]: 500,
11988
+ ["GIT_ARCHIVE_FAILED" /* GIT_ARCHIVE_FAILED */]: 500,
11625
11989
  ["EMBEDDING_NOT_AVAILABLE" /* EMBEDDING_NOT_AVAILABLE */]: 503,
11626
11990
  ["LLM_NOT_AVAILABLE" /* LLM_NOT_AVAILABLE */]: 503,
11627
- ["UNKNOWN" /* UNKNOWN */]: 500
11991
+ ["DAEMON_OFFLINE" /* DAEMON_OFFLINE */]: 503,
11992
+ ["DAEMON_AUTO_START_FAILED" /* DAEMON_AUTO_START_FAILED */]: 503,
11993
+ ["GIT_API_AUTH_FAILED" /* GIT_API_AUTH_FAILED */]: 502,
11994
+ ["GIT_API_REPO_NOT_FOUND" /* GIT_API_REPO_NOT_FOUND */]: 404,
11995
+ ["AUTH_PROVIDER_ERROR" /* AUTH_PROVIDER_ERROR */]: 502,
11996
+ ["DOC_INDEX_LLM_UNAVAILABLE" /* DOC_INDEX_LLM_UNAVAILABLE */]: 503,
11997
+ ["DOC_INDEX_EMBEDDING_UNAVAILABLE" /* DOC_INDEX_EMBEDDING_UNAVAILABLE */]: 503,
11998
+ ["DOC_INDEX_CONTENT_MISSING" /* DOC_INDEX_CONTENT_MISSING */]: 404,
11999
+ ["DOC_INDEX_PARSE_FAILED" /* DOC_INDEX_PARSE_FAILED */]: 422,
12000
+ ["DOC_INDEX_LLM_EXHAUSTED" /* DOC_INDEX_LLM_EXHAUSTED */]: 502,
12001
+ ["UNKNOWN" /* UNKNOWN */]: 500,
12002
+ ["WORKSPACE_ISOLATION" /* WORKSPACE_ISOLATION */]: 400
11628
12003
  };
11629
12004
  function mapErrorCodeToStatus(code) {
11630
12005
  return ERROR_CODE_HTTP_STATUS[code] ?? 500;
@@ -11681,31 +12056,134 @@ function parseYaml(value) {
11681
12056
  }
11682
12057
  }
11683
12058
  // src/constants.ts
11684
- var DEFAULT_USER_ID = "user_admin";
11685
- var DEFAULT_USER_NAME = "admin";
11686
- var DEFAULT_WORKSPACE_ID = "ws_default";
11687
- var DEFAULT_WORKSPACE_NAME = "默认大脑";
11688
- var DEFAULT_CLOUD_LIBRARY_ID = "lib_cloud_default";
11689
- var DEFAULT_CLOUD_LIBRARY_NAME = "个人云";
12059
+ var DEFAULT_WORKSPACE_NAME = "My Brain";
12060
+ var DEFAULT_CLOUD_LIBRARY_NAME = "My Drive";
12061
+ var SUPERTEST_EMAIL = "supertest@context4ai.org";
12062
+ var SUPERTEST_USER_NAME = "SuperTest";
12063
+ var RESERVED_USER_NAMES = ["SuperTest"];
11690
12064
  var DAEMON_HEARTBEAT_INTERVAL = 30000;
11691
12065
  var DAEMON_OFFLINE_THRESHOLD = 60000;
12066
+ var CLOUD_DAEMON_IDLE_TIMEOUT = 300000;
12067
+ // src/contentTypeRegistry.ts
12068
+ var DEFAULT_CONTENT_TYPES = [
12069
+ {
12070
+ id: "markdown",
12071
+ category: "doc",
12072
+ match: { extensions: [".md", ".txt"] },
12073
+ cas: { encoding: "utf8", hashInput: "content" },
12074
+ pipeline: { digest: ["summary", "outline"], extraction: ["entities", "relations"] },
12075
+ display: { icon: "\uD83D\uDCC4", renderer: "text" }
12076
+ },
12077
+ {
12078
+ id: "typescript",
12079
+ category: "code",
12080
+ match: { extensions: [".ts", ".tsx"] },
12081
+ cas: { encoding: "utf8", hashInput: "content" },
12082
+ pipeline: { digest: ["ast", "summary"], extraction: ["entities", "relations"] },
12083
+ display: { icon: "\uD83D\uDCDC", renderer: "code" }
12084
+ },
12085
+ {
12086
+ id: "package",
12087
+ category: "package",
12088
+ match: { filenames: ["package.json", "go.mod", "pyproject.toml", "Cargo.toml", "pom.xml"] },
12089
+ cas: { encoding: "utf8", hashInput: "identity" },
12090
+ pipeline: { digest: ["summary"], extraction: ["entities", "relations"] },
12091
+ display: { icon: "\uD83D\uDCE6", renderer: "package-card" }
12092
+ },
12093
+ {
12094
+ id: "pdf",
12095
+ category: "binary",
12096
+ match: { extensions: [".pdf"] },
12097
+ cas: { encoding: "base64", hashInput: "content" },
12098
+ pipeline: { digest: [], extraction: [] },
12099
+ display: { icon: "\uD83D\uDCD5", renderer: "binary-preview" }
12100
+ },
12101
+ {
12102
+ id: "msword",
12103
+ category: "binary",
12104
+ match: { extensions: [".doc", ".docx"] },
12105
+ cas: { encoding: "base64", hashInput: "content" },
12106
+ pipeline: { digest: [], extraction: [] },
12107
+ display: { icon: "\uD83D\uDCD8", renderer: "binary-preview" }
12108
+ },
12109
+ {
12110
+ id: "mspowerpoint",
12111
+ category: "binary",
12112
+ match: { extensions: [".ppt", ".pptx"] },
12113
+ cas: { encoding: "base64", hashInput: "content" },
12114
+ pipeline: { digest: [], extraction: [] },
12115
+ display: { icon: "\uD83D\uDCD9", renderer: "binary-preview" }
12116
+ }
12117
+ ];
12118
+ var normalizeExtension = (ext) => ext.trim().toLowerCase();
12119
+ var normalizeFilename = (name) => name.trim().toLowerCase();
12120
+
12121
+ class ContentTypeRegistry {
12122
+ definitions;
12123
+ extensionIndex;
12124
+ filenameIndex;
12125
+ constructor(definitions) {
12126
+ this.definitions = definitions;
12127
+ this.extensionIndex = new Map;
12128
+ this.filenameIndex = new Map;
12129
+ for (const def of definitions) {
12130
+ for (const ext of def.match.extensions ?? []) {
12131
+ this.extensionIndex.set(normalizeExtension(ext), def);
12132
+ }
12133
+ for (const name of def.match.filenames ?? []) {
12134
+ this.filenameIndex.set(normalizeFilename(name), def);
12135
+ }
12136
+ }
12137
+ }
12138
+ resolve(filename) {
12139
+ const baseName = filename.includes("/") ? filename.split("/").pop() ?? filename : filename;
12140
+ const normalized = normalizeFilename(baseName);
12141
+ const byName = this.filenameIndex.get(normalized);
12142
+ if (byName)
12143
+ return byName;
12144
+ const dot = normalized.lastIndexOf(".");
12145
+ if (dot < 0)
12146
+ return null;
12147
+ const ext = normalizeExtension(normalized.slice(dot));
12148
+ return this.extensionIndex.get(ext) ?? null;
12149
+ }
12150
+ getManifestFilenames() {
12151
+ const names = new Set;
12152
+ for (const def of this.definitions) {
12153
+ if (def.category !== "package")
12154
+ continue;
12155
+ for (const name of def.match.filenames ?? []) {
12156
+ names.add(normalizeFilename(name));
12157
+ }
12158
+ }
12159
+ return Array.from(names);
12160
+ }
12161
+ getDefinitions() {
12162
+ return [...this.definitions];
12163
+ }
12164
+ }
12165
+ var defaultRegistry = new ContentTypeRegistry(DEFAULT_CONTENT_TYPES);
12166
+ var DEFAULT_CONTENT_TYPE_DEFINITIONS = DEFAULT_CONTENT_TYPES;
11692
12167
  // src/fileTypes.ts
11693
- var INDEXABLE_CODE_EXTENSIONS = new Set([".ts", ".tsx"]);
11694
- var INDEXABLE_DOC_EXTENSIONS = new Set([".md"]);
12168
+ var collectExtensions = (predicate) => {
12169
+ const extensions = new Set;
12170
+ for (const definition of DEFAULT_CONTENT_TYPE_DEFINITIONS) {
12171
+ if (!predicate(definition))
12172
+ continue;
12173
+ for (const ext of definition.match.extensions ?? []) {
12174
+ extensions.add(ext.toLowerCase());
12175
+ }
12176
+ }
12177
+ return extensions;
12178
+ };
12179
+ var INDEXABLE_CODE_EXTENSIONS = collectExtensions((definition) => definition.category === "code");
12180
+ var INDEXABLE_DOC_EXTENSIONS = collectExtensions((definition) => definition.category === "doc");
11695
12181
  var INDEXABLE_EXTENSIONS = new Set([
11696
12182
  ...INDEXABLE_CODE_EXTENSIONS,
11697
12183
  ...INDEXABLE_DOC_EXTENSIONS
11698
12184
  ]);
11699
- var UPLOAD_ALLOWED_EXTENSIONS = new Set([
11700
- ".md",
11701
- ".doc",
11702
- ".docx",
11703
- ".pdf",
11704
- ".ppt",
11705
- ".pptx",
11706
- ".txt"
11707
- ]);
11708
- var TEXT_EXTENSIONS = new Set([".md", ".txt"]);
12185
+ var UPLOAD_ALLOWED_EXTENSIONS = collectExtensions(() => true);
12186
+ var TEXT_EXTENSIONS = collectExtensions((definition) => definition.cas.encoding === "utf8");
11709
12187
  var UPLOAD_MAX_FILE_SIZE = 5 * 1024 * 1024;
11710
12188
  var UPLOAD_MAX_FILES = 10;
11711
12189
  function getFileExtension(name) {
@@ -11714,10 +12192,7 @@ function getFileExtension(name) {
11714
12192
  }
11715
12193
  function isIndexableFile(fileName, manifestFiles) {
11716
12194
  const baseName = fileName.includes("/") ? fileName.split("/").pop() : fileName;
11717
- if (manifestFiles.has(baseName.toLowerCase()))
11718
- return true;
11719
- const ext = getFileExtension(baseName);
11720
- return INDEXABLE_EXTENSIONS.has(ext);
12195
+ return defaultRegistry.resolve(baseName) !== null;
11721
12196
  }
11722
12197
  // src/wsEvents.ts
11723
12198
  var WS_SESSION_STATUS = "ws:session:status";
@@ -11728,14 +12203,22 @@ var WS_DAEMON_CONNECTED = "ws:daemon:connected";
11728
12203
  var WS_DAEMON_STATUS = "ws:daemon:status";
11729
12204
  var WS_DAEMON_HEARTBEAT = "ws:daemon:heartbeat";
11730
12205
  var WS_LIBRARY_UPDATED = "ws:library:updated";
12206
+ var WS_INDEX_PROGRESS = "index/progress";
12207
+ var WS_INDEX_DONE = "index/done";
12208
+ var WS_INDEX_ERROR = "index/error";
12209
+ var WS_INDEX_TIMEOUT = "index/timeout";
11731
12210
  export {
11732
12211
  validateAtomsWhitelist,
11733
12212
  transitionAtomSchema,
11734
12213
  systemEntitySchema,
11735
12214
  stateAtomSchema,
12215
+ sourceRefsSchema,
12216
+ sourceRefSpanSchema,
12217
+ sourceRefSchema,
11736
12218
  sorEntitySchema,
11737
12219
  sessionDecisionSchema,
11738
12220
  serializeYaml,
12221
+ sectionSchema,
11739
12222
  scopeSchema,
11740
12223
  ruleAtomSchema,
11741
12224
  roleAtomSchema,
@@ -11747,6 +12230,8 @@ export {
11747
12230
  processEntitySchema,
11748
12231
  perspectiveSchema,
11749
12232
  parseYaml,
12233
+ parseRef,
12234
+ paragraphAtomSchema,
11750
12235
  modelingSessionDataSchema,
11751
12236
  metricMilestoneSchema,
11752
12237
  metricAtomSchema,
@@ -11754,32 +12239,43 @@ export {
11754
12239
  mapErrorCodeToStatus,
11755
12240
  kindSchema,
11756
12241
  isValidManifest,
12242
+ isRefPointer,
11757
12243
  isPathSafe,
11758
12244
  isIndexableFile,
11759
12245
  getFileExtension,
11760
12246
  generateUUID,
11761
12247
  generateId,
12248
+ extractionConfidenceSchema,
12249
+ extractAllRefs,
11762
12250
  eventAtomSchema,
11763
12251
  epicEntitySchema,
11764
12252
  entityTypeSchema,
11765
12253
  entitySchema,
12254
+ entityRefPointerSchema,
11766
12255
  entityAtomSchema,
12256
+ embeddingEntrySchema,
11767
12257
  documentSchema,
11768
12258
  documentModelingEntitySchema,
11769
12259
  documentEntitySchema,
11770
12260
  documentAdrEntitySchema,
12261
+ docDigestSchema,
12262
+ docChunkResultSchema,
12263
+ docChunkParagraphSchema,
12264
+ defaultRegistry,
11771
12265
  decisionPhaseSchema,
11772
12266
  decisionAtomSchema,
11773
12267
  dataAtomsSchema,
11774
12268
  contractEntitySchema,
12269
+ contractDataSchema,
11775
12270
  contentHash,
11776
12271
  containerEntitySchema,
11777
12272
  constraintAtomSchema,
11778
- confidenceSchema,
11779
12273
  componentEntitySchema,
11780
12274
  comparisonDimensionValueSchema,
11781
12275
  comparisonDimensionSchema,
11782
12276
  comparisonAtomSchema,
12277
+ claimAtomSchema,
12278
+ buildRef,
11783
12279
  boundaryAtomSchema,
11784
12280
  behaviorAtomSchema,
11785
12281
  attributeAtomSchema,
@@ -11790,6 +12286,10 @@ export {
11790
12286
  WS_SESSION_STATUS,
11791
12287
  WS_SESSION_PROGRESS,
11792
12288
  WS_LIBRARY_UPDATED,
12289
+ WS_INDEX_TIMEOUT,
12290
+ WS_INDEX_PROGRESS,
12291
+ WS_INDEX_ERROR,
12292
+ WS_INDEX_DONE,
11793
12293
  WS_DAEMON_STATUS,
11794
12294
  WS_DAEMON_HEARTBEAT,
11795
12295
  WS_DAEMON_HANDSHAKE_ACK,
@@ -11799,7 +12299,10 @@ export {
11799
12299
  UPLOAD_MAX_FILES,
11800
12300
  UPLOAD_ALLOWED_EXTENSIONS,
11801
12301
  TEXT_EXTENSIONS,
12302
+ SUPERTEST_USER_NAME,
12303
+ SUPERTEST_EMAIL,
11802
12304
  RelationType,
12305
+ RESERVED_USER_NAMES,
11803
12306
  Perspective,
11804
12307
  Kind,
11805
12308
  INDEXABLE_EXTENSIONS,
@@ -11807,16 +12310,16 @@ export {
11807
12310
  INDEXABLE_CODE_EXTENSIONS,
11808
12311
  ErrorCode,
11809
12312
  EntityType,
12313
+ EDGE_SYNC_RULES,
11810
12314
  DEFAULT_WORKSPACE_NAME,
11811
- DEFAULT_WORKSPACE_ID,
11812
- DEFAULT_USER_NAME,
11813
- DEFAULT_USER_ID,
11814
12315
  DEFAULT_SERVER_CONFIG,
12316
+ DEFAULT_CONTENT_TYPE_DEFINITIONS,
11815
12317
  DEFAULT_CLOUD_LIBRARY_NAME,
11816
- DEFAULT_CLOUD_LIBRARY_ID,
11817
12318
  DAEMON_OFFLINE_THRESHOLD,
11818
12319
  DAEMON_HEARTBEAT_INTERVAL,
12320
+ ContentTypeRegistry,
11819
12321
  CODE_PACKAGE_FILES,
12322
+ CLOUD_DAEMON_IDLE_TIMEOUT,
11820
12323
  C4AError,
11821
12324
  AtomField
11822
12325
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c4a/core",
3
- "version": "0.4.12",
3
+ "version": "0.4.15-alpha.2",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "yaml": "^2.4.5",