Skip to content

Feature/tidy#60

Merged
magmacomputing merged 11 commits into
mainfrom
feature/tidy
Jul 15, 2026
Merged

Feature/tidy#60
magmacomputing merged 11 commits into
mainfrom
feature/tidy

Conversation

@magmacomputing

@magmacomputing magmacomputing commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Added historical era-aware parsing/formatting (BC/BCE/AD/CE), including Tempo era accessors and {era} / {eon} support.
    • Enhanced {h12} auto-meridiem formatting with :space and dots modifiers.
    • Introduced new community plugins: Astro, Finance, Snap, Sync, and Batch.
  • Documentation
    • Added the “Core Getters” guide and refreshed token/config and era-parsing documentation, plus plugin docs/navigation.
  • Tests
    • Expanded automated coverage for era parsing, meridiem modifiers, and the new plugins.
  • Chores
    • Bumped versions to 3.9.0 and updated changelogs/build tooling.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Tempo 3.9.0 adds historical-era parsing and formatting, new era getters, five community plugins, shared plugin build tooling, documentation, tests, release notes, and updated package metadata.

Changes

Tempo core and release metadata

Layer / File(s) Summary
Era parsing and formatting
packages/tempo/src/engine/*, packages/tempo/src/module/*, packages/tempo/src/support/*, packages/tempo/src/tempo.class.ts, packages/tempo/test/*
Era-aware layouts, BCE conversion, {era}/{eon} formatting, meridiem modifiers, and corresponding getters and tests were added.
Core documentation and release updates
packages/tempo/doc/*, CHANGELOG.md, packages/tempo/CHANGELOG.md, package.json, packages/*/package.json
Era behavior, getters, plugin examples, release notes, package versions, and Interval examples were updated.

Community plugins

