Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .changeset/adopt-cloud-work.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/auto-onboard-installs.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/data-branch.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/decoy-question-filtered.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/drain-claims-ticket-locks.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/extension-version-gate.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/flat-branches-view.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/layout-gate.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/one-github-sync-preset.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/project-errors.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/release-abandoned-drain-locks.md

This file was deleted.

1 change: 1 addition & 0 deletions MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- **The unit of work is an *agent*** β€” not a run or a session. The CLI that drives it (`claude`, `codex`) is the *driver*.
- **Zero migration code.** Manual migration is good; code that migrates is not. A renamed or deleted thing leaves nothing behind β€” no fallback to the old name, no key alias, no old-format branch, no upgrade step. Nor a notice about what was dropped: a warning about data nobody has is still code nobody needs.
- **Haiku is out of scope.** It skips the session-finish protocol, so unattended work started on it always ends as an unmerged draft PR that a human has to finish. We deliberately don't work around this: no model floor that overrides the model a user picked, and no refusal to arm the hand-off. The dashboard's warning is the whole treatment β€” it teaches and never blocks.
- **The version line stays in `0.x`.** The releases are experimental, and while the major is `0` a minor bump is allowed to break β€” so no experiment ever costs a major.

## Before modifying this file

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
**Autonomous AI programming.**
Stop babysitting your coding agents. Make the important decisions, let AI do the rest.

