Skip to content

foundation: manifesto, origin, governance templates, and Phase 0 planning docs#265

Merged
EmersonBraun merged 4 commits intomainfrom
foundation/manifesto-origin-templates
Apr 14, 2026
Merged

foundation: manifesto, origin, governance templates, and Phase 0 planning docs#265
EmersonBraun merged 4 commits intomainfrom
foundation/manifesto-origin-templates

Conversation

@EmersonBraun
Copy link
Copy Markdown
Owner

Summary

First concrete step of Phase 0 — Foundation Hardening (PRD #211). Establishes narrative, governance baseline, and planning documents that unblock all subsequent work.

What's included

Narrative foundations (root)

  • MANIFESTO.md — 10 non-negotiable principles (core <10KB, plug-and-play, interop, zero lock-in, agent-first, docs-as-product, TS rigor) plus explicit "what we'll never/always do" lists
  • ORIGIN.md — first-person origin story explaining why AgentsKit exists and the bet it's making

Governance (.github/)

  • CODEOWNERS — per-package ownership with maintainer fallback (extensible as team grows)
  • ISSUE_TEMPLATE/rfc.yml — structured RFC template with Manifesto-alignment checklist
  • ISSUE_TEMPLATE/docs.yml — dedicated docs issue template
  • ISSUE_TEMPLATE/config.yml — disables blank issues, routes questions to Discussions
  • PULL_REQUEST_TEMPLATE.md — expanded with type, RFC reference, manifesto checklist, DoD aligned with Phase 0 gates

Planning documents (docs/)

Why this first

These documents are zero-code dependencies for everything else in Phase 0:

Test plan

  • MANIFESTO.md and ORIGIN.md render correctly on GitHub
  • CODEOWNERS validated by GitHub (no syntax errors)
  • New issue templates appear when opening a new issue
  • PR template used by this very PR
  • No code changes — pure documentation
  • Reviewer: confirm principles in MANIFESTO reflect project intent
  • Reviewer: confirm ORIGIN tone is authentic

Follow-ups (separate PRs)

Refs #113 #211 #264

Adds Phase 0 narrative and governance baseline:

- MANIFESTO.md: 10 non-negotiable principles (core <10KB, plug-and-play,
  interop, zero lock-in, agent-first, docs-as-product, TS rigor)
- ORIGIN.md: first-person origin story (author placeholders to personalize)
- .github/CODEOWNERS: per-package ownership with maintainer fallback
- .github/ISSUE_TEMPLATE/rfc.yml: RFC template for non-trivial proposals
- .github/ISSUE_TEMPLATE/docs.yml: documentation issue template
- .github/ISSUE_TEMPLATE/config.yml: disable blank issues, link Discussions
- .github/PULL_REQUEST_TEMPLATE.md: expanded with RFC reference,
  manifesto checklist, and DoD aligned with Phase 0 gates
- docs/ROADMAP-PRD.md: master PRD (97 stories roadmap)
- docs/PHASE-0-FOUNDATION-PRD.md: Phase 0 PRD (52 stories)
- docs/PHASE-0-EXECUTION-PLAN.md: tactical P0/P1/P2 plan
- docs/MASTER-EXECUTION-PLAN.md: 149-issue sequencing across 27 sprints

Refs #113 #211 #264
@EmersonBraun
Copy link
Copy Markdown
Owner Author

Test fix update

CI test failure was a pre-existing regression on main (not introduced by this PR):

  • ink was bumped ^6.8.0^7.0.0 on main, but ink-testing-library@4 (latest) doesn't route stdin through ink v7's new raw-mode pipeline, so useInput callbacks never fire under test.
  • Verified by running the same tests on main — they fail identically.

What I did

  • Skipped the 5 affected tests with it.skip + TODO(#266) comments linking to the tracking issue.
  • Component code is untouched — only test harness is bypassed.

Verification

pnpm test (all 22 tasks) now passes locally. ink package reports: 16 passed | 5 skipped.

Tracking

This is medium-priority: the terminal components work correctly in real use; only automated coverage of keyboard-input scenarios is temporarily reduced.

@EmersonBraun
Copy link
Copy Markdown
Owner Author

Tests fixed (no regressions)

Updated approach: instead of skipping, rewrote the 5 failing tests to work around the ink@7 / ink-testing-library@4 incompat properly.

Root cause

Ink v7 moved useInput off direct stdin listening onto an internal EventEmitter that routes through a readable-event input parser. ink-testing-library@4's mocked Stdin emits 'readable' but the pipeline no longer picks up the handler in a way that triggers useInput. Verified by writing a direct repro outside vitest — real stdin.write(...) on the library mock never fires useInput under ink 7.

Fix

Mock ink's useInput in test files only: capture the handler, then drive it directly with the same (input, key) shape ink 7 passes. This tests the actual component logic (setInput/send/guards) without depending on the broken harness.

Results

  • @agentskit/ink: 23 passed, 0 skipped (was 16 passed, 5 skipped)
  • All 22 workspace test tasks green
  • Two new coverage cases added (ctrl and meta key combos ignored)

Issue #266 closed by this commit.

Unrelated: docs build

@agentskit/docs (Docusaurus 3.9 + Node 25) also fails on main with mdxCrossCompilerCache error — pre-existing, not touched by this PR. Will be resolved naturally by the Fumadocs migration (#238).

@EmersonBraun EmersonBraun merged commit 789d40f into main Apr 14, 2026
1 check failed
@EmersonBraun EmersonBraun deleted the foundation/manifesto-origin-templates branch April 14, 2026 17:11
EmersonBraun added a commit that referenced this pull request Apr 14, 2026
Reframes the README from a generic 'complete toolkit' pitch to an
opinionated, honest, story-driven entry point.

What's new:
- Tagline 'The agent toolkit JavaScript actually deserves' — opinion,
  not buzzwords
- 'Why this exists' section linking to ORIGIN.md and MANIFESTO.md
- 'Before and after' section showing the typical cobbled stack vs
  AgentsKit's two-import equivalent
- Honest 'When you should NOT use AgentsKit' section — directs people
  to single-OpenAI-call, Vercel AI SDK for chat-only, Python frameworks,
  mature observability platforms, or pre-1.0 caution
- Comparison table now includes formal contracts row and edge-readiness
- Stability tier column on the ecosystem table
- Architecture and contracts section linking the six ADRs
- 'For AI agents reading this' section — first-class doc consumers
- Status section linking Phase 0 and Master PRDs
- agentskit.io as canonical docs URL

What's preserved and tightened:
- Quickstart in 10 lines (single example, not three competing)
- Multi-agent delegation example
- Provider swap demonstration
- Terminal chat (Ink) callout

Aligns with stories #224 (README rewrite) and #16 (honest comparison
incl. when NOT to use). Builds on Manifesto + Origin (#265) and the
six contract ADRs (#267-#274).

Refs #224 #16 #211
EmersonBraun added a commit that referenced this pull request Apr 15, 2026
…oses #281]

Manifesto principle 1 requires @agentskit/core to work in any environment
(Node, Deno, edge, browser). The previous implementation imported
node:fs/promises at module load via config.ts, which crashed every
browser consumer at runtime with 'Module fs/promises has been
externalized for browser compatibility.'

This PR relocates the two Node-only helpers:

  createFileMemory  (packages/core/src/memory.ts)
    -> fileChatMemory  (packages/memory/src/file-chat.ts)

  loadConfig + AgentsKitConfig + LoadConfigOptions  (packages/core/src/config.ts)
    -> @agentskit/cli (packages/cli/src/config.ts)

What stays in @agentskit/core (all universal):
  createInMemoryMemory     works in every environment
  createLocalStorageMemory already guards on typeof localStorage

Consumer migrations:
- Re-exports of createFileMemory from @agentskit/react and @agentskit/ink
  are dropped (they were always Node-only; browser consumers got a
  broken export)
- apps/example-ink switched to fileChatMemory from @agentskit/memory
- @agentskit/cli internals now import loadConfig from its own ./config

Tests relocated:
- packages/core/tests/config.test.ts  -> packages/cli/tests/config.test.ts
- packages/core/tests/memory.test.ts createFileMemory block split out
  -> packages/memory/tests/file-chat.test.ts

Changeset declares:
  @agentskit/core          major (breaking — exports removed)
  @agentskit/memory        minor (new fileChatMemory export)
  @agentskit/cli           minor (new loadConfig public export)
  @agentskit/react         minor (dropped re-export)
  @agentskit/ink           minor (dropped re-export)

Verified:
- packages/core/dist/*.js contains zero fs/path imports
- apps/example-react mounts in a real browser (was empty root before)
- pnpm build succeeds for every package
- Ink test failure is pre-existing (ink@7 incompat fixed in #265),
  not caused by this change

Unblocks the 5 browser-side E2E tests currently skipped in #282.

Closes #281
EmersonBraun added a commit that referenced this pull request Apr 15, 2026
Reframes the README from a generic 'complete toolkit' pitch to an
opinionated, honest, story-driven entry point.

What's new:
- Tagline 'The agent toolkit JavaScript actually deserves' — opinion,
  not buzzwords
- 'Why this exists' section linking to ORIGIN.md and MANIFESTO.md
- 'Before and after' section showing the typical cobbled stack vs
  AgentsKit's two-import equivalent
- Honest 'When you should NOT use AgentsKit' section — directs people
  to single-OpenAI-call, Vercel AI SDK for chat-only, Python frameworks,
  mature observability platforms, or pre-1.0 caution
- Comparison table now includes formal contracts row and edge-readiness
- Stability tier column on the ecosystem table
- Architecture and contracts section linking the six ADRs
- 'For AI agents reading this' section — first-class doc consumers
- Status section linking Phase 0 and Master PRDs
- agentskit.io as canonical docs URL

What's preserved and tightened:
- Quickstart in 10 lines (single example, not three competing)
- Multi-agent delegation example
- Provider swap demonstration
- Terminal chat (Ink) callout

Aligns with stories #224 (README rewrite) and #16 (honest comparison
incl. when NOT to use). Builds on Manifesto + Origin (#265) and the
six contract ADRs (#267-#274).

Refs #224 #16 #211
EmersonBraun added a commit that referenced this pull request Apr 15, 2026
…oses #281]

Manifesto principle 1 requires @agentskit/core to work in any environment
(Node, Deno, edge, browser). The previous implementation imported
node:fs/promises at module load via config.ts, which crashed every
browser consumer at runtime with 'Module fs/promises has been
externalized for browser compatibility.'

This PR relocates the two Node-only helpers:

  createFileMemory  (packages/core/src/memory.ts)
    -> fileChatMemory  (packages/memory/src/file-chat.ts)

  loadConfig + AgentsKitConfig + LoadConfigOptions  (packages/core/src/config.ts)
    -> @agentskit/cli (packages/cli/src/config.ts)

What stays in @agentskit/core (all universal):
  createInMemoryMemory     works in every environment
  createLocalStorageMemory already guards on typeof localStorage

Consumer migrations:
- Re-exports of createFileMemory from @agentskit/react and @agentskit/ink
  are dropped (they were always Node-only; browser consumers got a
  broken export)
- apps/example-ink switched to fileChatMemory from @agentskit/memory
- @agentskit/cli internals now import loadConfig from its own ./config

Tests relocated:
- packages/core/tests/config.test.ts  -> packages/cli/tests/config.test.ts
- packages/core/tests/memory.test.ts createFileMemory block split out
  -> packages/memory/tests/file-chat.test.ts

Changeset declares:
  @agentskit/core          major (breaking — exports removed)
  @agentskit/memory        minor (new fileChatMemory export)
  @agentskit/cli           minor (new loadConfig public export)
  @agentskit/react         minor (dropped re-export)
  @agentskit/ink           minor (dropped re-export)

Verified:
- packages/core/dist/*.js contains zero fs/path imports
- apps/example-react mounts in a real browser (was empty root before)
- pnpm build succeeds for every package
- Ink test failure is pre-existing (ink@7 incompat fixed in #265),
  not caused by this change

Unblocks the 5 browser-side E2E tests currently skipped in #282.

Closes #281
EmersonBraun added a commit that referenced this pull request Apr 15, 2026
…oses #281] (#283)

Manifesto principle 1 requires @agentskit/core to work in any environment
(Node, Deno, edge, browser). The previous implementation imported
node:fs/promises at module load via config.ts, which crashed every
browser consumer at runtime with 'Module fs/promises has been
externalized for browser compatibility.'

This PR relocates the two Node-only helpers:

  createFileMemory  (packages/core/src/memory.ts)
    -> fileChatMemory  (packages/memory/src/file-chat.ts)

  loadConfig + AgentsKitConfig + LoadConfigOptions  (packages/core/src/config.ts)
    -> @agentskit/cli (packages/cli/src/config.ts)

What stays in @agentskit/core (all universal):
  createInMemoryMemory     works in every environment
  createLocalStorageMemory already guards on typeof localStorage

Consumer migrations:
- Re-exports of createFileMemory from @agentskit/react and @agentskit/ink
  are dropped (they were always Node-only; browser consumers got a
  broken export)
- apps/example-ink switched to fileChatMemory from @agentskit/memory
- @agentskit/cli internals now import loadConfig from its own ./config

Tests relocated:
- packages/core/tests/config.test.ts  -> packages/cli/tests/config.test.ts
- packages/core/tests/memory.test.ts createFileMemory block split out
  -> packages/memory/tests/file-chat.test.ts

Changeset declares:
  @agentskit/core          major (breaking — exports removed)
  @agentskit/memory        minor (new fileChatMemory export)
  @agentskit/cli           minor (new loadConfig public export)
  @agentskit/react         minor (dropped re-export)
  @agentskit/ink           minor (dropped re-export)

Verified:
- packages/core/dist/*.js contains zero fs/path imports
- apps/example-react mounts in a real browser (was empty root before)
- pnpm build succeeds for every package
- Ink test failure is pre-existing (ink@7 incompat fixed in #265),
  not caused by this change

Unblocks the 5 browser-side E2E tests currently skipped in #282.

Closes #281
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