Layer / File(s) Summary
Astro, Finance, and Snap plugins
packages/plugins/astro/*, packages/plugins/finance/*, packages/plugins/snap/*
Astronomical seasons, fiscal helpers, and directional sub-second time snapping were implemented with package artifacts and tests.
Batch and Sync plugins
packages/plugins/batch/*, packages/plugins/sync/*
Worker-based batch mutation and atomic shared-clock synchronization were implemented with public plugin APIs and tests.

Plugin tooling and documentation

Layer / File(s) Summary
Shared build and runtime tooling
packages/plugins/tsup.shared.ts, packages/plugins/bin/*, packages/tempo/bin/*, vitest.config.ts
Shared plugin bundling, plugin discovery, REPL initialization, Temporal polyfill setup, documentation harvesting, and plugin test project configuration were added.
Plugin guides and licensing artifacts
packages/plugins/*/README.md, packages/plugins/*/doc/*, packages/plugins/*/CHANGELOG.md, packages/plugins/*/LICENSE, packages/tempo/doc/9-plugins/*
Plugin usage, APIs, operational behavior, licensing, and release information were documented.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Tempo
  participant ParsePlanner
  participant PluginAPI
  participant PluginWorker
  participant SharedClock
  Tempo->>ParsePlanner: classify and prioritize era-bearing input
  ParsePlanner-->>Tempo: return normalized date
  Tempo->>PluginAPI: install community plugin
  PluginAPI->>PluginWorker: dispatch batch work when applicable
  PluginAPI->>SharedClock: start or read synchronized time when applicable
  PluginWorker-->>Tempo: return transformed values
  SharedClock-->>Tempo: return synchronized timestamp
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 55.56% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is too generic to describe the main changes, so it doesn't help a teammate understand the PR. Rename it to mention the primary theme, e.g. "Add era parsing and new plugin packages".
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/tidy

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
packages/tempo/test/engine/engine.era.test.ts (1)

3-62: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add test cases for dotted era notations.

The Token.era regex in support.default.ts is explicitly designed to handle dotted notation like b.c., b.c.e., a.d., and c.e.. However, this test suite lacks coverage for these variations. Adding tests for them would ensure that dotted eras are correctly parsed and would help catch regressions (such as the ERA_RE planner bug and the missing elements in the Guard array).

🧪 Proposed test additions

Consider adding tests similar to the following:

	test('parses year and era with dots (trailing b.c.)', () => {
		const t = new Tempo('200 b.c.');
		expect(t.yy).toBe(-199);
		expect(t.era).toMatch(/gregory-inverse/i);
	});

	test('parses year and era with dots (trailing a.d.)', () => {
		const t = new Tempo('1 a.d.');
		expect(t.yy).toBe(1);
		expect(t.era).toMatch(/gregory/i);
	});
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/tempo/test/engine/engine.era.test.ts` around lines 3 - 62, Add
dotted-era coverage to the “Era Parsing Engine” suite by testing trailing “b.c.”
and “a.d.” inputs through Tempo, asserting the expected astronomical year and
Gregorian or inverse-Gregorian era. Use the existing year/era test patterns and
include the dotted variants explicitly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/tempo-fns/doc/functions/scheduling/index.md`:
- Around line 38-46: Update the scheduling example to use Temporal.Instant or
Temporal.ZonedDateTime for the start, end, meetingStart, and meetingEnd values
passed to Interval, matching the supported boundary types and the README.md
example; do not use Temporal.PlainDateTime.

In `@packages/tempo/src/engine/engine.lexer.ts`:
- Around line 179-183: Update the BCE detection regex in the era-handling block
to match dotted abbreviations such as “b.c.” and “b.c.e.” in addition to
existing BCE/BC forms, preserving case-insensitive matching and the current
negative-year adjustment through yy.

In `@packages/tempo/src/engine/engine.planner.ts`:
- Line 6: Update ERA_RE in packages/tempo/src/engine/engine.planner.ts:6 to
match dotted and undotted era forms without accepting substrings; extend the
Guard array in packages/tempo/src/support/support.default.ts:197-198 with dotted
variants; and add regression cases for values such as “200 b.c.” and “1 a.d.” in
packages/tempo/test/engine/engine.era.test.ts:3-62.

In `@packages/tempo/src/module/module.format.ts`:
- Around line 292-296: Update the `dots` case in the token formatting switch for
`mer` and `era` so existing periods are removed from the evaluated `res` string
before inserting separators and the trailing period. Preserve the current dotted
output for values without periods while preventing consecutive dots for
locale-provided values such as `A.D.`.

In `@packages/tempo/src/support/support.default.ts`:
- Around line 197-198: Add the dotted era aliases b.c., b.c.e., a.d., and c.e.
to the guard list alongside the existing dotless era entries, so Guard permits
all forms already accepted by Token.era.

---

Nitpick comments:
In `@packages/tempo/test/engine/engine.era.test.ts`:
- Around line 3-62: Add dotted-era coverage to the “Era Parsing Engine” suite by
testing trailing “b.c.” and “a.d.” inputs through Tempo, asserting the expected
astronomical year and Gregorian or inverse-Gregorian era. Use the existing
year/era test patterns and include the dotted variants explicitly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 79d6f07f-de0b-44a5-b29b-2684c4364e6a

📥 Commits

Reviewing files that changed from the base of the PR and between 1dd8fb1 and 5cf7cab.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (22)
  • CHANGELOG.md
  • package.json
  • packages/library/package.json
  • packages/tempo-fns/doc/functions/scheduling/index.md
  • packages/tempo-fns/src/scheduling/README.md
  • packages/tempo/.vitepress/config.ts
  • packages/tempo/CHANGELOG.md
  • packages/tempo/doc/2-core-concepts/tempo.config.md
  • packages/tempo/doc/2-core-concepts/tempo.format.md
  • packages/tempo/doc/2-core-concepts/tempo.getters.md
  • packages/tempo/doc/2-core-concepts/tempo.parse.md
  • packages/tempo/doc/8-project-and-support/releases/v3.x.md
  • packages/tempo/package.json
  • packages/tempo/src/engine/engine.lexer.ts
  • packages/tempo/src/engine/engine.planner.ts
  • packages/tempo/src/module/module.format.ts
  • packages/tempo/src/support/support.default.ts
  • packages/tempo/src/support/support.symbol.ts
  • packages/tempo/src/tempo.class.ts
  • packages/tempo/test/core/static.test.ts
  • packages/tempo/test/discrete/format.test.ts
  • packages/tempo/test/engine/engine.era.test.ts

Comment thread packages/tempo-fns/doc/functions/scheduling/index.md Outdated
Comment thread packages/tempo/src/engine/engine.lexer.ts
Comment thread packages/tempo/src/engine/engine.planner.ts Outdated
Comment thread packages/tempo/src/module/module.format.ts
Comment thread packages/tempo/src/support/support.default.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/tempo/src/engine/engine.lexer.ts (1)

179-188: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Do not discard eras without an explicit year.
Inputs like 1 Jan BC still reach this path with yy unset; deleting groups["era"] lets fallbackYear turn them into the current/anchor year. Require a year for era-bearing dates, or reject them.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/tempo/src/engine/engine.lexer.ts` around lines 179 - 188, Update the
era handling in the lexer path around the isBCE check so an era-bearing date
without an explicit yy is not normalized using fallbackYear. Require yy before
applying BCE conversion and deleting groups["era"], or reject the input when yy
is unset; preserve existing behavior for dates that include a year.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/tempo/src/engine/engine.lexer.ts`:
- Around line 179-188: Update the era handling in the lexer path around the
isBCE check so an era-bearing date without an explicit yy is not normalized
using fallbackYear. Require yy before applying BCE conversion and deleting
groups["era"], or reject the input when yy is unset; preserve existing behavior
for dates that include a year.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6e69836b-9ddf-4721-98cd-7656f39e011a

📥 Commits

Reviewing files that changed from the base of the PR and between 5cf7cab and 1c3445f.

📒 Files selected for processing (7)
  • packages/tempo-fns/doc/functions/scheduling/index.md
  • packages/tempo/src/engine/engine.lexer.ts
  • packages/tempo/src/engine/engine.planner.ts
  • packages/tempo/src/module/module.format.ts
  • packages/tempo/src/support/support.default.ts
  • packages/tempo/src/tempo.version.ts
  • packages/tempo/test/engine/engine.era.test.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • packages/tempo-fns/doc/functions/scheduling/index.md
  • packages/tempo/test/engine/engine.era.test.ts
  • packages/tempo/src/module/module.format.ts
  • packages/tempo/src/support/support.default.ts
  • packages/tempo/src/engine/engine.planner.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (10)
packages/plugins/snap/src/index.ts-64-64 (1)

64-64: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Include all lower-order fields in fractional values.

For example, snapping 14:00:00.500 upward by one hour currently remains at 14:00, because milliseconds are omitted. Hours must include milliseconds/microseconds/nanoseconds; minutes and seconds have equivalent omissions.

Also applies to: 77-77, 90-90

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/snap/src/index.ts` at line 64, Update the fractional time
calculations in the snapping logic, including the expressions at the referenced
hour, minute, and second calculations, to include every available lower-order
field. Ensure hours incorporate minutes, seconds, milliseconds, microseconds,
and nanoseconds; minutes incorporate seconds and finer units; and seconds
incorporate milliseconds, microseconds, and nanoseconds, preserving the existing
snapping behavior otherwise.
packages/plugins/snap/src/index.ts-40-52 (1)

40-52: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Reject non-finite snap steps.

NaN and Infinity pass the zero check and propagate invalid values into add. Validate the raw step before taking its absolute value.

Proposed fix
 			const key = providedKeys[0];
 			let step = opts[key as keyof SnapOptions] as number;

-			if (step === 0) {
-				const err = new Error(`Snap step cannot be zero.`);
+			if (!Number.isFinite(step) || step === 0) {
+				const err = new Error(`Snap step must be a finite, non-zero number.`);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/snap/src/index.ts` around lines 40 - 52, Update the
snap-step validation in the shown method to reject any non-finite raw step,
including NaN and Infinity, before calling Math.abs. Reuse the existing
catch-and-return or throw error flow for invalid values, while preserving valid
nonzero step handling.
packages/plugins/snap/test/snap.test.ts-6-8 (1)

6-8: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Register the plugin outside an individual test.

Later tests depend on this side effect and fail when run alone with a test-name filter. Use beforeAll or suite-level initialization.

Proposed fix
+beforeAll(() => {
+	Tempo.extend(MutateModule, FormatModule, SnapPlugin);
+});
+
 describe('Snap Plugin', () => {
 	it('should snap to the nearest 15 minutes', () => {
-		Tempo.extend(MutateModule, FormatModule, SnapPlugin);
-
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/snap/test/snap.test.ts` around lines 6 - 8, Move the
Tempo.extend(MutateModule, FormatModule, SnapPlugin) registration out of the
individual test and into suite-level initialization such as beforeAll within the
“Snap Plugin” describe block, so every test receives the plugin setup even when
run alone.
packages/plugins/bin/repl.mts-44-45 (1)

44-45: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use pathToFileURL for the dynamic import. file://${indexPath} breaks on Windows drive-letter paths; pathToFileURL(indexPath).href is the cross-platform form.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/bin/repl.mts` around lines 44 - 45, Update the dynamic
import in the module-loading flow to use pathToFileURL(indexPath).href instead
of manually constructing a file:// URL, ensuring Windows drive-letter and Linux
paths are handled correctly.
packages/plugins/tsup.shared.ts-58-64 (1)

58-64: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Make the injected package version authoritative.

...config currently overwrites the generated version, allowing stale source metadata to defeat auto-injection.

Proposed fix
-contents += `export const definePlugin = (config) => originalPlugin({ version: "${version}", ...config });\n`;
-contents += `export const defineTerm = (config) => originalTerm({ version: "${version}", ...config });\n`;
+contents += `export const definePlugin = (config) => originalPlugin({ ...config, version: "${version}" });\n`;
+contents += `export const defineTerm = (config) => originalTerm({ ...config, version: "${version}" });\n`;
...
-contents += `export const definePlugin = (config) => originalPlugin({ version: "${version}", ...config });\n`;
+contents += `export const definePlugin = (config) => originalPlugin({ ...config, version: "${version}" });\n`;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/tsup.shared.ts` around lines 58 - 64, Update the generated
definePlugin and defineTerm wrappers in the isApi branch so the injected version
remains authoritative: spread config before assigning version. Apply the same
ordering to the non-API definePlugin wrapper, preserving the existing imports
and wrapper behavior.
packages/plugins/astro/src/index.ts-7-24 (1)

7-24: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Declare the returned strict field in TempoTermRegistry.

The scoped result exposes strict, but the public astronomy type omits it, causing valid consumer access to fail type checking.

Proposed fix
 			end: Tempo;
+			strict?: 'Vernal' | 'Summer' | 'Autumnal' | 'Winter';
 		}

Also applies to: 161-164

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/astro/src/index.ts` around lines 7 - 24, Update the public
astronomy result type in TempoTermRegistry to declare the returned strict field,
matching the scoped result shape and allowing consumers to access it without
type errors. Apply the same addition to the corresponding astronomy type
declaration referenced by the comment.
packages/plugins/batch/test/batch.test.ts-15-16 (1)

15-16: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Incorrect arguments passed to Tempo.batch.

The batch function is defined in packages/plugins/batch/src/index.ts with the signature batch(epochs: number[], operation: string, options?: BatchOptions). Calling it with two arguments where the second is an object (e.g., { weeks: 1 }) omits the required operation string and will result in runtime errors once this test is enabled.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/batch/test/batch.test.ts` around lines 15 - 16, Update the
Tempo.batch invocation in the batch test to pass the required operation string
as the second argument and move the `{ weeks: 1 }` value into the optional
options argument. Preserve the existing epochs input and ensure the call matches
the signature defined by batch.
packages/plugins/batch/test/benchmark.ts-32-33 (1)

32-33: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Incorrect arguments passed to Tempo.batch.

The TS ignore hides the fact that Tempo.batch is being called incorrectly. The batch method requires an operation string as its second argument (e.g., 'add'), but here an object is passed instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/batch/test/benchmark.ts` around lines 32 - 33, Update the
Tempo.batch invocation in the benchmark to pass the required operation string as
its second argument, followed by the existing options object in the correct
parameter position. Remove the `@ts-ignore` directive so TypeScript validates the
corrected call.
packages/plugins/sync/package.json-4-4 (1)

4-4: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove private: true if this package should be published.

This plugin is configured with publishConfig, prepublishOnly scripts, and plan: "community", which strongly implies it is intended to be published to npm. However, the private: true flag will completely prevent npm publish from executing.

If publishing is intended, remove the private field.

🛠️ Proposed fix
   "version": "1.0.0",
-  "private": true,
   "description": "Tempo community plugin providing lock-free, highly precise cross-thread synchronization via SharedArrayBuffer and Atomics.",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/sync/package.json` at line 4, Remove the private field from
the sync package manifest so its existing publishConfig, prepublishOnly scripts,
and community plan can support npm publication.
packages/plugins/sync/src/AtomicClock.ts-27-28 (1)

27-28: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix unit discrepancy in the comment.

The comment indicates the buffer stores the epoch in milliseconds, but the #tick() implementation below clearly stores epoch nanoseconds. Since this buffer is designed to be shared with worker threads, the unit must be accurately documented to prevent downstream consumers from misinterpreting the time.

📝 Proposed fix
-		// Allocate 8 bytes for a 64-bit integer (epoch in milliseconds)
+		// Allocate 8 bytes for a 64-bit integer (epoch in nanoseconds)
 		this.#buffer = new SharedArrayBuffer(8);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/sync/src/AtomicClock.ts` around lines 27 - 28, Update the
allocation comment in the AtomicClock constructor to state that the 64-bit
integer stores epoch nanoseconds, matching the unit written by `#tick`().
🧹 Nitpick comments (1)
packages/plugins/batch/package.json (1)

21-21: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use a cross-platform command for file removal.

The rm -rf command is Unix-specific and will fail on Windows environments (e.g., standard Command Prompt or PowerShell). Consider using a cross-platform utility like rimraf, shx rm -rf, or a short Node.js script using fs.rmSync to ensure the build script is platform-agnostic.

♻️ Proposed fix using `fs`
-    "postbuild": "rm -rf dist/src",
+    "postbuild": "node -e \"fs.rmSync('dist/src', { recursive: true, force: true })\"",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/batch/package.json` at line 21, Update the package.json
postbuild script to remove dist/src using a cross-platform deletion utility or
Node.js fs.rmSync implementation instead of the Unix-specific rm -rf command,
while preserving the existing cleanup behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/plugins/batch/CHANGELOG.md`:
- Line 8: Align the batch plugin’s licensing classification across both affected
sites: update the release description in packages/plugins/batch/CHANGELOG.md
lines 8-8 from “premium” to the confirmed classification, and adjust the usage
and token requirements in packages/plugins/batch/doc/index.md lines 54-58 to
match it. Use one authoritative classification consistently in both documents.

In `@packages/plugins/batch/src/BatchOrchestrator.ts`:
- Around line 18-21: Update BatchOrchestrator’s public options and execution
paths so formatting and rehydrate are only exposed when fully supported: route
nonnumeric formatting operations through postMessage instead of Float64Array,
and apply rehydrate consistently in both SharedArrayBuffer and fallback paths;
otherwise remove these options and their documentation until implemented.
- Around line 35-40: Validate options.threads in BatchOrchestrator.transform
before calculating chunkSize, rejecting values that are non-positive or
non-integer while preserving the default CPU-count behavior when omitted. Ensure
invalid thread counts fail before worker creation or either execution path.

In `@packages/plugins/batch/src/worker.ts`:
- Around line 20-22: In both the sab and postMessage loops in worker.ts, update
the Tempo handling so each `(t as any).add(operation)` result is assigned to a
variable, then read that result’s epoch.ms for outputView instead of reading
from the original immutable Tempo instance.

In `@packages/plugins/bin/repl.mts`:
- Around line 22-25: Update the mock revocation setup around mockToken so it
runs only when the explicit test-mode variable is enabled, not merely when
TEMPO_LICENSE_KEY is supplied. Preserve the existing default assignments for
TEMPO_REVOCATION_URL and TEMPO_REVOCATION_JWS within that test-mode branch.
- Around line 31-33: Update the packagesDir path used by the plugin discovery
flow in the REPL script so it resolves to the sibling packages directory from
packages/plugins/bin, not packages/plugins/packages. Keep the existing
fs.readdirSync discovery behavior unchanged after correcting the path.

In `@packages/plugins/bin/tsconfig.json`:
- Line 2: Update the extends path in the plugins bin tsconfig to reference
../../tsconfig.base.json so it resolves to the repository base configuration
instead of the missing packages/plugins path.

In `@packages/plugins/finance/package.json`:
- Around line 28-34: Align the `@magmacomputing/tempo` entry in devDependencies
with its peerDependencies version by updating it from ^3.6.1 to at least ^3.8.0,
ensuring local development and tests use a compatible release.

In `@packages/plugins/finance/src/index.ts`:
- Around line 27-34: Update the Tempo module augmentation for the finance
property so it is not required on every Tempo instance. Prefer marking finance
optional, or define and export a plugin-specific TempoWithFinance type, while
preserving the existing finance members for instances extended with
FinancePlugin.

In `@packages/plugins/sync/test/sync.test.ts`:
- Around line 7-29: Ensure the clock created in the test is always stopped by
wrapping the test body after AtomicClock initialization in a try/finally block
and moving clock.stop() into the finally clause. Preserve the existing
assertions and cleanup behavior while guaranteeing cleanup when any assertion or
awaited operation fails.

In `@packages/plugins/tsup.shared.ts`:
- Around line 81-94: Update the IIFE globals mapping and resolver around the
globals object and build.onResolve so `@magmacomputing/tempo/plugin` resolves to
its intended window global instead of window.undefined. Add an explicit mapping
for this specifier, or narrow the resolver filter to only mapped specifiers
while preserving the existing mappings.
- Around line 39-42: Update the auto-injected-version branch in the
build.onResolve handler for `@magmacomputing/tempo/plugin` imports to continue
through the remaining resolvers instead of returning external: true. Preserve
the resolver ordering so license-alias runs before iife-globals, while
preventing the resolver cycle without leaving a runtime import or bypassing the
license wrapper.

---

Minor comments:
In `@packages/plugins/astro/src/index.ts`:
- Around line 7-24: Update the public astronomy result type in TempoTermRegistry
to declare the returned strict field, matching the scoped result shape and
allowing consumers to access it without type errors. Apply the same addition to
the corresponding astronomy type declaration referenced by the comment.

In `@packages/plugins/batch/test/batch.test.ts`:
- Around line 15-16: Update the Tempo.batch invocation in the batch test to pass
the required operation string as the second argument and move the `{ weeks: 1 }`
value into the optional options argument. Preserve the existing epochs input and
ensure the call matches the signature defined by batch.

In `@packages/plugins/batch/test/benchmark.ts`:
- Around line 32-33: Update the Tempo.batch invocation in the benchmark to pass
the required operation string as its second argument, followed by the existing
options object in the correct parameter position. Remove the `@ts-ignore`
directive so TypeScript validates the corrected call.

In `@packages/plugins/bin/repl.mts`:
- Around line 44-45: Update the dynamic import in the module-loading flow to use
pathToFileURL(indexPath).href instead of manually constructing a file:// URL,
ensuring Windows drive-letter and Linux paths are handled correctly.

In `@packages/plugins/snap/src/index.ts`:
- Line 64: Update the fractional time calculations in the snapping logic,
including the expressions at the referenced hour, minute, and second
calculations, to include every available lower-order field. Ensure hours
incorporate minutes, seconds, milliseconds, microseconds, and nanoseconds;
minutes incorporate seconds and finer units; and seconds incorporate
milliseconds, microseconds, and nanoseconds, preserving the existing snapping
behavior otherwise.
- Around line 40-52: Update the snap-step validation in the shown method to
reject any non-finite raw step, including NaN and Infinity, before calling
Math.abs. Reuse the existing catch-and-return or throw error flow for invalid
values, while preserving valid nonzero step handling.

In `@packages/plugins/snap/test/snap.test.ts`:
- Around line 6-8: Move the Tempo.extend(MutateModule, FormatModule, SnapPlugin)
registration out of the individual test and into suite-level initialization such
as beforeAll within the “Snap Plugin” describe block, so every test receives the
plugin setup even when run alone.

In `@packages/plugins/sync/package.json`:
- Line 4: Remove the private field from the sync package manifest so its
existing publishConfig, prepublishOnly scripts, and community plan can support
npm publication.

In `@packages/plugins/sync/src/AtomicClock.ts`:
- Around line 27-28: Update the allocation comment in the AtomicClock
constructor to state that the 64-bit integer stores epoch nanoseconds, matching
the unit written by `#tick`().

In `@packages/plugins/tsup.shared.ts`:
- Around line 58-64: Update the generated definePlugin and defineTerm wrappers
in the isApi branch so the injected version remains authoritative: spread config
before assigning version. Apply the same ordering to the non-API definePlugin
wrapper, preserving the existing imports and wrapper behavior.

---

Nitpick comments:
In `@packages/plugins/batch/package.json`:
- Line 21: Update the package.json postbuild script to remove dist/src using a
cross-platform deletion utility or Node.js fs.rmSync implementation instead of
the Unix-specific rm -rf command, while preserving the existing cleanup
behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 84918005-7745-4b0f-9cae-819c9e80ffcc

📥 Commits

Reviewing files that changed from the base of the PR and between 1c3445f and ce4c948.

⛔ Files ignored due to path filters (11)
  • package-lock.json is excluded by !**/package-lock.json
  • packages/plugins/astro/.turbo/turbo-build.log is excluded by !**/*.log
  • packages/plugins/astro/.turbo/turbo-test.log is excluded by !**/*.log
  • packages/plugins/batch/.turbo/turbo-build.log is excluded by !**/*.log
  • packages/plugins/batch/.turbo/turbo-test.log is excluded by !**/*.log
  • packages/plugins/finance/.turbo/turbo-build.log is excluded by !**/*.log
  • packages/plugins/finance/.turbo/turbo-test.log is excluded by !**/*.log
  • packages/plugins/snap/.turbo/turbo-build.log is excluded by !**/*.log
  • packages/plugins/snap/.turbo/turbo-test.log is excluded by !**/*.log
  • packages/plugins/sync/.turbo/turbo-build.log is excluded by !**/*.log
  • packages/plugins/sync/.turbo/turbo-test.log is excluded by !**/*.log