[![npm](https://img.shields.io/npm/v/@gemstack/the-framework)](https://www.npmjs.com/package/@gemstack/the-framework) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE) [![Discord](https://img.shields.io/badge/Discord-join-5865F2?logo=discord&logoColor=white)](https://discord.gg/qc8zvdzWNR)
[![npm](https://img.shields.io/npm/v/framework)](https://www.npmjs.com/package/framework) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE) [![Discord](https://img.shields.io/badge/Discord-join-5865F2?logo=discord&logoColor=white)](https://discord.gg/qc8zvdzWNR)

<br clear="left" />

Expand All @@ -17,9 +17,9 @@ Stop babysitting your coding agents. Make the important decisions, let AI do the

```bash
# Install
npm i -g @gemstack/the-framework
npm i -g framework
the-framework # Spins up the dashboard

# Or one-shot (no install):
npx @gemstack/the-framework # Spins up the dashboard
npx framework # Spins up the dashboard
```
8 changes: 4 additions & 4 deletions packages/the-framework.ai/pages/index/Hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import { useCopy } from './copy'
import { kickerStyle, mono } from './ui'

export const PMS = {
npm: { try: 'npx @gemstack/the-framework', install: 'npm i -g @gemstack/the-framework' },
pnpm: { try: 'pnpm dlx @gemstack/the-framework', install: 'pnpm add -g @gemstack/the-framework' },
bun: { try: 'bunx @gemstack/the-framework', install: 'bun add -g @gemstack/the-framework' },
npm: { try: 'npx framework', install: 'npm i -g framework' },
pnpm: { try: 'pnpm dlx framework', install: 'pnpm add -g framework' },
bun: { try: 'bunx framework', install: 'bun add -g framework' },
// `yarn dlx` is Yarn 2+ (Berry), which removed `yarn global add` β€” so the install line
// falls back to npm, which every yarn user has, rather than pairing two commands no
// single yarn generation can both run.
yarn: { try: 'yarn dlx @gemstack/the-framework', install: 'npm i -g @gemstack/the-framework' },
yarn: { try: 'yarn dlx framework', install: 'npm i -g framework' },
} as const
export type Pm = keyof typeof PMS

Expand Down
4 changes: 2 additions & 2 deletions packages/the-framework.ai/pages/index/ui.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { CSSProperties, ReactNode } from 'react'

export const DISCORD_URL = 'https://discord.gg/qc8zvdzWNR'
export const GITHUB_URL = 'https://github.com/gemstack-land/the-framework'
export const NPM_URL = 'https://www.npmjs.com/package/@gemstack/the-framework'
export const GITHUB_URL = 'https://github.com/framework/the-framework'
export const NPM_URL = 'https://www.npmjs.com/package/framework'

export const mono = "'IBM Plex Mono', monospace" as const

Expand Down
2 changes: 1 addition & 1 deletion packages/the-framework.ai/pages/press/+Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export default function Page() {
<Step kicker="Name">
<p style={pStyle}>
The name is written <b style={{ color: '#d3c6aa', fontWeight: 600 }}>The Framework</b> (capital T, capital
F), and the package is <CodeChip fontSize={13}>@gemstack/the-framework</CodeChip>.
F), and the package is <CodeChip fontSize={13}>framework</CodeChip>.
</p>
</Step>
<Step kicker="Banner">
Expand Down
12 changes: 6 additions & 6 deletions packages/the-framework/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# @gemstack/the-framework
# framework

**The Framework** β€” autonomous AI programming: humans make the important decisions
while coding agents run unattended.
Expand All @@ -8,16 +8,16 @@ gets a throwaway copy of the repo, does its work, and hands the result off as a
request. Your own checkout is never touched.

```bash
npm i -g @gemstack/the-framework
npm i -g framework

cd ~/code/my-repo
framework # serves the dashboard at http://127.0.0.1:4200
the-framework # serves the dashboard at http://127.0.0.1:4200
```

## The CLI is four options and no verbs

```
framework Serve the dashboard in the foreground. Ctrl+C closes it and
the-framework Serve the dashboard in the foreground. Ctrl+C closes it and
every session it is running.

--port <n> Dashboard port (default: 4200).
Expand Down Expand Up @@ -74,5 +74,5 @@ in prose. [`SPEC.md`](./SPEC.md) at the package root is the place to start.

## Status

Pre-release and unversioned. There are no users to keep compatible, so the code
prefers being clean over being backward-compatible.
Pre-release, published from the `0.x` line. There are no users to keep compatible,
so the code prefers being clean over being backward-compatible.
4 changes: 2 additions & 2 deletions packages/the-framework/dashboard/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ merging the package removed.
## Run it

```bash
pnpm --filter @gemstack/the-framework dev:dashboard
pnpm --filter framework dev:dashboard
# open http://localhost:4300
```

Expand All @@ -50,5 +50,5 @@ configuration travels to it as a JSON spec (`--agent <path>`), never as flags.
## Tests

`vitest` with a jsdom environment, which is why the package runs two test runners: `node --test`
over the compiled `src/`, then `vitest` over this directory. `pnpm --filter @gemstack/the-framework test`
over the compiled `src/`, then `vitest` over this directory. `pnpm --filter framework test`
runs both.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { cn } from '../lib/utils.js'

// The agent overview (#431): the "moat" the wrapped agent's own chat cannot show, rebuilt
// on the new dashboard. Each card is a pure projection of the event stream (run-view.ts
// in @gemstack/the-framework) β€” the agent's status and a link
// in `framework`) β€” the agent's status and a link
// to the live session. Cards render only when their data has arrived, so an early agent
// shows nothing extra.
export function AgentOverview({ events }: { events: FrameworkEvent[] }) {
Expand Down
2 changes: 1 addition & 1 deletion packages/the-framework/dashboard/lib/preferences.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ export function usePreferenceSources(): PreferenceSources {

const EMPTY_SOURCES: PreferenceSources = {}

// Autopilot's default-on moved into @gemstack/the-framework with the rest of the preferences ->
// Autopilot's default-on moved into `framework` with the rest of the preferences ->
// run options mapping (#858), so the daemon resolves it the same way. Re-exported here because
// every component reaches for it through this module.

Expand Down
2 changes: 1 addition & 1 deletion packages/the-framework/dashboard/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ function frameworkDevDaemon(): Plugin {
// plain HTTP (`POST /_rpc/<name>`, plus an SSE stream for the live feed). `index.html` beside this
// file is the whole entry; the daemon serves the built output as static files with an SPA fallback.
export default defineConfig({
// The dashboard is a directory inside @gemstack/the-framework rather than a package of its own
// The dashboard is a directory inside `framework` rather than a package of its own
// (A7), so `root` is pinned to this file's directory instead of inherited from the cwd β€” the
// scripts that run it live one level up.
root: fileURLToPath(new URL('.', import.meta.url)),
Expand Down
13 changes: 6 additions & 7 deletions packages/the-framework/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gemstack/the-framework",
"version": "0.0.0",
"name": "framework",
"version": "0.7.0",
"description": "The (AI) Framework: turnkey, zero-config AI orchestration that wraps a coding-agent CLI (Claude Code) as a black box and takes you from an idea to a running app. Vite for AI.",
"keywords": [
"ai",
Expand All @@ -10,17 +10,16 @@
"framework",
"codegen",
"cli",
"turnkey",
"gemstack"
"turnkey"
],
"license": "MIT",
"homepage": "https://github.com/gemstack-land/the-framework/tree/main/packages/the-framework#readme",
"homepage": "https://github.com/framework/the-framework/tree/main/packages/the-framework#readme",
"bugs": {
"url": "https://github.com/gemstack-land/the-framework/issues"
"url": "https://github.com/framework/the-framework/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/gemstack-land/the-framework",
"url": "https://github.com/framework/the-framework",
"directory": "packages/the-framework"
},
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion packages/the-framework/src/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export async function checkLayout(cwd: string, fs: StoreFs = nodeStoreFs()): Pro
`${THE_FRAMEWORK_DIR}/${LAYOUT_FILE}, so running it here would commit files under names ` +
`the repo does not use (#1575).\n\nthis build writes:\n${layoutMarker()}\nthe repo records:\n${recorded}\n` +
`A published build that predates a repo-side rename does this: update ` +
`@gemstack/the-framework to a build matching the repo, or β€” if this build is the newer ` +
`framework to a build matching the repo, or β€” if this build is the newer ` +
`side β€” rewrite the marker with its layout and land that as the rename's own commit.`,
}
}
2 changes: 1 addition & 1 deletion packages/the-framework/src/update-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

/** The npm package this CLI ships as; the registry key for the version check. */
export const PACKAGE_NAME = '@gemstack/the-framework'
export const PACKAGE_NAME = 'framework'

/** Fetches the latest published version of `pkg`, or undefined on any failure. Injectable for tests. */
export type VersionFetcher = (pkg: string) => Promise<string | undefined>
Expand Down
Loading