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
20 changes: 20 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "ask-gina-plugins",
"interface": {
"displayName": "Ask Gina Plugins"
},
"plugins": [
{
"name": "ask-gina",
"source": {
"source": "local",
"path": "./plugins/ask-gina"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Finance"
}
]
}
24 changes: 24 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,30 @@ jobs:
- run: bun run verify:artifacts
- run: bun run smoke:install
- run: bun run check:public-boundary
- name: Install pinned Codex marketplace CLI
if: github.event_name == 'push'
env:
BUN_INSTALL_CACHE_DIR: ${{ runner.temp }}/codex-cli-cache
CODEX_CLI_ROOT: ${{ runner.temp }}/codex-cli
run: |
mkdir -p "$CODEX_CLI_ROOT"
printf '{"private":true}\n' > "$CODEX_CLI_ROOT/package.json"
bun add --cwd "$CODEX_CLI_ROOT" --exact @openai/codex@0.149.0-alpha.4.3
- name: Smoke Codex marketplace at published revision
if: github.event_name == 'push'
env:
CODEX_MARKETPLACE_EXECUTABLE: ${{ runner.temp }}/codex-cli/node_modules/.bin/codex
CODEX_MARKETPLACE_REPOSITORY_TOKEN: ${{ github.token }}
CODEX_MARKETPLACE_REF: ${{ github.sha }}
CODEX_MARKETPLACE_REPOSITORY: ${{ github.repository }}
run: >-
bun run check:marketplace:codex --
--executable "$CODEX_MARKETPLACE_EXECUTABLE"
--repository "$CODEX_MARKETPLACE_REPOSITORY"
--ref "$CODEX_MARKETPLACE_REF"
- name: Remove temporary Codex CLI state
if: always() && github.event_name == 'push'
run: rm -rf "$RUNNER_TEMP/codex-cli" "$RUNNER_TEMP/codex-cli-cache"
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: receipts
Expand Down
42 changes: 32 additions & 10 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,28 @@ CommonJS, browser, edge, or subpath entrypoints. They support Node >=24 and Bun

> =1.4. The compiled CLI and eval executables run on Bun 1.4.x only.

## Skills
## Marketplace and skills

`plugins/ask-gina/skills/` is the only authoring source. Pack-time generation
builds temporary host trees and the skills candidate. Generated
`targets/<host>/skills/` copies are not source.
`.agents/plugins/marketplace.json` is the repository marketplace descriptor. It
points directly at `plugins/ask-gina/`, so a clean checkout exposes the OpenAI
source without a generation step. The directly loadable OpenAI files live at the
plugin root: `.codex-plugin/plugin.json`, `.mcp.json`, `assets/icon.svg`, and `skills/`.
The repository is private. Automated remote marketplace proof runs only on a trusted
same-repository push and uses an ephemeral, read-only GitHub token only while Codex
clones the marketplace. Pull-request jobs never receive this token. The smoke harness
deletes its isolated token and token-free askpass helper before plugin installation,
and neither plugin installation nor runtime receives the repository token. Marketplace consumers need
GitHub read access independently of Ask Gina MCP authentication.

`plugins/ask-gina/skills/` is the only authored skill tree. OpenAI-specific skill
metadata remains beside each canonical `SKILL.md` under `agents/openai.yaml`.
`plugins/ask-gina/targets/` contains only the Cursor, Claude, Copilot, and Gemini
overlays; there is no `targets/openai/` source tree.

Sync and pack operations build temporary host targets from these sources. The
OpenAI target selects only the root OpenAI files and canonical skills. Every
other host combines its `targets/<host>/` overlay with the same canonical
skills. Generated host trees are output, never authoring source.

## Runtime

Expand All @@ -43,17 +60,22 @@ enabled compiler and Effect diagnostic; there is no baseline or count ratchet.
source maps; every map embeds committed TypeScript through relative paths. The
repository's custom packer stages those validated outputs with metadata and assets
as five npm-style package archives, five host archives, one skills candidate, and
four bounded receipts under ignored `dist/`. Verification clean-installs package
tarballs in temporary projects, checks their closures, runs their actual runtime
entrypoints, reruns target conformance, and regenerates the four-dimension
hermetic eval aggregate from synthetic files. Generated `dist/` content is evidence, never authoring source.
four bounded receipts under ignored `dist/`. Host archives remain lean: each
contains only the selected host surface and skills, never repository workspace
files or foreign-host overlays. Verification clean-installs package tarballs in
temporary projects, checks their closures, runs their actual runtime entrypoints,
reruns target conformance, and regenerates the four-dimension hermetic eval
aggregate from synthetic files. Generated `dist/` content is evidence, never
authoring source.

## CI

Fork-safe GitHub Actions run formatting, lint, compiler, test, audit, target
conformance, artifact clean-install/runtime, and public-boundary gates on pull
requests. These workflows use `pull_request` with `contents: read`, but `main`
has no protected required checks, so they do not gate merge. A separate manual
Responses live-smoke workflow may read two protected secrets and uploads only the
has no protected required checks, so they do not gate merge. The authenticated Codex
remote smoke runs separately on same-repository pushes at the immutable pushed SHA;
it never runs in a pull-request job. A separate manual Responses live-smoke workflow
may read two protected secrets and uploads only the
sanitized aggregate. There is no release job, OIDC, package writer, remote cache,
or publication authority.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"eval:replay": "bun run build && bun packages/evals/dist/bin/replay.js",
"eval:responses": "bun run build && bun packages/evals/dist/bin/live.js --runner responses",
"eval:codex": "bun run build && bun packages/evals/dist/bin/live.js --runner codex",
"check:marketplace:codex": "bun run build && bun packages/evals/dist/bin/check-codex-marketplace.js",
"effect-tsgo:patch": "bun scripts/effect-tsgo-patch-if-needed.ts",
"prepare": "bun run effect-tsgo:patch",
"typecheck": "bun run build && node_modules/.bin/tsc --noEmit -p tsconfig.json",
Expand Down
Loading
Loading