Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
0097d33
feat(core): add tools agent insight type
starboyate May 24, 2026
0a75c23
fix(core): reconcile default insight types on startup
starboyate May 24, 2026
d44d4dc
refactor(core): share graph hint conversion
starboyate May 24, 2026
60d2b87
feat(retrieval): expose item category metadata
starboyate May 25, 2026
9b6ec31
feat(rawdata-agent): scaffold agent timeline content
starboyate May 25, 2026
375b5ca
feat(rawdata-agent): redact sensitive agent events
starboyate May 25, 2026
703dfdf
feat(rawdata-agent): assemble agent episodes
starboyate May 25, 2026
29708d3
feat(rawdata-agent): register agent rawdata processor
starboyate May 25, 2026
4822a3f
feat(rawdata-agent): extract deterministic agent memories
starboyate May 25, 2026
a1b2880
feat(rawdata-agent): extract playbooks and directives
starboyate May 25, 2026
9d55f16
test(rawdata-agent): cover extraction pipeline
starboyate May 25, 2026
bb26cf4
feat(rawdata-agent): add spring boot starter
starboyate May 25, 2026
fbe3318
test(jdbc): cover agent timeline json codec
starboyate May 25, 2026
2979afb
feat(clients): add agent timeline helpers
starboyate May 25, 2026
cc2cc26
feat(claude-code): capture agent timelines
starboyate May 25, 2026
1c92b37
feat(codex): capture agent timelines
starboyate May 25, 2026
cecdffe
feat(integrations): format agent memories
starboyate May 25, 2026
16de61c
docs: describe agent timeline ingestion
starboyate May 25, 2026
421e3b0
test(server): cover agent timeline open api
starboyate May 25, 2026
a4ff413
test(eval): add rawdata-agent fixtures
starboyate May 25, 2026
eeb31e1
feat: refine agent rawdata timeline identity
starboyate May 25, 2026
e5d6614
refine agent timeline ingestion scope
starboyate May 25, 2026
19808aa
Capture full agent turn timelines
starboyate May 25, 2026
fac6606
Normalize agent timeline tool events
starboyate May 25, 2026
2ce9432
feat: strengthen coding agent timeline ingestion
starboyate May 26, 2026
3248de5
fix: defer compact extraction until stop
starboyate May 26, 2026
09dd9bc
Unify coding agent memory identity
starboyate May 27, 2026
92bf30c
feat: add agent memory query APIs and clients
starboyate May 27, 2026
42c637a
feat: inject agent session context on startup
starboyate May 27, 2026
4468583
feat: add claude code agent context compiler
starboyate May 28, 2026
c8a1fe2
feat: compile claude code session context
starboyate May 28, 2026
857c747
feat: compile claude code prompt retrieval context
starboyate May 28, 2026
789a22a
feat: add codex agent context compiler
starboyate May 28, 2026
dd8c1cc
feat: compile codex memory context
starboyate May 28, 2026
4071b6f
fix: install codex context compiler
starboyate May 28, 2026
d8e2ec2
docs: explain agent context compiler output
starboyate May 28, 2026
2a64cf1
docs: add agent context compiler implementation plan
starboyate May 28, 2026
b77c965
feat(agent): absorb deterministic tool telemetry
starboyate May 28, 2026
b4001cf
feat(agent): configure pre-tool context
starboyate May 28, 2026
f34b197
feat(agent): support structured retrieve in integrations
starboyate May 28, 2026
361f338
feat(agent): extract pre-tool context targets
starboyate May 28, 2026
0d90c30
feat(agent): query pre-tool memory context
starboyate May 28, 2026
90d675d
feat(agent): compile pre-tool memory context
starboyate May 28, 2026
80526f6
feat(agent): inject Claude Code pre-tool context
starboyate May 28, 2026
4e6cb3a
feat(agent): inject Codex pre-tool context
starboyate May 28, 2026
0b30c65
chore(agent): install pre-tool context helper
starboyate May 28, 2026
8745a1a
docs(agent): describe pre-tool context
starboyate May 28, 2026
c667681
docs(agent): add pre-tool context implementation plan
starboyate May 28, 2026
1c970d1
feat(agent): make prompt context project-first
starboyate May 28, 2026
18044b8
docs: remove superpowers planning artifacts
starboyate May 28, 2026
51d480f
chore: ignore Python cache files
starboyate May 28, 2026
c4edbd4
chore: ignore generated client artifacts
starboyate May 28, 2026
ff299a0
test(python): sort memory test imports
starboyate May 28, 2026
7750169
fix(python): type agent timeline raw content
starboyate May 28, 2026
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
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,34 @@ target/
### Mac OS ###
.DS_Store

