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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ on:
pull_request_review:
types: [submitted]

permissions:
contents: read

jobs:
lint-and-type-check:
if: github.event_name == 'push' || (github.event_name == 'pull_request_review' && github.event.review.state == 'approved')
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,51 @@ jobs:
with:
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: dist/

publish-npm:
name: Publish to npm
if: github.event_name == 'release' && startsWith(github.event.release.tag_name, 'v')
runs-on: ubuntu-latest
environment: npm
permissions:
contents: read
defaults:
run:
working-directory: sdks/typescript

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
cache: "npm"
cache-dependency-path: sdks/typescript/package-lock.json

- name: Install dependencies
run: npm ci

- name: Set package version from release tag
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: npm version "${RELEASE_TAG#v}" --no-git-tag-version --allow-same-version

- name: Generate client from committed spec
run: npm run openapi:generate

- name: Typecheck
run: npm run typecheck

- name: Test
run: npm test

- name: Build
run: npm run build

- name: Publish to npm
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
266 changes: 199 additions & 67 deletions memanto/app/ui/static/index.html

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion sdks/typescript/openapi-ts.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ export default defineConfig({
input: "./openapi.json",
output: {
path: "./src/generated",
format: "prettier",
},
plugins: ["@hey-api/client-fetch"],
});
56 changes: 28 additions & 28 deletions sdks/typescript/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"info": {
"title": "Memanto - Memory that AI Agents Love!",
"description": "A memory layer service for agentic AI systems using Moorcheh SDK",
"version": "0.2.4.dev12+g0e7dd4f.d20260623"
"version": "0.0.0.dev0"
},
"paths": {
"/health": {
Expand Down Expand Up @@ -635,7 +635,7 @@
"Memory Operations"
],
"summary": "Generate Daily Summary",
"description": "Generate the on-demand daily AI summary for an agent/date.\n\nConflict detection is a separate concern — see\nPOST ``/{agent_id}/conflicts/generate`` or the scheduled job.",
"description": "Generate the on-demand daily AI summary for an agent/date.\n\nConflict detection is a separate concern \u2014 see\nPOST ``/{agent_id}/conflicts/generate`` or the scheduled job.",
"operationId": "generate_daily_summary_api_v2_agents__agent_id__daily_summary_post",
"parameters": [
{
Expand Down Expand Up @@ -1380,7 +1380,7 @@
"Sessions & Agents"
],
"summary": "Get Status",
"description": "Get current active session status.\n\nNo parameters required — reads the active session from local state.",
"description": "Get current active session status.\n\nNo parameters required \u2014 reads the active session from local state.",
"operationId": "get_status_api_v2_status_get",
"responses": {
"200": {
Expand Down Expand Up @@ -1636,7 +1636,7 @@
"Web UI"
],
"summary": "Read Daily Summary",
"description": "Return the existing daily summary for an agent/date if one was already\ngenerated. Does NOT trigger generation — that's the POST endpoint.\n\nResponse: {exists, agent_id, date, path, content}",
"description": "Return the existing daily summary for an agent/date if one was already\ngenerated. Does NOT trigger generation \u2014 that's the POST endpoint.\n\nResponse: {exists, agent_id, date, path, content}",
"operationId": "read_daily_summary_api_ui_daily_summary_get",
"parameters": [
{
Expand Down Expand Up @@ -2050,7 +2050,7 @@
"Web UI"
],
"summary": "Migrate Import",
"description": "Run an end-to-end migration.\n\nBody: ``{provider, file?, api_key?, agent_id?}``. Loads-or-exports,\nmaps, chunks at 100/req, and writes via ``DirectClient.batch_remember``.\nReturns numeric summary only — no LLM narrative.",
"description": "Run an end-to-end migration.\n\nBody: ``{provider, file?, api_key?, agent_id?}``. Loads-or-exports,\nmaps, chunks at 100/req, and writes via ``DirectClient.batch_remember``.\nReturns numeric summary only \u2014 no LLM narrative.",
"operationId": "migrate_import_api_ui_migrate_import_post",
"requestBody": {
"content": {
Expand Down Expand Up @@ -2248,8 +2248,8 @@
"anyOf": [
{
"type": "integer",
"maximum": 100,
"minimum": 1
"maximum": 100.0,
"minimum": 1.0
},
{
"type": "null"
Expand All @@ -2262,8 +2262,8 @@
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
"maximum": 1.0,
"minimum": 0.0
},
{
"type": "null"
Expand All @@ -2276,8 +2276,8 @@
"anyOf": [
{
"type": "number",
"maximum": 2,
"minimum": 0
"maximum": 2.0,
"minimum": 0.0
},
{
"type": "null"
Expand Down Expand Up @@ -2400,8 +2400,8 @@
},
"confidence": {
"type": "number",
"maximum": 1,
"minimum": 0,
"maximum": 1.0,
"minimum": 0.0,
"title": "Confidence",
"description": "Confidence score (0-1)",
"default": 0.8
Expand Down Expand Up @@ -2606,7 +2606,7 @@
"properties": {
"conflict_index": {
"type": "integer",
"minimum": 0,
"minimum": 0.0,
"title": "Conflict Index",
"description": "Conflict index to resolve"
},
Expand Down Expand Up @@ -2733,8 +2733,8 @@
},
"max_memories": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"maximum": 100.0,
"minimum": 1.0,
"title": "Max Memories",
"description": "Maximum candidate memories to extract",
"default": 20
Expand Down Expand Up @@ -2841,8 +2841,8 @@
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
"maximum": 1.0,
"minimum": 0.0
},
{
"type": "null"
Expand Down Expand Up @@ -3116,13 +3116,13 @@
"type": "string",
"format": "date-time",
"title": "As Of",
"description": "Point-in-time — YYYY-MM-DD (defaults to end of day) or full ISO datetime e.g. 2025-11-01T14:30:00Z"
"description": "Point-in-time \u2014 YYYY-MM-DD (defaults to end of day) or full ISO datetime e.g. 2025-11-01T14:30:00Z"
},
"limit": {
"anyOf": [
{
"type": "integer",
"minimum": 1
"minimum": 1.0
},
{
"type": "null"
Expand Down Expand Up @@ -3159,13 +3159,13 @@
"type": "string",
"format": "date-time",
"title": "Since",
"description": "Start of change window — YYYY-MM-DD (defaults to start of day) or full ISO datetime e.g. 2025-11-01T00:00:00Z"
"description": "Start of change window \u2014 YYYY-MM-DD (defaults to start of day) or full ISO datetime e.g. 2025-11-01T00:00:00Z"
},
"limit": {
"anyOf": [
{
"type": "integer",
"minimum": 1
"minimum": 1.0
},
{
"type": "null"
Expand Down Expand Up @@ -3202,7 +3202,7 @@
"anyOf": [
{
"type": "integer",
"minimum": 1
"minimum": 1.0
},
{
"type": "null"
Expand Down Expand Up @@ -3242,7 +3242,7 @@
"anyOf": [
{
"type": "integer",
"minimum": 1
"minimum": 1.0
},
{
"type": "null"
Expand All @@ -3255,8 +3255,8 @@
"anyOf": [
{
"type": "number",
"maximum": 1,
"minimum": 0
"maximum": 1.0,
"minimum": 0.0
},
{
"type": "null"
Expand Down Expand Up @@ -3373,8 +3373,8 @@
},
"confidence": {
"type": "number",
"maximum": 1,
"minimum": 0,
"maximum": 1.0,
"minimum": 0.0,
"title": "Confidence",
"description": "Confidence score (0-1)",
"default": 0.8
Expand Down
Loading
Loading