Skip to content
Open
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
3 changes: 0 additions & 3 deletions .craft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@ targets:
- name: npm
id: "@sentry/junior-linear"
includeNames: /^sentry-junior-linear-\d.*\.tgz$/
- name: npm
id: "@sentry/junior-memory"
includeNames: /^sentry-junior-memory-\d.*\.tgz$/
- name: npm
id: "@sentry/junior-notion"
includeNames: /^sentry-junior-notion-\d.*\.tgz$/
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ jobs:
- packages/junior-hex/**
- packages/junior-linear/**
- packages/junior-maintenance/**
- packages/junior-memory/**
- packages/junior-notion/**
- packages/junior-octolens/**
- packages/junior-sentry/**
Expand Down Expand Up @@ -263,12 +262,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-node-pnpm
- run: pnpm --filter @sentry/junior-memory build
- run: pnpm --filter @sentry/junior-github build
- run: pnpm --filter @sentry/junior-gocd build
- run: pnpm --filter @sentry/junior-sentry build
- run: pnpm --filter @sentry/junior-vercel build
- run: pnpm --filter @sentry/junior-memory test
- run: pnpm --filter @sentry/junior-github test
- run: pnpm --filter @sentry/junior-gocd test
- run: pnpm --filter @sentry/junior-sentry test
Expand Down Expand Up @@ -453,7 +450,6 @@ jobs:
pnpm --filter @sentry/junior-gocd pack --pack-destination artifacts
pnpm --filter @sentry/junior-hex pack --pack-destination artifacts
pnpm --filter @sentry/junior-linear pack --pack-destination artifacts
pnpm --filter @sentry/junior-memory pack --pack-destination artifacts
pnpm --filter @sentry/junior-notion pack --pack-destination artifacts
pnpm --filter @sentry/junior-octolens pack --pack-destination artifacts
pnpm --filter @sentry/junior-maintenance pack --pack-destination artifacts
Expand Down
1 change: 0 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ This repo uses Craft for manual lockstep npm releases of:
- `@sentry/junior-hex`
- `@sentry/junior-linear`
- `@sentry/junior-maintenance`
- `@sentry/junior-memory`
- `@sentry/junior-notion`
- `@sentry/junior-octolens`
- `@sentry/junior-sentry`
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Start here:
| `@sentry/junior-gocd` | GoCD plugin package for read-only pipeline history through host egress auth |
| `@sentry/junior-hex` | Hex plugin package for data warehouse query workflows |
| `@sentry/junior-linear` | Linear plugin package for issue workflows |
| `@sentry/junior-memory` | Memory plugin package for long-term Junior memory storage |
| `@sentry/junior-notion` | Notion plugin package for page search workflows |
| `@sentry/junior-octolens` | Octolens plugin package for social-listening workflows |
| `@sentry/junior-maintenance` | Maintenance plugin package for updating and improving Junior apps |
Expand Down
5 changes: 5 additions & 0 deletions TERMINOLOGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ Canonical words used across Junior's code and documentation.
- **Brief**: the durable, versioned record of a Conversation's intent, outcome,
decisions, facts, and evidence links. A public Brief stays available after
the transcript expires.
- **Memory**: a durable fact that Junior keeps across Conversations. It is
private to one User or public. Core owns Memory storage, recall, and learning.
- **Core feature**: a product capability that core always registers with the
plugin hook contract, such as Memory or Brief generation. It is not a plugin,
and no plugin can use its name.
- **Source**: the input that caused work, such as a Slack message, local CLI
input, dashboard input, event, scheduled automation, plugin dispatch, or
Agent invocation. Every Inbound message has one Source. A Turn stores the
Expand Down
2 changes: 1 addition & 1 deletion apps/example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ It demonstrates:
- one local skill (`/example-local`)
- one plugin-bundled skill (`/example-bundle-help`)
- one bundle-only plugin (`app/plugins/example-bundle/plugin.yaml`) with no credential broker config
- installed plugin packages (`@sentry/junior-agent-browser`, `@sentry/junior-datadog`, `@sentry/junior-github`, `@sentry/junior-hex`, `@sentry/junior-linear`, `@sentry/junior-memory`, `@sentry/junior-notion`, `@sentry/junior-sentry`, `@sentry/junior-vercel`)
- installed plugin packages (`@sentry/junior-agent-browser`, `@sentry/junior-datadog`, `@sentry/junior-github`, `@sentry/junior-hex`, `@sentry/junior-linear`, `@sentry/junior-notion`, `@sentry/junior-sentry`, `@sentry/junior-vercel`)

## Run

Expand Down
5 changes: 2 additions & 3 deletions apps/example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
"private": true,
"type": "module",
"scripts": {
"predev": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior-memory build",
"predev": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-dashboard build",
"dev": "cross-env NODE_OPTIONS=--import=./instrument.mjs nitro dev",
"prebuild": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior-memory build",
"prebuild": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-dashboard build",
"build": "junior snapshot create && nitro build",
"postbuild": "node scripts/check-vercel-output.mjs",
"preview": "cross-env NODE_OPTIONS=--import=./instrument.mjs nitro preview",
Expand All @@ -22,7 +22,6 @@
"@sentry/junior-github": "workspace:*",
"@sentry/junior-hex": "workspace:*",
"@sentry/junior-linear": "workspace:*",
"@sentry/junior-memory": "workspace:*",
"@sentry/junior-notion": "workspace:*",
"@sentry/junior-sentry": "workspace:*",
"@sentry/junior-vercel": "workspace:*",
Expand Down
2 changes: 0 additions & 2 deletions apps/example/plugins.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { defineJuniorPlugins } from "@sentry/junior";
import { githubPlugin } from "@sentry/junior-github";
import { linearPlugin } from "@sentry/junior-linear";
import { memoryPlugin } from "@sentry/junior-memory";
import { sentryPlugin } from "@sentry/junior-sentry";
import { vercelPlugin } from "@sentry/junior-vercel";

Expand All @@ -19,7 +18,6 @@ export const plugins = defineJuniorPlugins([
}),
"@sentry/junior-hex",
linearPlugin(),
memoryPlugin(),
"@sentry/junior-notion",
sentryPlugin(),
vercelPlugin(),
Expand Down
8 changes: 4 additions & 4 deletions ast-grep/rules/no-memory-semantic-regex.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ language: TypeScript
severity: error
message: Memory semantic decisions must stay agentic. Do not use regex classifiers in memory tools, policy, extraction, or agent modules.
files:
- packages/junior-memory/src/tools.ts
- packages/junior-memory/src/agent.ts
- packages/junior-memory/src/**/*policy*.ts
- packages/junior-memory/src/**/*extraction*.ts
- packages/junior/src/chat/memory/tools.ts
- packages/junior/src/chat/memory/agent.ts
- packages/junior/src/chat/memory/**/*policy*.ts
- packages/junior/src/chat/memory/**/*extraction*.ts
rule:
any:
- pattern: /$R/
Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,24 @@
"worktree:setup": "node scripts/worktree.mjs setup",
"cloudflare:token": "node scripts/refresh-cloudflare-tunnel-token.mjs",
"prepare": "simple-git-hooks",
"lint": "pnpm file-length:check && pnpm migration-metadata:check && pnpm test-architecture:check && pnpm dashboard-style:check && pnpm --filter @sentry/junior tool-annotations:check && pnpm --filter @sentry/junior tool-error-classification:check && pnpm --filter @sentry/junior lint && pnpm --filter @sentry/junior-memory lint && pnpm --filter @sentry/junior-github lint && pnpm --filter @sentry/junior-gocd lint && pnpm --filter @sentry/junior-linear lint && pnpm --filter @sentry/junior-sentry lint && pnpm --filter @sentry/junior-vercel lint && pnpm --filter @sentry/junior-dashboard lint && pnpm ast-grep:lint && pnpm package:lint",
"lint": "pnpm file-length:check && pnpm migration-metadata:check && pnpm test-architecture:check && pnpm dashboard-style:check && pnpm --filter @sentry/junior tool-annotations:check && pnpm --filter @sentry/junior tool-error-classification:check && pnpm --filter @sentry/junior lint && pnpm --filter @sentry/junior-github lint && pnpm --filter @sentry/junior-gocd lint && pnpm --filter @sentry/junior-linear lint && pnpm --filter @sentry/junior-sentry lint && pnpm --filter @sentry/junior-vercel lint && pnpm --filter @sentry/junior-dashboard lint && pnpm ast-grep:lint && pnpm package:lint",
"lint:fix": "pnpm --filter @sentry/junior lint:fix",
"file-length:check": "node --test scripts/check-file-length.test.mjs && node scripts/check-file-length.mjs",
"migration-metadata:check": "node --test scripts/check-drizzle-migrations.test.mjs && node scripts/check-drizzle-migrations.mjs",
"test-architecture:check": "node --test scripts/check-test-architecture.test.mjs && node scripts/check-test-architecture.mjs",
"dashboard-style:check": "node --test scripts/check-dashboard-styles.test.mjs && node scripts/check-dashboard-styles.mjs",
"ast-grep:lint": "ast-grep scan",
"lint-staged": "lint-staged",
"build": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-memory build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build",
"build": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build",
"build:example": "pnpm --filter @sentry/junior-example build",
"docs:dev": "pnpm --filter @sentry/junior-docs dev",
"docs:build": "pnpm --filter @sentry/junior-docs build",
"docs:check": "pnpm --filter @sentry/junior-docs check",
"package:lint": "for pkg in packages/junior packages/junior-plugin-api packages/junior-memory packages/junior-dashboard packages/junior-github packages/junior-gocd packages/junior-agent-browser packages/junior-amplitude packages/junior-cloudflare packages/junior-datadog packages/junior-hex packages/junior-linear packages/junior-maintenance packages/junior-notion packages/junior-octolens packages/junior-sentry packages/junior-vercel; do pnpm exec publint \"$pkg\" || exit $?; done",
"package:lint": "for pkg in packages/junior packages/junior-plugin-api packages/junior-dashboard packages/junior-github packages/junior-gocd packages/junior-agent-browser packages/junior-amplitude packages/junior-cloudflare packages/junior-datadog packages/junior-hex packages/junior-linear packages/junior-maintenance packages/junior-notion packages/junior-octolens packages/junior-sentry packages/junior-vercel; do pnpm exec publint \"$pkg\" || exit $?; done",
"package-types:check": "sh scripts/check-package-types.sh",
"release:check": "node scripts/check-release-config.mjs",
"start": "pnpm --filter @sentry/junior-example dev",
"test": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-memory build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior test && pnpm --filter @sentry/junior-memory test && pnpm --filter @sentry/junior-github test && pnpm --filter @sentry/junior-gocd test && pnpm --filter @sentry/junior-sentry test && pnpm --filter @sentry/junior-vercel test && pnpm --filter @sentry/junior-dashboard test",
"test": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior test && pnpm --filter @sentry/junior-github test && pnpm --filter @sentry/junior-gocd test && pnpm --filter @sentry/junior-sentry test && pnpm --filter @sentry/junior-vercel test && pnpm --filter @sentry/junior-dashboard test",
"test:e2e:dashboard": "pnpm --filter @sentry/junior-dashboard build && playwright test -c packages/junior-dashboard/playwright.config.ts",
"test:watch": "pnpm --filter @sentry/junior test:watch",
"evals": "pnpm --filter @sentry/junior-evals evals",
Expand All @@ -41,7 +41,7 @@
"evals:record": "pnpm --filter @sentry/junior-evals evals:record",
"typecheck": "pnpm -r run typecheck",
"skills:check": "pnpm --filter @sentry/junior skills:check",
"test:ci": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-memory build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior test:coverage && pnpm --filter @sentry/junior-memory test && pnpm --filter @sentry/junior-github test && pnpm --filter @sentry/junior-gocd test && pnpm --filter @sentry/junior-sentry test && pnpm --filter @sentry/junior-vercel test && pnpm --filter @sentry/junior-dashboard test:coverage"
"test:ci": "pnpm --filter @sentry/junior build && pnpm --filter @sentry/junior-github build && pnpm --filter @sentry/junior-gocd build && pnpm --filter @sentry/junior-linear build && pnpm --filter @sentry/junior-sentry build && pnpm --filter @sentry/junior-vercel build && pnpm --filter @sentry/junior-dashboard build && pnpm --filter @sentry/junior test:coverage && pnpm --filter @sentry/junior-github test && pnpm --filter @sentry/junior-gocd test && pnpm --filter @sentry/junior-sentry test && pnpm --filter @sentry/junior-vercel test && pnpm --filter @sentry/junior-dashboard test:coverage"
},
"simple-git-hooks": {
"pre-commit": "pnpm lint-staged",
Expand Down
3 changes: 2 additions & 1 deletion packages/docs/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default defineConfig({
"/deploy": "/start-here/deploy-to-vercel",
"/deploy/vercel": "/start-here/deploy-to-vercel",
"/extend/custom-plugins": "/extend/build-a-plugin",
"/extend/memory-plugin": "/concepts/memory",
"/extend/plugins-overview": "/extend",
"/extend/amplitude": "/extend/amplitude-plugin",
"/extend/cloudflare": "/extend/cloudflare-plugin",
Expand Down Expand Up @@ -103,6 +104,7 @@ export default defineConfig({
link: "/concepts/watches/",
},
{ label: "Automations", link: "/concepts/automations/" },
{ label: "Memory", link: "/concepts/memory/" },
{
label: "Data & Privacy",
link: "/concepts/data-and-privacy/",
Expand Down Expand Up @@ -135,7 +137,6 @@ export default defineConfig({
label: "Maintenance Plugin",
link: "/extend/maintenance-plugin/",
},
{ label: "Memory Plugin", link: "/extend/memory-plugin/" },
{ label: "Notion Plugin", link: "/extend/notion-plugin/" },
{ label: "Sentry Plugin", link: "/extend/sentry-plugin/" },
{ label: "Vercel Plugin", link: "/extend/vercel-plugin/" },
Expand Down
6 changes: 3 additions & 3 deletions packages/docs/src/content/docs/cli/init.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ The command requires exactly one argument: the target directory.

The scaffold includes:

- `package.json` with `@sentry/junior`, `@sentry/junior-maintenance`, `@sentry/junior-memory`, `hono`, `nitro`, `typescript`, `jiti`, and `@types/node`
- `package.json` with `@sentry/junior`, `@sentry/junior-maintenance`, `hono`, `nitro`, `typescript`, `jiti`, and `@types/node`
- `pnpm-workspace.yaml` with a 24-hour dependency release delay and an immediate exception for the `@sentry/*` package scope
- `plugins.ts` with `@sentry/junior-maintenance` and `memoryPlugin()` enabled
- `plugins.ts` with `@sentry/junior-maintenance` enabled
- `server.ts`
- `nitro.config.ts` pointing at `./plugins`
- `tsconfig.json` extending Nitro's TypeScript config
Expand All @@ -43,7 +43,7 @@ The scaffold includes:

`SOUL.md` sets Junior's default voice, `WORLD.md` holds operational context, and `DESCRIPTION.md` powers the user-facing app description. Add other `app/*.md` files only when you want optional reference material available to the agent at runtime.

The generated `plugins.ts` enables `@sentry/junior-maintenance` and `memoryPlugin()` by default. Maintenance provides the `self-update` skill for keeping Junior packages current, and memory provides long-term recall once you configure Postgres with pgvector. `plugins.ts` is also the place to add other packaged plugins later.
The generated `plugins.ts` enables `@sentry/junior-maintenance` by default. Maintenance provides the `self-update` skill for keeping Junior packages current. Long-term [Memory](/concepts/memory/) is part of `@sentry/junior` and needs no plugin; it activates once you configure Postgres with pgvector. `plugins.ts` is the place to add other packaged plugins later.

This gives you the supported app shape needed to run Junior locally, keep the app updated, and continue with plugin or skill setup.

Expand Down
15 changes: 14 additions & 1 deletion packages/docs/src/content/docs/cli/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,20 @@ The command takes no arguments. It migrates the core Junior schema first, then
the schemas owned by enabled plugins. Already-applied migrations are recognized
as up to date and are not rerun.

Core migrations enable the `vector` and `btree_gin` Postgres extensions. If the
database cannot enable them, the command stops with a prerequisite error before
it applies a migration.

## Memory adoption

Core now owns [Memory](/concepts/memory/) storage. A database that ran the old
`@sentry/junior-memory` plugin migrations keeps its tables and data. The core
Memory migration reads the current schema and applies only the missing legacy
changes. The old plugin migration journal stays unchanged. Remove
`memoryPlugin()` from the plugin set before you run the upgrade, because the
command stops while the plugin set still names the removed package. See
[Upgrade from `@sentry/junior-memory`](/concepts/memory/#upgrade-from-sentryjunior-memory).

## Upgrade bridge for older databases

An existing Junior database without core Drizzle migration history must
Expand Down Expand Up @@ -58,7 +72,6 @@ An already-current database reports its migrations as existing:
Checking database migrations...
junior: up to date (8 migrations)
junior-github: up to date (4 migrations)
junior-memory: up to date (6 migrations)
Database is up to date (18 migrations).
```

Expand Down
Loading
Loading