### Python ###
__pycache__/
*.py[cod]

### JavaScript / TypeScript ###
node_modules/
.pnpm-store/
dist/
dist-ssr/
coverage/
.turbo/
.next/
.vite/
.vitest-attachments/
**/__screenshots__/
*.tsbuildinfo
*.tgz
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

### Go ###
*.test
*.out
coverage.out
*.coverprofile

.flattened-pom.xml
**/dependency-reduced-pom.xml

Expand Down
31 changes: 31 additions & 0 deletions evaluation/rawdata-agent/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# rawdata-agent Evaluation Fixtures

This directory contains small black-box fixtures for validating Memind's
`agent_timeline` ingestion path against a running `memind-server`.

Each fixture is a self-contained JSON document:

- `request`: payload for `POST /open/v1/memory/sync/extract`.
- `expectations.expectedCategories`: item categories expected from the first extraction.
- `expectations.queries`: retrieval checks for `POST /open/v1/memory/retrieve`.
- `expectations.optionalCategories`: categories that may appear when LLM extraction is enabled,
but are not required for deterministic v1 acceptance.

The fixtures are intentionally deterministic-friendly. They validate the core
coding-agent memory path without depending on an LLM:

- command/tool reuse memory, such as `npm test payment`.
- resolution memory from a failed command, file edit, and later matching success.
- duplicate submission behavior through stable raw content and item hashes.

## Run

Start `memind-server` on the default port, then run:

```bash
python3 evaluation/rawdata-agent/run-fixtures.py --base-url http://127.0.0.1:8366
```