📒 Files selected for processing (78)
  • package.json
  • packages/plugins/astro/CHANGELOG.md
  • packages/plugins/astro/LICENSE
  • packages/plugins/astro/README.md
  • packages/plugins/astro/doc/index.md
  • packages/plugins/astro/package.json
  • packages/plugins/astro/src/index.ts
  • packages/plugins/astro/test/astro.test.ts
  • packages/plugins/astro/test/tsconfig.json
  • packages/plugins/astro/tsconfig.json
  • packages/plugins/astro/tsup.config.ts
  • packages/plugins/batch/CHANGELOG.md
  • packages/plugins/batch/LICENSE
  • packages/plugins/batch/README.md
  • packages/plugins/batch/doc/index.md
  • packages/plugins/batch/package.json
  • packages/plugins/batch/src/BatchOrchestrator.ts
  • packages/plugins/batch/src/index.ts
  • packages/plugins/batch/src/worker.ts
  • packages/plugins/batch/test/batch.test.ts
  • packages/plugins/batch/test/benchmark.ts
  • packages/plugins/batch/test/polyfill.ts
  • packages/plugins/batch/test/tsconfig.json
  • packages/plugins/batch/tsconfig.json
  • packages/plugins/batch/tsup.config.ts
  • packages/plugins/bin/repl.mts
  • packages/plugins/bin/temporal-polyfill.mts
  • packages/plugins/bin/tsconfig.json
  • packages/plugins/finance/README.md
  • packages/plugins/finance/doc/index.md
  • packages/plugins/finance/package.json
  • packages/plugins/finance/src/index.ts
  • packages/plugins/finance/test/finance.test.ts
  • packages/plugins/finance/test/tsconfig.json
  • packages/plugins/finance/tsconfig.json
  • packages/plugins/finance/tsup.config.ts
  • packages/plugins/snap/CHANGELOG.md
  • packages/plugins/snap/LICENSE
  • packages/plugins/snap/README.md
  • packages/plugins/snap/doc/index.md
  • packages/plugins/snap/package.json
  • packages/plugins/snap/src/index.ts
  • packages/plugins/snap/test/snap.test.ts
  • packages/plugins/snap/test/tsconfig.json
  • packages/plugins/snap/tsconfig.json
  • packages/plugins/snap/tsup.config.ts
  • packages/plugins/sync/CHANGELOG.md
  • packages/plugins/sync/LICENSE
  • packages/plugins/sync/README.md
  • packages/plugins/sync/doc/index.md
  • packages/plugins/sync/package.json
  • packages/plugins/sync/src/AtomicClock.ts
  • packages/plugins/sync/src/AtomicReader.ts
  • packages/plugins/sync/src/index.ts
  • packages/plugins/sync/test/sync.test.ts
  • packages/plugins/sync/test/tsconfig.json
  • packages/plugins/sync/tsconfig.json
  • packages/plugins/sync/tsup.config.ts
  • packages/plugins/ticker/doc/index.md
  • packages/plugins/tsconfig.shared.json
  • packages/plugins/tsup.shared.ts
  • packages/tempo/bin/harvest-plugins.mjs
  • packages/tempo/doc/2-core-concepts/tempo.format.md
  • packages/tempo/doc/2-core-concepts/tempo.getters.md
  • packages/tempo/doc/2-core-concepts/tempo.layout.md
  • packages/tempo/doc/8-project-and-support/releases/v3.x.md
  • packages/tempo/doc/9-plugins/astro.md
  • packages/tempo/doc/9-plugins/batch.md
  • packages/tempo/doc/9-plugins/finance.md
  • packages/tempo/doc/9-plugins/snap.md
  • packages/tempo/doc/9-plugins/sync.md
  • packages/tempo/doc/9-plugins/ticker.md
  • packages/tempo/package.json
  • packages/tempo/src/engine/engine.lexer.ts
  • packages/tempo/src/module/module.format.ts
  • packages/tempo/src/tempo.class.ts
  • packages/tempo/test/core/static.test.ts
  • vitest.config.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • packages/tempo/doc/2-core-concepts/tempo.getters.md
  • packages/tempo/test/core/static.test.ts
  • packages/tempo/src/engine/engine.lexer.ts
  • packages/tempo/package.json
  • packages/tempo/doc/2-core-concepts/tempo.format.md

