perttool 0.9.0 → 0.9.1

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/dist/cli.js CHANGED
@@ -31,7 +31,7 @@ import { persistMilestoneAcceptanceMutation, planAcceptanceReceiptMutation, plan
31
31
  import { planMilestoneAcceptanceMigration, recheckCommittedMigrationProof, } from "./milestone-acceptance/migration.js";
32
32
  import { MILESTONE_ACCEPTANCE_SOURCE_CAPABILITY, milestoneAcceptanceBaseText, parseMilestoneAcceptanceSource } from "./milestone-acceptance/source.js";
33
33
  import { planMilestoneAcceptanceAdvance } from "./milestone-acceptance/advance.js";
34
- const { analyzeDocument: _analyzeContract7Document, checkDocument: _checkContract7Document, selectNextTasks: _selectContract7NextTasks, planFormat, planProjectInit, projectInitResultToJson, renderProjectInitResult, withProjectInitOutput, planUnitMigration, withUnitMigrationWrite, getProjectMetadata, contract7ProjectResultToJson, renderContract7ProjectText, planAdvance, planBatchMutation, planFinishActuals, planLifecycle, planMutation, planAssuranceMutation, renderTargetGovernanceDecision, contract7InspectionResultToJson, contract7MutationResultToJson, contract7SnakeJson, contract6WorkEventToJson, renderAdvanceHistoryGuard, prepareTargetPlanAssuranceAdvanceHistory, prepareAdvanceHistory, withAdvanceHistoryRace, withTargetPlanAssuranceAdvanceHistoryRace, persistTargetPlanAssuranceResult, inspectTargetPlanAssurance, inspectTargetProjectHistoryFile, renderTargetProjectHistoryText, targetProjectHistoryResultToJson, observeTargetProjectVelocity, renderTargetVelocityObservationText, targetVelocityObservationResultToJson, getAgentHelp, documentContentFromBytes, readDocumentContent, readBytes, recheckAdvanceHistoryBaseline, captureAdvanceHistoryBaseline, createArtifactFile, createValidatedDocumentFile, createTargetGrammar6DocumentFile, replaceTargetGrammar6DocumentFile, replaceValidatedDocumentFile, inspectTargetHistoricalGraphFile, renderTargetHistoricalGraphText, targetHistoricalGraphResultToJson, } = createCliApplicationFacade(createNodeHost(), createHistoricalGraphGitEvidenceHost());
34
+ const { analyzeDocument: _analyzeContract7Document, checkDocument: _checkContract7Document, selectNextTasks: _selectContract7NextTasks, planFormat, planProjectInit, projectInitResultToJson, renderProjectInitResult, withProjectInitOutput, planUnitMigration, withUnitMigrationWrite, getProjectMetadata, contract7ProjectResultToJson, renderContract7ProjectText, planAdvance, planBatchMutation, planFinishActuals, planLifecycle, planMutation, planAssuranceMutation, renderTargetGovernanceDecision, contract7InspectionResultToJson, contract7MutationResultToJson, contract7SnakeJson, contract6WorkEventToJson, renderAdvanceHistoryGuard, prepareTargetPlanAssuranceAdvanceHistory, prepareAdvanceHistory, withAdvanceHistoryRace, withTargetPlanAssuranceAdvanceHistoryRace, persistTargetPlanAssuranceResult, inspectTargetPlanAssurance, inspectTargetCurrentProjectActuals, inspectTargetProjectHistoryFile, renderTargetProjectHistoryText, targetProjectHistoryResultToJson, observeTargetProjectVelocity, renderTargetVelocityObservationText, targetVelocityObservationResultToJson, getAgentHelp, documentContentFromBytes, readDocumentContent, readBytes, recheckAdvanceHistoryBaseline, captureAdvanceHistoryBaseline, createArtifactFile, createValidatedDocumentFile, createTargetGrammar6DocumentFile, replaceTargetGrammar6DocumentFile, replaceValidatedDocumentFile, inspectTargetHistoricalGraphFile, renderTargetHistoricalGraphText, targetHistoricalGraphResultToJson, } = createCliApplicationFacade(createNodeHost(), createHistoricalGraphGitEvidenceHost());
35
35
  const analyzeDocument = analyzeContract8Document;
36
36
  const checkDocument = checkContract8Document;
37
37
  const selectNextTasks = selectContract8NextTasks;
@@ -1515,7 +1515,7 @@ async function runUnitMigration(args) {
1515
1515
  }
1516
1516
  return ok ? 0 : 1;
1517
1517
  }