The runner exits non-zero when the server is unreachable or any fixture fails.
It prints a duplicate item rate for each fixture so regressions in idempotency
are visible during manual evaluation.
97 changes: 97 additions & 0 deletions evaluation/rawdata-agent/fixtures/auth-jwt-fix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"name": "auth-jwt-fix",
"description": "A coding-agent episode where a JWT validation regression is fixed and validated.",
"request": {
"userId": "eval-agent-user-auth",
"agentId": "eval-coding-agent",
"sourceClient": "claude-code",
"rawContent": {
"type": "agent_timeline",
"sourceClient": "claude-code",
"sourceVersion": "eval-fixture",
"sessionId": "eval-auth-jwt-session",
"timelineId": "eval-auth-jwt-timeline",
"project": {
"name": "identity-service",
"rootPath": "/workspace/identity-service",
"git": {
"branch": "fix/jwt-clock-skew",
"commit": "8a12c0ffee"
}
},
"events": [
{
"id": "auth-e1",
"seq": 1,
"kind": "user_prompt",
"text": "Fix the expired JWT acceptance regression in the auth middleware.",
"occurredAt": "2026-05-24T09:00:00Z"
},
{
"id": "auth-e2",
"seq": 2,
"kind": "command",
"toolName": "Bash",
"command": "npm test auth-jwt",
"status": "failed",
"exitCode": 1,
"output": "TokenValidationError: expired JWT accepted beyond allowed clock skew",
"metadata": {
"failureSignal": "expired JWT accepted beyond allowed clock skew"
},
"occurredAt": "2026-05-24T09:01:00Z"
},
{
"id": "auth-e3",
"seq": 3,
"kind": "file_edit",
"path": "src/auth/jwt_validator.ts",
"operation": "modify",
"occurredAt": "2026-05-24T09:04:00Z"
},
{
"id": "auth-e4",
"seq": 4,
"kind": "file_edit",
"path": "test/auth/jwt_validator.test.ts",
"operation": "modify",
"occurredAt": "2026-05-24T09:06:00Z"
},
{
"id": "auth-e5",
"seq": 5,
"kind": "command",
"toolName": "Bash",
"command": "npm test auth-jwt",
"status": "success",
"exitCode": 0,
"output": "auth-jwt tests passed",
"occurredAt": "2026-05-24T09:08:00Z"
},
{
"id": "auth-e6",
"seq": 6,
"kind": "task_completed",
"status": "success",
"text": "JWT expiry validation now rejects tokens beyond the allowed clock skew.",
"occurredAt": "2026-05-24T09:09:00Z"
}
]
}
},
"expectations": {
"expectedCategories": ["tool", "resolution"],
"queries": [
{
"query": "How should auth JWT fixes be validated?",
"mustContain": ["npm test auth-jwt"],
"expectedCategories": ["tool"]
},
{
"query": "What fixed expired JWT acceptance?",
"mustContain": ["expired JWT accepted beyond allowed clock skew"],
"expectedCategories": ["resolution"]
}
]
}
}
104 changes: 104 additions & 0 deletions evaluation/rawdata-agent/fixtures/payment-rounding-fix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"name": "payment-rounding-fix",
"description": "A payment rounding failure is fixed, retested, and stored as tool plus resolution memory.",
"request": {
"userId": "eval-agent-user-payment",
"agentId": "eval-coding-agent",
"sourceClient": "codex",
"rawContent": {
"type": "agent_timeline",
"sourceClient": "codex",
"sourceVersion": "eval-fixture",
"sessionId": "eval-payment-session",
"timelineId": "eval-payment-timeline",
"project": {
"name": "payments-api",
"rootPath": "/workspace/payments-api",
"git": {
"branch": "fix/payment-rounding",
"commit": "9b34fade12"
}
},
"events": [
{
"id": "payment-e1",
"seq": 1,
"kind": "user_prompt",
"text": "Fix the payment calculation rounding mismatch.",
"occurredAt": "2026-05-24T10:00:00Z"
},
{
"id": "payment-e2",
"seq": 2,
"kind": "command",
"toolName": "Shell",
"command": "npm test payment",
"status": "failed",
"exitCode": 1,
"output": "rounding mismatch on half-cent tax calculation",
"metadata": {
"failureSignal": "rounding mismatch on half-cent tax calculation"
},
"occurredAt": "2026-05-24T10:01:00Z"
},
{
"id": "payment-e3",
"seq": 3,
"kind": "file_read",
"path": "src/payment/calc.ts",
"operation": "read",
"occurredAt": "2026-05-24T10:02:00Z"
},
{
"id": "payment-e4",
"seq": 4,
"kind": "file_edit",
"path": "src/payment/calc.ts",
"operation": "modify",
"occurredAt": "2026-05-24T10:03:00Z"
},
{
"id": "payment-e5",
"seq": 5,
"kind": "file_edit",
"path": "test/payment/calc.test.ts",
"operation": "modify",
"occurredAt": "2026-05-24T10:05:00Z"
},
{
"id": "payment-e6",
"seq": 6,
"kind": "command",
"toolName": "Shell",
"command": "npm test payment",
"status": "success",
"exitCode": 0,
"output": "payment tests passed",
"occurredAt": "2026-05-24T10:07:00Z"
},
{
"id": "payment-e7",
"seq": 7,
"kind": "stop",
"status": "success",
"occurredAt": "2026-05-24T10:08:00Z"
}
]
}
},
"expectations": {
"expectedCategories": ["tool", "resolution"],
"queries": [
{
"query": "How do I validate payment calculation changes?",
"mustContain": ["npm test payment"],
"expectedCategories": ["tool"]
},
{
"query": "What resolved the payment rounding mismatch?",
"mustContain": ["rounding mismatch on half-cent tax calculation"],
"expectedCategories": ["resolution"]
}
]
}
}
71 changes: 71 additions & 0 deletions evaluation/rawdata-agent/fixtures/project-directive.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{
"name": "project-directive",
"description": "A project-scoped coding-agent instruction that should be recoverable as agent memory.",
"request": {
"userId": "eval-agent-user-directive",
"agentId": "eval-coding-agent",
"sourceClient": "claude-code",
"rawContent": {
"type": "agent_timeline",
"sourceClient": "claude-code",
"sourceVersion": "eval-fixture",
"sessionId": "eval-directive-session",
"timelineId": "eval-directive-timeline",
"project": {
"name": "ledger-service",
"rootPath": "/workspace/ledger-service",
"git": {
"branch": "main",
"commit": "7c77directive"
}
},
"events": [
{
"id": "directive-e1",
"seq": 1,
"kind": "user_prompt",
"text": "For this repository, always run go test ./... before reporting completion.",
"occurredAt": "2026-05-24T11:00:00Z"
},
{
"id": "directive-e2",
"seq": 2,
"kind": "file_edit",
"path": "README.md",
"operation": "modify",
"occurredAt": "2026-05-24T11:01:00Z"
},
{
"id": "directive-e3",
"seq": 3,
"kind": "command",
"toolName": "Bash",
"command": "go test ./...",
"status": "success",
"exitCode": 0,
"output": "ok ./...",
"occurredAt": "2026-05-24T11:03:00Z"
},
{
"id": "directive-e4",
"seq": 4,
"kind": "task_completed",
"status": "success",
"text": "Updated README and validated with go test ./...",
"occurredAt": "2026-05-24T11:04:00Z"
}
]
}
},
"expectations": {
"expectedCategories": ["tool"],
"queries": [
{
"query": "What command should be run before reporting completion in ledger-service?",
"mustContain": ["go test ./..."],
"expectedCategories": ["tool"]
}
],
"optionalCategories": ["directive"]
}
}
Loading
Loading