Comment thread packages/plugins/batch/CHANGELOG.md Outdated
Comment thread packages/plugins/batch/src/BatchOrchestrator.ts Outdated
Comment thread packages/plugins/batch/src/BatchOrchestrator.ts
Comment thread packages/plugins/batch/src/worker.ts Outdated
Comment thread packages/plugins/bin/repl.mts Outdated
Comment thread packages/plugins/finance/package.json
Comment thread packages/plugins/finance/src/index.ts
Comment thread packages/plugins/sync/test/sync.test.ts
Comment thread packages/plugins/tsup.shared.ts Outdated
Comment thread packages/plugins/tsup.shared.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/plugins/astro/src/index.ts (1)

40-53: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Complete the season calculation. This only uses the mean JDE polynomial; the Meeus approximation also adds higher-order terms and periodic corrections. If you intend to keep this approximation, document/enforce the supported year range and add regression fixtures for boundary years.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/astro/src/index.ts` around lines 40 - 53, Update
calculateAstroMoment to complete the Meeus seasonal calculation by including the
required higher-order terms and periodic corrections for each ASTRO quarter
before converting JDE to epoch milliseconds. If retaining the current
mean-polynomial approximation instead, document and enforce its supported year
range and add regression fixtures covering the range boundaries.
🧹 Nitpick comments (3)
packages/tempo/rollup.config.js (2)

104-119: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Use async transform for better build performance.

Make the hook async and await the transform promise to avoid blocking the event loop.

⚡ Proposed refactor for the transform hook
-				transform(code, id) {
+				async transform(code, id) {
					if (!id.endsWith('.ts')) return null;
					
					try {
-						const result = transformSync(code, {
+						const result = await transform(code, {
							loader: 'ts',
							target: 'esnext',
							format: 'esm',
							sourcemap: false
						});

						return {
							code: result.code,
							map: null
						};
					} catch (err) {
						this.error(`esbuild compilation failed in ${id}:\n${err.message}`);
					}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/tempo/rollup.config.js` around lines 104 - 119, Update the transform
