@tiinex/core 0.23.0 → 0.25.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": "@tiinex/core",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Shared host-neutral Tiinex implementation core for artifacts, schemas, validation, lineage, grounding, Handoffs, provenance and deterministic workflows.",
5
5
  "type": "module",
6
6
  "sideEffects": true,
@@ -173,12 +173,12 @@
173
173
  "type": "git",
174
174
  "url": "git+https://github.com/Tiinex/core.git"
175
175
  },
176
- "gitHead": "0115723fd777d088edda56f7d9d1bef898b359ff",
176
+ "gitHead": "387532b237387d95bd1a491eba1190b57ed73051",
177
177
  "tiinexRelease": {
178
178
  "policy": "tiinex.master-npm-release.v1",
179
- "sourceCommit": "0115723fd777d088edda56f7d9d1bef898b359ff",
180
- "sourceTree": "066320bc97b3d3d16caac487ae56a34c039bb1e2",
179
+ "sourceCommit": "387532b237387d95bd1a491eba1190b57ed73051",
180
+ "sourceTree": "e1a4ae2d3cc2fa91b1a734890d09af3758826617",
181
181
  "repository": "Tiinex/core",
182
- "previousVersion": "0.22.0"
182
+ "previousVersion": "0.24.0"
183
183
  }
184
184
  }
@@ -198,7 +198,28 @@ async function prepareWorkspaceCarrierCliCommand(flags = {}, workspaceRoot = '.'
198
198
  const workspaceScopeValue = await readOptionalJson(flags['workspace-scopes']);
199
199
  const additionalWorkspaces = [...splitFlag(flags['additional-workspaces']), ...descriptorArray(workspaceDescriptorValue, 'workspaces')];
200
200
  const verifyRoundtrip = !flags['no-roundtrip'];
201
- const carrierProfile = selectCarrierProfile({ operator: operatorCarrierProfile, runtime: runtime.defaultCarrierProfile || null });
201
+ const parentPackagePath = String(flags['package-parent'] || '').trim();
202
+ let carrierLineage = Object.freeze({ ...initialHandoffCarrierLineage(), checkpointKind: 'progression', majorReason: '' });
203
+ let inheritedCarrierProfile = normalizeHandoffCarrierProfile(null);
204
+ if (parentPackagePath) {
205
+ const resolvedParent = path.resolve(parentPackagePath);
206
+ const parentBytes = new Uint8Array(await readFile(resolvedParent));
207
+ const parentBundle = await loadNodePortableInput([resolvedParent], { maxFiles: flags['max-files'], maxTextBytes: flags['max-text-bytes'] });
208
+ inheritedCarrierProfile = parentHandoffCarrierProfileFromBundle(parentBundle);
209
+ const parentLineage = parentHandoffCarrierLineageFromBundle(parentBundle);
210
+ carrierLineage = carrierLineageFromCliParent({
211
+ bundle: parentBundle,
212
+ parentPath: resolvedParent,
213
+ parentBytes,
214
+ qualifiedParentLineage: parentLineage,
215
+ major: Boolean(flags['package-major']),
216
+ majorReason: flags['major-reason'] || '',
217
+ siblingIndex: 1
218
+ });
219
+ } else if (flags['package-major']) {
220
+ throw new Error('portable.cli.workspace-carrier.package-major.parent-required');
221
+ }
222
+ const carrierProfile = selectCarrierProfile({ operator: operatorCarrierProfile, inherited: inheritedCarrierProfile, runtime: runtime.defaultCarrierProfile || null });
202
223
  const projectedFilename = String(flags['projected-filename'] || flags.projectedFilename || '').trim();
203
224
  const input = await prepareNodeWorkspaceCarrierManufacturingInput({
204
225
  workspaceRoot,
@@ -216,7 +237,7 @@ async function prepareWorkspaceCarrierCliCommand(flags = {}, workspaceRoot = '.'
216
237
  verifyRoundtrip,
217
238
  createdAt: flags['built-at'] || undefined,
218
239
  projectedFilename,
219
- carrierLineage: Object.freeze({ ...initialHandoffCarrierLineage(), checkpointKind: 'progression', majorReason: '' }),
240
+ carrierLineage,
220
241
  carrierProfile
221
242
  }, runtime);
222
243
  return { input, options: { verifyRoundtrip, packageInput: { builtAt: flags['built-at'] || undefined } } };
@@ -147,16 +147,19 @@ export function allocateRootArtifactPath({ targetId = '', targetLabel = '', titl
147
147
  if (explicitPath) return { path: uniqueTransitionPath(explicitPath, occupied), policy: pathPolicyForExplicit(explicitPath) };
148
148
  const labelSlug = slugify(title || targetLabel || labelFromSchemaId(targetId) || 'artifact');
149
149
  const targetSlug = slugify(targetLabel || labelFromSchemaId(targetId) || 'artifact');
150
- const basePath = `.topics/${labelSlug}--${targetSlug}.trace.md`;
150
+ const rootPrefix = nextDirectoryRootLineagePrefix('.topics', occupied);
151
+ const basePath = `.topics/${rootPrefix}-${labelSlug}.trace.md`;
151
152
  return {
152
153
  path: uniqueTransitionPath(basePath, occupied),
153
154
  policy: {
154
155
  schema: 'tiinex.transition.path-policy.v1',
155
156
  kind: 'standalone-root',
156
157
  parentDirectory: '.topics',
158
+ rootLineagePrefix: rootPrefix,
157
159
  labelSlug,
158
160
  targetSlug,
159
- extension: '.trace.md'
161
+ extension: '.trace.md',
162
+ allocationAuthority: 'directory-local-lineage-namespace'
160
163
  }
161
164
  };
162
165
  }