API Contexts & Assets
Riferimento completo per gli endpoint REST API dei context (documenti di conoscenza versionati), skill (comportamenti agente multi-file), command (comandi IA a file singolo) e script (automazione eseguibile) in CodeCourier.
Il sistema di asset di CodeCourier fornisce uno storage strutturato e versionato per la conoscenza e la configurazione di comportamento usate dagli agenti IA a runtime. Esistono quattro tipi di asset:
- Context - Documenti di conoscenza di progetto riutilizzabili (guide di architettura, standard di codice, regole di business) iniettati nei prompt degli agenti. Ogni context mantiene una cronologia versioni completa; solo la versione attiva viene servita agli agenti.
- Skill - Bundle multi-file che estendono le capacità di un agente. Le skill contengono frammenti di prompt, codice di esempio e istruzioni raggruppati in un pacchetto nominato e versionato.
- Command - Insiemi di istruzioni in linguaggio naturale a file singolo che un agente può invocare per nome, simili a una macro riutilizzabile o uno slash command.
- Script - Script shell o Python eseguibili che girano nell’ambiente sandbox. Gli script sono versionati e possono essere pubblicati indipendentemente dalla configurazione del workflow.
Tutti i tipi di asset seguono lo stesso modello di pubblicazione versionata: aggiorni un asset per preparare le modifiche, poi pubblichi per creare una nuova versione immutabile e attivarla. Le versioni precedenti restano accessibili e possono essere riattivate in qualsiasi momento.
Context
Oggetto Context
{
"id": "ctx_...",
"name": "Architecture Guide",
"description": "Project architecture and coding standards",
"activeVersion": {
"version": 3,
"content": "# Architecture\n\nThis project uses...",
"publishedAt": "2024-01-15T10:00:00Z",
"publishedBy": "user_..."
},
"createdAt": "2024-01-01T00:00:00Z"
}id(string) - Identificatore univoco del context, con prefissoctx_name(string) - Nome leggibile del context mostrato nella dashboard e iniettato come header nei prompt degli agentidescription(string) - Breve riepilogo di cosa contiene questo context; non viene iniettato nei prompt degli agentiactiveVersion(object | null) - La versione attualmente attiva servita agli agenti;nullse non è mai stata pubblicata una versioneactiveVersion.version(number) - Numero di versione monotonicamente crescenteactiveVersion.content(string) - Il contenuto Markdown o testo semplice completo di questa versioneactiveVersion.publishedAt(timestamp ISO) - Quando questa versione è stata pubblicataactiveVersion.publishedBy(string) - ID utente del pubblicatorecreatedAt(timestamp ISO) - Quando il context è stato creato per la prima volta
GET /api/v1/contexts
Elenca tutti i context del progetto.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/contextsRisposta:
{
"data": [
{
"id": "ctx_...",
"name": "Architecture Guide",
"description": "Project architecture and coding standards",
"activeVersion": { "version": 3, "publishedAt": "2024-01-15T10:00:00Z" },
"createdAt": "2024-01-01T00:00:00Z"
}
]
}La risposta della lista omette il campo contentcompleto per motivi di performance. Usa GET /api/v1/contexts/:id per recuperare il contenuto completo di uno specifico context.
GET /api/v1/contexts/:id
Ottieni un context per ID, incluso il contenuto completo della versione attiva e un riepilogo dei numeri di versione disponibili.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/contexts/ctx_...Risposta:
{
"data": {
"id": "ctx_...",
"name": "Architecture Guide",
"description": "Project architecture and coding standards",
"activeVersion": {
"version": 3,
"content": "# Architecture\n\nThis project uses Next.js 16...",
"publishedAt": "2024-01-15T10:00:00Z",
"publishedBy": "user_..."
},
"versions": [1, 2, 3],
"createdAt": "2024-01-01T00:00:00Z"
}
}POST /api/v1/contexts
Crea un nuovo context. Creare un context non pubblica una versione iniziale; chiama PUT /api/v1/contexts/:id per impostare il contenuto, il che crea automaticamente la versione 1.
curl -X POST -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Architecture Guide",
"description": "Project architecture and coding standards",
"content": "# Architecture\n\nThis project uses..."
}' \
https://<deployment>.convex.site/api/v1/contextsCampi del body:
name(string, obbligatorio) - Nome del contextdescription(string, opzionale) - Breve descrizionecontent(string, opzionale) - Contenuto iniziale; se fornito, pubblica automaticamente la versione 1 e la imposta come attiva
Risposta (201 Created):
{ "data": { "id": "ctx_...", "name": "Architecture Guide" } }PUT /api/v1/contexts/:id
Aggiorna i metadati o il contenuto di un context. Fornire un nuovo valore content crea una nuova versione e la attiva automaticamente. Aggiornare solo name o description non crea una nuova versione.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"content": "# Architecture (Updated)\n\nThis project now uses..."
}' \
https://<deployment>.convex.site/api/v1/contexts/ctx_...Campi del body (tutti opzionali):
name(string) - Nuovo nome del contextdescription(string) - Nuova descrizionecontent(string) - Nuovo contenuto; attiva la creazione di una nuova versione
DELETE /api/v1/contexts/:id
Elimina (soft-delete) un context. Il context viene spostato nel cestino e non viene più servito agli agenti. Le versioni attive vengono preservate; il context può essere ripristinato dal cestino.
curl -X DELETE -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/contexts/ctx_...GET /api/v1/contexts/:id/versions
Elenca tutte le versioni pubblicate di un context, dalla più recente.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/contexts/ctx_.../versionsRisposta:
{
"data": [
{
"version": 3,
"content": "# Architecture (Updated)...",
"isActive": true,
"publishedAt": "2024-01-15T10:00:00Z",
"publishedBy": "user_..."
},
{
"version": 2,
"content": "# Architecture...",
"isActive": false,
"publishedAt": "2024-01-10T08:00:00Z",
"publishedBy": "user_..."
}
]
}PUT /api/v1/contexts/:id/versions/:v/activate
Attiva una specifica versione storica, rendendola la versione servita agli agenti. Usa questo per tornare a una versione precedente senza ripubblicare. :v è il numero di versione intero.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/contexts/ctx_.../versions/2/activateRisposta:
{ "data": { "activeVersion": 2, "activatedAt": "2024-01-16T09:00:00Z" } }Informazioni
Skill
Le skill sono bundle di file versionati che estendono il comportamento di un agente. Ogni skill può contenere più file (template di prompt, codice di riferimento, configurazione), tutti pubblicati insieme come singola versione.
Oggetto Skill
{
"id": "skill_...",
"name": "React Component Generator",
"description": "Generates accessible, typed React components with tests",
"activeVersion": {
"version": 2,
"files": [
{
"name": "instructions.md",
"content": "# React Component Generator\n\nWhen generating components..."
},
{
"name": "example.tsx",
"content": "// Example component structure..."
}
],
"publishedAt": "2024-01-12T14:00:00Z",
"publishedBy": "user_..."
},
"createdAt": "2024-01-05T00:00:00Z"
}GET /api/v1/skills
Elenca tutte le skill del progetto.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/skillsGET /api/v1/skills/:id
Ottieni una skill per ID, inclusi tutti i file nella versione attiva.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/skills/skill_...POST /api/v1/skills
Crea una nuova skill.
curl -X POST -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "React Component Generator",
"description": "Generates accessible, typed React components with tests",
"files": [
{
"name": "instructions.md",
"content": "# React Component Generator\n\nWhen generating..."
}
]
}' \
https://<deployment>.convex.site/api/v1/skillsCampi del body:
name(string, obbligatorio) - Nome della skilldescription(string, opzionale) - Descrizione mostrata nella dashboardfiles(array, opzionale) - Oggetti file iniziali, ciascuno connameecontent; se forniti, pubblica automaticamente la versione 1
Risposta (201 Created):
{ "data": { "id": "skill_...", "name": "React Component Generator" } }PUT /api/v1/skills/:id
Aggiorna i metadati della skill. Per aggiornare il contenuto dei file, usa invece PUT /api/v1/skills/:id/publish, che crea una nuova versione immutabile.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{ "name": "React & React Native Component Generator" }' \
https://<deployment>.convex.site/api/v1/skills/skill_...DELETE /api/v1/skills/:id
Elimina una skill. Questo rimuove la skill e tutte le sue versioni.
curl -X DELETE -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/skills/skill_...PUT /api/v1/skills/:id/publish
Pubblica una nuova versione di una skill con il contenuto dei file aggiornato. La nuova versione diventa attiva immediatamente.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"files": [
{
"name": "instructions.md",
"content": "# React Component Generator v2\n\nUpdated instructions..."
},
{
"name": "example.tsx",
"content": "// Updated example..."
}
]
}' \
https://<deployment>.convex.site/api/v1/skills/skill_.../publishCampi del body:
files(array, obbligatorio) - Nuova lista completa di file; sostituisce tutti i file della versione precedente. Ogni elemento richiedenameecontent
Risposta:
{ "data": { "version": 3, "publishedAt": "2024-01-16T09:00:00Z" } }GET /api/v1/skills/:id/versions
Elenca tutte le versioni pubblicate di una skill.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/skills/skill_.../versionsCommand
I command sono insiemi di istruzioni in linguaggio naturale a file singolo che gli agenti possono invocare per nome. Funzionano come macro riutilizzabili: definiti una volta, referenziati per nome nei workflow.
Oggetto Command
{
"id": "cmd_...",
"name": "write-tests",
"description": "Write comprehensive unit tests for new code",
"activeVersion": {
"version": 1,
"content": "Write unit tests using Vitest for all exported functions and React components in the changed files. Aim for 80%+ branch coverage. Include edge cases for null/undefined inputs.",
"publishedAt": "2024-01-10T12:00:00Z",
"publishedBy": "user_..."
},
"createdAt": "2024-01-10T11:00:00Z"
}Informazioni
write-tests, add-error-handling). Vengono referenziati negli step del workflow come /write-tests. I nomi devono essere univoci all’interno di un progetto.GET /api/v1/commands
Elenca tutti i command del progetto.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/commandsGET /api/v1/commands/:id
Ottieni un command per ID, incluso il contenuto della versione attiva.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/commands/cmd_...POST /api/v1/commands
Crea un nuovo command.
curl -X POST -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "write-tests",
"description": "Write comprehensive unit tests for new code",
"content": "Write unit tests using Vitest for all exported functions..."
}' \
https://<deployment>.convex.site/api/v1/commandsCampi del body:
name(string, obbligatorio) - Nome del command in minuscolo con trattini; deve essere univoco all’interno del progettodescription(string, opzionale) - Descrizione leggibilecontent(string, opzionale) - Istruzioni del command; se fornito, pubblica automaticamente la versione 1
Risposta (201 Created):
{ "data": { "id": "cmd_...", "name": "write-tests" } }PUT /api/v1/commands/:id
Aggiorna i metadati del command (nome o descrizione) senza creare una nuova versione.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{ "description": "Write comprehensive unit and integration tests" }' \
https://<deployment>.convex.site/api/v1/commands/cmd_...DELETE /api/v1/commands/:id
Elimina un command e tutte le sue versioni.
curl -X DELETE -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/commands/cmd_...PUT /api/v1/commands/:id/publish
Pubblica una nuova versione di un command con il contenuto aggiornato.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"content": "Write unit and integration tests using Vitest..."
}' \
https://<deployment>.convex.site/api/v1/commands/cmd_.../publishCampi del body:
content(string, obbligatorio) - Nuovo testo di istruzione del command
Risposta:
{ "data": { "version": 2, "publishedAt": "2024-01-16T09:00:00Z" } }Script
Gli script sono file eseguibili versionati che girano dentro la sandbox E2B durante l’esecuzione del workflow. Usi comuni: migrazioni database, pre-step di generazione codice, passate di lint/format e script di setup personalizzati.
Oggetto Script
{
"id": "scr_...",
"name": "setup-dev-env",
"description": "Installs dependencies and sets up the development environment",
"language": "bash",
"activeVersion": {
"version": 2,
"content": "#!/bin/bash\nset -e\nnpm ci\nnpm run db:migrate\necho 'Setup complete'",
"publishedAt": "2024-01-14T09:00:00Z",
"publishedBy": "user_..."
},
"createdAt": "2024-01-01T00:00:00Z"
}language(string) - Interprete dello script:bash,python, onodeactiveVersion.content(string) - Il codice sorgente completo dello script
Avvertimento
GET /api/v1/scripts
Elenca tutti gli script del progetto.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/scriptsGET /api/v1/scripts/:id
Ottieni uno script per ID, incluso il contenuto della versione attiva.
curl -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/scripts/scr_...POST /api/v1/scripts
Crea un nuovo script.
curl -X POST -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "setup-dev-env",
"description": "Installs dependencies and sets up the development environment",
"language": "bash",
"content": "#!/bin/bash\nset -e\nnpm ci\necho 'Done'"
}' \
https://<deployment>.convex.site/api/v1/scriptsCampi del body:
name(string, obbligatorio) - Nome dello script in minuscolo con trattini; deve essere univoco all’interno del progettolanguage(string, obbligatorio) - Interprete:bash,python, onodedescription(string, opzionale) - Descrizione leggibilecontent(string, opzionale) - Sorgente dello script; se fornito, pubblica automaticamente la versione 1
Risposta (201 Created):
{ "data": { "id": "scr_...", "name": "setup-dev-env" } }PUT /api/v1/scripts/:id
Aggiorna i metadati dello script senza creare una nuova versione.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{ "description": "Full dev environment setup including DB migrations" }' \
https://<deployment>.convex.site/api/v1/scripts/scr_...DELETE /api/v1/scripts/:id
Elimina uno script e tutte le sue versioni.
curl -X DELETE -H "Authorization: Bearer cc_live_..." \
https://<deployment>.convex.site/api/v1/scripts/scr_...PUT /api/v1/scripts/:id/publish
Pubblica una nuova versione di uno script con il codice sorgente aggiornato.
curl -X PUT -H "Authorization: Bearer cc_live_..." \
-H "Content-Type: application/json" \
-d '{
"content": "#!/bin/bash\nset -e\nnpm ci\nnpm run db:migrate\necho '"'"'Setup complete'"'"'"
}' \
https://<deployment>.convex.site/api/v1/scripts/scr_.../publishCampi del body:
content(string, obbligatorio) - Nuovo codice sorgente dello script
Risposta:
{ "data": { "version": 2, "publishedAt": "2024-01-16T09:00:00Z" } }Riepilogo del ciclo di vita delle versioni
Tutti i tipi di asset seguono lo stesso ciclo di vita di versione:
- Crea - Crea il record dell’asset (opzionalmente con contenuto iniziale per auto-pubblicare la v1)
- Bozza - Usa
PUT /:idper aggiornare i metadati; le modifiche al contenuto qui preparano una nuova versione senza attivarla - Pubblica - Usa
PUT /:id/publishper confermare le modifiche preparate come nuova versione immutabile e attivarla - Rollback - Per i context, usa
PUT /:id/versions/:v/activateper riattivare qualsiasi versione precedente
Informazioni