1518
- async function readHistoryForCommand(operation, parsed, format) {
1518
+ async function readHistoryForCommand(operation, parsed, format, expectedSourceDigest) {
1519
1519
  if (parsed.positionals.length !== 1) {
1520
1520
  throw new UsageError(`${operation.replace(".", " ")} requires exactly one <file>`);
1521
1521
  }
@@ -1532,6 +1532,9 @@ async function readHistoryForCommand(operation, parsed, format) {
1532
1532
  ...(parsed.repeatedValues.get("task") === undefined
1533
1533
  ? {}
1534
1534
  : { taskIds: parsed.repeatedValues.get("task") }),
1535
+ ...(expectedSourceDigest === undefined
1536
+ ? {}
1537
+ : { expectedSourceDigest }),
1535
1538
  }, TARGET_GRAMMAR_6_CAPABILITY);
1536
1539
  }
1537
1540
  catch (error) {
@@ -1619,20 +1622,37 @@ async function runProjectVelocityObservation(args) {
1619
1622
  const parsed = parseCommandOptions("project.observe-velocity", args);
1620
1623
  const format = outputFormat(parsed.values.get("format"));
1621
1624
  const color = colorMode(parsed.values.get("color"), format);
1622
- const history = await readHistoryForCommand("project.observe-velocity", parsed, format);
1623
- if (history instanceof Error) {
1624
- return cliError(history, 3, "project.observe-velocity", format === "json");
1625
- }
1626
1625
  const evidenceValue = parsed.values.get("evidence") ?? "declared";
1627
1626
  const evidence = evidenceValue === "git-recorded"
1628
1627
  ? "git_recorded"
1629
1628
  : evidenceValue;
1629
+ const source = parsed.positionals[0];
1630
+ let current = null;
1631
+ if (evidence !== "git_recorded" && source !== undefined && source !== "-") {
1632
+ try {
1633
+ current = await readDocumentContent(source);
1634
+ }
1635
+ catch (error) {
1636
+ return cliError(error instanceof Error ? error : new Error(String(error)), 3, "project.observe-velocity", format === "json");
1637
+ }
1638
+ }
1639
+ const history = await readHistoryForCommand("project.observe-velocity", parsed, format, current?.digest);
1640
+ if (history instanceof Error) {
1641
+ return cliError(history, 3, "project.observe-velocity", format === "json");
1642
+ }
1643
+ const taskIds = parsed.repeatedValues.get("task");
1644
+ const currentActuals = current === null
1645
+ ? null
1646
+ : inspectTargetCurrentProjectActuals({ bytes: current.bytes, digest: current.digest }, taskIds === undefined ? {} : { taskIds }, TARGET_GRAMMAR_6_CAPABILITY);
1630
1647
  const result = observeTargetProjectVelocity(history, {
1631
- ...(parsed.repeatedValues.get("task") === undefined
1632
- ? {}
1633
- : { taskIds: parsed.repeatedValues.get("task") }),
1648
+ ...(taskIds === undefined ? {} : { taskIds }),
1634
1649
  evidence,
1635
- });
1650
+ }, currentActuals === null || current === null
1651
+ ? {}
1652
+ : {
1653
+ currentActuals,
1654
+ currentSourceDigest: current.digest,
1655
+ });
1636
1656
  const warningFailure = parsed.flags.has("warnings-as-errors") &&
1637
1657
  result.diagnostics.some((diagnostic) => diagnostic.severity === "warning");
1638
1658
  const ok = result.ok && !warningFailure;