hook containing transformSync to be async, replace the synchronous transform
call with the asynchronous transform API, and await its promise before returning
the generated code and map. Preserve the existing options and error handling in
the hook.

7-7: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Use async transform for better build performance.

Rollup calls the transform hook concurrently for multiple modules. Using transformSync blocks the Node.js event loop, which prevents Rollup from processing files in parallel. Switching to esbuild's asynchronous transform API allows for concurrent transpilation and can significantly speed up the build.

⚡ Proposed refactor to use the async API
-import { transformSync } from 'esbuild';
+import { transform } from 'esbuild';
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/tempo/rollup.config.js` at line 7, Replace the synchronous esbuild
transform import and usage with the asynchronous transform API in the Rollup
transform hook, updating the hook to await the returned result while preserving
the existing transpilation options and output handling.
packages/plugins/batch/src/BatchOrchestrator.ts (1)

103-104: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove stale rehydrate comment.

Since rehydrate logic has been successfully extracted to the plugin layer (index.ts) and is no longer part of this method's responsibility, this comment is obsolete and can be removed.

♻️ Proposed refactor
-		// (Optional) Rehydrate logic would go here if options.rehydrate === true
		return result;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/plugins/batch/src/BatchOrchestrator.ts` around lines 103 - 104,
Remove the obsolete rehydrate comment immediately before the return statement in
BatchOrchestrator’s method, leaving the existing result return and plugin-layer
rehydrate behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/magma-cli/index.js`:
- Around line 7-16: Update the `command === 'rm'` deletion loop so failures
caught around `fs.rmSync` are rethrown or otherwise propagated after logging,
causing `magma-cli rm` to exit nonzero and preventing subsequent `&&` build
steps from running; preserve the existing per-path removal behavior and error
context.

In `@packages/plugins/batch/src/BatchOrchestrator.ts`:
- Around line 30-31: Add rehydrate?: boolean to the BatchOptions interface used
by BatchOrchestrator.transform, while retaining the existing threads?: number
property, so index.ts can safely access options?.rehydrate without TypeScript
errors.

In `@packages/plugins/batch/test/batch.test.ts`:
- Around line 15-18: Update the batch invocation in the test scaffold to pass a
valid mutation string such as “+1w” as the operation argument, while preserving
the existing epochs input and options object. Use the batch call around
Tempo.batch; do not pass “add” because the worker forwards the operation
directly to t.add(operation).

In `@packages/tempo/README.md`:
- Around line 20-29: Replace the inline-styled flex container around the badges
with a <p align="center"> wrapper, preserving all existing badge links and
images while removing unsupported flexbox and gap styling.

---

Outside diff comments:
In `@packages/plugins/astro/src/index.ts`:
- Around line 40-53: Update calculateAstroMoment to complete the Meeus seasonal
calculation by including the required higher-order terms and periodic
corrections for each ASTRO quarter before converting JDE to epoch milliseconds.
If retaining the current mean-polynomial approximation instead, document and
enforce its supported year range and add regression fixtures covering the range
boundaries.

---

Nitpick comments:
In `@packages/plugins/batch/src/BatchOrchestrator.ts`:
- Around line 103-104: Remove the obsolete rehydrate comment immediately before
the return statement in BatchOrchestrator’s method, leaving the existing result
return and plugin-layer rehydrate behavior unchanged.

In `@packages/tempo/rollup.config.js`:
- Around line 104-119: Update the transform hook containing transformSync to be
async, replace the synchronous transform call with the asynchronous transform
API, and await its promise before returning the generated code and map. Preserve
the existing options and error handling in the hook.
- Line 7: Replace the synchronous esbuild transform import and usage with the
asynchronous transform API in the Rollup transform hook, updating the hook to
await the returned result while preserving the existing transpilation options
and output handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3d34490f-1a4e-488d-a3b1-616d6263d976

📥 Commits

Reviewing files that changed from the base of the PR and between ce4c948 and b4cc6d2.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (64)
  • packages/magma-cli/README.md
  • packages/magma-cli/index.js
  • packages/magma-cli/package.json
  • packages/plugins/astro/README.md
  • packages/plugins/astro/doc/index.md
  • packages/plugins/astro/package.json
  • packages/plugins/astro/src/index.ts
  • packages/plugins/astro/test/tsconfig.json
  • packages/plugins/astro/tsconfig.json
  • packages/plugins/batch/CHANGELOG.md
  • packages/plugins/batch/README.md
  • packages/plugins/batch/doc/index.md
  • packages/plugins/batch/package.json
  • packages/plugins/batch/src/BatchOrchestrator.ts
  • packages/plugins/batch/src/worker.ts
  • packages/plugins/batch/test/batch.test.ts
  • packages/plugins/batch/test/benchmark.ts
  • packages/plugins/batch/test/tsconfig.json
  • packages/plugins/batch/tsconfig.json
  • packages/plugins/bin/repl.mts
  • packages/plugins/bin/tsconfig.json
  • packages/plugins/finance/CHANGELOG.md
  • packages/plugins/finance/LICENSE
  • packages/plugins/finance/README.md
  • packages/plugins/finance/doc/index.md
  • packages/plugins/finance/package.json
  • packages/plugins/finance/test/tsconfig.json
  • packages/plugins/finance/tsconfig.json
  • packages/plugins/snap/README.md
  • packages/plugins/snap/doc/index.md
  • packages/plugins/snap/package.json
  • packages/plugins/snap/src/index.ts
  • packages/plugins/snap/test/snap.test.ts
  • packages/plugins/snap/test/tsconfig.json
  • packages/plugins/snap/tsconfig.json
  • packages/plugins/snap/tsup.config.ts
  • packages/plugins/sync/README.md
  • packages/plugins/sync/doc/index.md
  • packages/plugins/sync/package.json
  • packages/plugins/sync/src/AtomicClock.ts
  • packages/plugins/sync/test/sync.test.ts
  • packages/plugins/sync/test/tsconfig.json
  • packages/plugins/sync/tsconfig.json
  • packages/plugins/sync/tsup.config.ts
  • packages/plugins/ticker/README.md
  • packages/plugins/ticker/doc/index.md
  • packages/plugins/tsconfig.test.json
  • packages/plugins/tsup.shared.ts
  • packages/tempo-fns/package.json
  • packages/tempo/.vitepress/config.ts
  • packages/tempo/.vitepress/theme/components/CatalogList.vue
  • packages/tempo/README.md
  • packages/tempo/archive/tempo.api.md
  • packages/tempo/archive/tempo.types.md
  • packages/tempo/doc/1-getting-started/tempo.cookbook.md
  • packages/tempo/doc/4-advanced-reference/tempo.ticker.md
  • packages/tempo/doc/9-plugins/astro.md
  • packages/tempo/doc/9-plugins/batch.md
  • packages/tempo/doc/9-plugins/finance.md
  • packages/tempo/doc/9-plugins/snap.md
  • packages/tempo/doc/9-plugins/sync.md
  • packages/tempo/doc/9-plugins/ticker.md
  • packages/tempo/package.json
  • packages/tempo/rollup.config.js
💤 Files with no reviewable changes (8)
  • packages/plugins/batch/tsconfig.json
  • packages/plugins/batch/package.json
  • packages/tempo/archive/tempo.types.md
  • packages/plugins/astro/package.json
  • packages/plugins/snap/package.json
  • packages/plugins/sync/package.json
  • packages/tempo/doc/4-advanced-reference/tempo.ticker.md
  • packages/tempo/archive/tempo.api.md
🚧 Files skipped from review as they are similar to previous changes (34)
  • packages/plugins/finance/tsconfig.json
  • packages/plugins/batch/CHANGELOG.md
  • packages/plugins/astro/test/tsconfig.json
  • packages/plugins/sync/tsup.config.ts
  • packages/tempo/doc/9-plugins/finance.md
  • packages/plugins/finance/doc/index.md
  • packages/plugins/sync/test/tsconfig.json
  • packages/plugins/batch/test/tsconfig.json
  • packages/plugins/snap/README.md
  • packages/plugins/bin/tsconfig.json
  • packages/plugins/finance/test/tsconfig.json
  • packages/plugins/snap/test/tsconfig.json
  • packages/plugins/batch/doc/index.md
  • packages/plugins/snap/tsup.config.ts
  • packages/plugins/batch/README.md
  • packages/plugins/finance/README.md
  • packages/plugins/finance/package.json
  • packages/plugins/sync/README.md
  • packages/plugins/sync/test/sync.test.ts
  • packages/tempo/doc/9-plugins/snap.md
  • packages/plugins/sync/src/AtomicClock.ts
  • packages/plugins/snap/test/snap.test.ts
  • packages/tempo/doc/9-plugins/batch.md
  • packages/plugins/batch/src/worker.ts
  • packages/plugins/astro/doc/index.md
  • packages/plugins/astro/README.md
  • packages/tempo/doc/9-plugins/sync.md
  • packages/plugins/ticker/doc/index.md
  • packages/plugins/snap/doc/index.md
  • packages/plugins/batch/test/benchmark.ts
  • packages/plugins/sync/doc/index.md
  • packages/tempo/doc/9-plugins/astro.md
  • packages/plugins/snap/src/index.ts
  • packages/tempo/doc/9-plugins/ticker.md

Comment thread packages/magma-cli/index.js
Comment thread packages/plugins/batch/src/BatchOrchestrator.ts
Comment thread packages/plugins/batch/test/batch.test.ts
Comment thread packages/tempo/README.md Outdated
@magmacomputing
magmacomputing merged commit ec6cd97 into main Jul 15, 2026
2 checks passed
@magmacomputing
magmacomputing deleted the feature/tidy branch July 15, 2026 21:08
@coderabbitai coderabbitai Bot mentioned this pull request Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant