Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
38aeb73
Sprint 5A: task workspace records and provisioning (#1)
samrusani Mar 13, 2026
8103d5e
Sprint 5B: Project Truth Compaction 01 (#2)
samrusani Mar 13, 2026
389e22b
Sprint 5C: task artifact records and registration (#3)
samrusani Mar 14, 2026
ec8055e
Sprint 5D: Local Artifact Ingestion V0 (#4)
samrusani Mar 14, 2026
ec13202
Sprint 5E: add artifact chunk retrieval (#5)
samrusani Mar 14, 2026
a740d52
Sprint 5F: artifact chunk compile integration (#6)
samrusani Mar 14, 2026
50012a9
Sprint 5G: artifact chunk embedding substrate (#7)
samrusani Mar 14, 2026
ba6b982
Sprint 5H: semantic artifact chunk retrieval primitive (#8)
samrusani Mar 15, 2026
d716653
Sprint 5I: compile semantic artifact retrieval adoption (#9)
samrusani Mar 15, 2026
9d7451e
Sprint 5J: deterministic hybrid artifact merge (#10)
samrusani Mar 16, 2026
dfd3694
Sprint 5K: project truth synchronization (#11)
samrusani Mar 16, 2026
9635d08
Sprint 5L: PDF artifact parsing v0 (#12)
samrusani Mar 16, 2026
914014d
Sprint 5M: DOCX artifact parsing v0 (#13)
samrusani Mar 16, 2026
64c1c94
Sprint 5N: RFC822 email artifact parsing v0 (#14)
samrusani Mar 16, 2026
a65f00e
Sprint 5O: Gmail connection and single-message ingestion (#15)
samrusani Mar 16, 2026
93637e2
Sprint 5P: Gmail credential hardening (#16)
samrusani Mar 16, 2026
d3bf99d
Sprint 5Q: Gmail refresh token lifecycle (#17)
samrusani Mar 16, 2026
945a6b8
Sprint 5R: Gmail refresh-token rotation handling (#18)
samrusani Mar 16, 2026
e28aa92
Sprint 5S: project truth synchronization after Gmail auth hardening (…
samrusani Mar 16, 2026
e13dca3
Sprint 5T: externalize Gmail credential storage
samrusani Mar 16, 2026
ae91851
Sprint 5U: project truth sync after Gmail secret externalization (#20)
samrusani Mar 16, 2026
9c1da9c
Sprint 6A: MVP web shell and core operator views (#21)
samrusani Mar 17, 2026
4e42dd3
Sprint 6B: governed request approval workflow UI (#22)
samrusani Mar 17, 2026
c3b11fd
Sprint 6C: stabilize web workspace verification (#23)
samrusani Mar 17, 2026
e1aaba3
Sprint 6D: trace review APIs for explain-why (#24)
samrusani Mar 17, 2026
dd40925
Sprint 6E: live explain-why trace UI (#25)
samrusani Mar 17, 2026
d64b857
Sprint 6F: approval execution and review UI (#26)
samrusani Mar 17, 2026
9a8709f
Sprint 6G: operator chat response mode (#27)
samrusani Mar 17, 2026
5c4cab0
Sprint 6H: thread and session continuity APIs (#28)
samrusani Mar 17, 2026
e94d705
Sprint 6I: chat thread selection and continuity review UI (#29)
samrusani Mar 17, 2026
c2fdf39
Sprint 6J: project truth sync and context compaction (#30)
samrusani Mar 18, 2026
3f65615
Sprint 6K: live chat transcript from continuity events (#31)
samrusani Mar 18, 2026
b98330b
Sprint 6L: thread-linked governed workflow in chat (#32)
samrusani Mar 18, 2026
24c50e3
Sprint 6M: thread-linked task-step timeline in chat (#33)
samrusani Mar 18, 2026
bebe856
Sprint 6N: Thread-Linked Explain-Why Panel In Chat (#34)
samrusani Mar 18, 2026
5098918
Sprint 6O: Project Truth Synchronization After Chat Explainability (#35)
samrusani Mar 18, 2026
d2d1297
Sprint 6P: Memory Review Workspace UI (#36)
samrusani Mar 18, 2026
14b85c9
Sprint 6Q: Entity Review Workspace UI (#37)
samrusani Mar 18, 2026
eb46120
Sprint 6R: Artifact Review Workspace UI (#38)
samrusani Mar 18, 2026
4ffb9bf
Sprint 6S: Project Truth Synchronization After Knowledge Review Works…
samrusani Mar 18, 2026
aae9851
Sprint 6T: Gmail Account Review and Single-Message Ingestion UI (#40)
samrusani Mar 19, 2026
97758d0
Sprint 6U: Calendar connection and single-event ingestion seam (#41)
samrusani Mar 19, 2026
32ea329
Sprint 6V: Calendar account review and single-event ingestion UI (#42)
samrusani Mar 19, 2026
f00abd5
Sprint 6W: Project truth sync after connector UI expansion (#43)
samrusani Mar 19, 2026
d8f7269
Sprint 6X: calendar event discovery API v0 (#44)
samrusani Mar 19, 2026
f9b6afd
Sprint 6Y: Project truth sync after calendar event discovery (#45)
samrusani Mar 19, 2026
dce843c
Sprint 6Z: calendar event discovery adoption UI (#46)
samrusani Mar 19, 2026
7643aff
Sprint 7A: MVP magnesium ship-gate evidence (#47)
samrusani Mar 19, 2026
6829e95
Sprint 7B: memory quality gate readiness (#48)
samrusani Mar 19, 2026
e98bfbe
Sprint 7C: memory queue adjudication throughput (#49)
samrusani Mar 19, 2026
99d481d
Sprint 7E: MVP acceptance evidence suite
samrusani Mar 19, 2026
57a1750
Sprint 7F: MVP quantitative gate evidence
samrusani Mar 19, 2026
e6947ee
Sprint 7G: MVP extensive validation matrix
samrusani Mar 19, 2026
6f247ec
Sprint 7H: MVP RC truth sync and gate canonicalization
samrusani Mar 19, 2026
5b6ddfd
Sprint 7I: memory quality ship-margin hardening
samrusani Mar 19, 2026
25dd265
Phase 2 Sprint 2: Typed memory backbone
samrusani Mar 23, 2026
b1d322a
Phase 2 Sprint 3: implement open-loop backbone (#56)
samrusani Mar 23, 2026
b5b0398
Phase 2 Sprint 4: deterministic resumption briefs (#57)
samrusani Mar 23, 2026
2ddb9b0
Phase 2 Sprint 5: explicit commitment capture (#58)
samrusani Mar 23, 2026
5798c6e
Phase 2 Sprint 6: unify explicit signal capture (#59)
samrusani Mar 23, 2026
d0f950c
Phase 2 Sprint 7: add chat capture controls (#60)
samrusani Mar 23, 2026
276d9d1
Phase 2 Sprint 8: sync truth docs and gate entrypoints (#61)
samrusani Mar 23, 2026
7ea1d41
Phase 2 Sprint 9: add gate wrapper parity tests (#62)
samrusani Mar 23, 2026
f69cb64
Phase 2 Sprint 10: add capture-to-resumption acceptance evidence (#63)
samrusani Mar 23, 2026
b6e3f18
Phase 2 Sprint 11: Canonicalize Phase 2 gate runners
samrusani Mar 23, 2026
a027cfb
Phase 2 Sprint 12: Control-doc truth guardrails and baseline sync
samrusani Mar 24, 2026
3f1601d
Phase 2 Sprint 13: Gate contract test canonicalization
samrusani Mar 24, 2026
43c99e2
Phase 2 Sprint 14: Memory-quality gate realism hardening
samrusani Mar 24, 2026
78f7400
Phase 2 Sprint 15: Phase-closeout packet and exit guardrail
samrusani Mar 24, 2026
4f2403a
Phase 3 Sprint 1: Multi-agent profile backbone
samrusani Mar 24, 2026
81f3556
feat(web): adopt agent profile seams in chat shell (phase3 sprint2) (…
samrusani Mar 24, 2026
c5b5d46
feat(api): enforce profile-scoped memory context isolation (#71)
samrusani Mar 25, 2026
0b569c6
feat(api): scope policy evaluation and routing by thread profile (#72)
samrusani Mar 25, 2026
3ae704b
Sprint 7: profile-scoped model runtime routing (#73)
samrusani Mar 25, 2026
984fe2d
Sprint 8: isolate execution budgets by profile scope (#74)
samrusani Mar 25, 2026
1881904
Sprint 9: harden budget context invariance fail-closed (#75)
samrusani Mar 26, 2026
773a772
Sprint 10: canonicalize phase 3 closeout truth and gates (#76)
samrusani Mar 26, 2026
3380109
Phase 4 Sprint 11: add durable task run backbone
samrusani Mar 27, 2026
71e81a4
Phase 4 Sprint 12: add idempotent approval-resume execution
samrusani Mar 27, 2026
e0bb25e
Phase 4 Sprint 13: add run observability and ship gates
samrusani Mar 27, 2026
67ee667
Phase 4 Sprint 14: canonicalize MVP ship gates
samrusani Mar 27, 2026
b517a70
Phase 4 Sprint 15: add RC rehearsal evidence bundle
samrusani Mar 28, 2026
763eaff
Ignore generated release artifacts
samrusani Mar 28, 2026
c555e5a
Sprint 16: archive RC evidence with append-only ledger (#77)
samrusani Mar 28, 2026
e9caea6
Sprint 17: harden RC archive ledger concurrency (#78)
samrusani Mar 28, 2026
f15f1bc
Phase 4 Sprint 18: MVP exit manifest closeout (#79)
samrusani Mar 28, 2026
ece059a
Phase 4 Sprint 19: MVP qualification and sign-off record (#80)
samrusani Mar 29, 2026
9adc77e
Phase 5 Sprint 17: continuity backbone and fast capture (#81)
samrusani Mar 29, 2026
32ade56
Phase 5 Sprint 18: recall and deterministic resumption (#82)
samrusani Mar 29, 2026
d56068f
Phase 5 Sprint 19: memory review, correction, and freshness (#83)
samrusani Mar 29, 2026
ff34d54
Phase 5 Sprint 20: open loops and daily review (#84)
samrusani Mar 29, 2026
844f0d1
Phase 6 Sprint 21: canonical memory quality gate and queue priority (…
samrusani Mar 29, 2026
c531bad
Phase 6 Sprint 22: retrieval ranking calibration and evaluation (#86)
samrusani Mar 29, 2026
dbfc417
Phase 6 Sprint 23: correction impact and freshness hygiene (#87)
samrusani Mar 30, 2026
265d7c1
Phase 6 Sprint 24: trust dashboard and quality evidence (#88)
samrusani Mar 30, 2026
a724ebc
Phase 7 Sprint 25: chief-of-staff priority engine dashboard (#89)
samrusani Mar 31, 2026
63f1096
Phase 7 Sprint 26: follow-through supervision (#90)
samrusani Mar 31, 2026
866e604
Phase 7 Sprint 27: preparation briefs and resumption supervision (#91)
samrusani Mar 31, 2026
0dfb9e5
Phase 7 Sprint 28: weekly review and outcome learning (#92)
samrusani Mar 31, 2026
d489e08
Phase 8 Sprint 29: chief-of-staff action handoff artifacts (#93)
samrusani Mar 31, 2026
2ffb47a
Phase 8 Sprint 30: handoff queue and operational review (#94)
samrusani Apr 1, 2026
ce1e046
Phase 8 Refactor 01: store and task-step store refactor (#95)
samrusani Apr 1, 2026
52e9f2b
Phase 8 Sprint 31: governed execution routing (#96)
samrusani Apr 7, 2026
1d8c509
Phase 8 Sprint 32: outcome learning and closure quality (#97)
samrusani Apr 7, 2026
9f73cbc
Sprint 8 end refactor (#98)
samrusani Apr 7, 2026
c9946d7
side sprint: pentest hardening safeguards (#99)
samrusani Apr 7, 2026
186ad50
P9-S33: finalize public core packaging deliverables (#100)
samrusani Apr 7, 2026
c11af18
P9-S34: ship CLI and continuity UX (#101)
samrusani Apr 7, 2026
b3e0f94
P9-S35: ship MCP server (#102)
samrusani Apr 7, 2026
142d80a
P9-S36: ship OpenClaw adapter (#103)
samrusani Apr 7, 2026
0694cee
P9-S37: ship importers and eval harness (#104)
samrusani Apr 8, 2026
95fd80e
P9-S38: ship launch and release docs (#105)
samrusani Apr 8, 2026
b7f5cfc
Compaction 01: archive stale planning context (#106)
samrusani Apr 8, 2026
7e39d7e
P10-S1: ship identity and workspace bootstrap (#107)
samrusani Apr 8, 2026
66d5019
P10-S2: ship Telegram transport and normalization (#108)
samrusani Apr 8, 2026
57dabe6
P10-S3: ship chat-native continuity and approvals (#109)
samrusani Apr 8, 2026
24995e5
P10-S4: ship daily brief and notifications (#110)
samrusani Apr 8, 2026
3f478f4
P10-S5: ship beta hardening and launch readiness (#111)
samrusani Apr 8, 2026
75784df
docs: refresh README and scrub personal path identifiers (#112)
samrusani Apr 8, 2026
501e271
chore(release): scaffold npm packages and tag-based publish workflow
samrusani Apr 9, 2026
8ca5457
Ship one-command OpenClaw integration
samrusani Apr 9, 2026
c60d1ce
docs: highlight OpenClaw one-command integration in README (#113)
samrusani Apr 9, 2026
2df0480
Add Hermes MCP integration docs, smoke test, and runtime compatibilit…
samrusani Apr 9, 2026
e9ce104
docs: surface Hermes integration in README (#115)
samrusani Apr 9, 2026
e86a0f6
chore(release): bump @aliceos/alice-cli to 0.1.1
samrusani Apr 9, 2026
13379ee
ci: fix npm publish workflow version detection
samrusani Apr 9, 2026
a785266
Add Hermes Alice workflow skill pack and install docs (#116)
samrusani Apr 9, 2026
fdc8352
chore: keep internal operating docs local-only
samrusani Apr 9, 2026
81eacb4
chore(public): remove internal planning docs and sanitize references
samrusani Apr 9, 2026
d39ace6
security: harden API ingress and CI scanning (#117)
samrusani Apr 9, 2026
f6a5307
Rewrite README positioning copy
redacted Apr 9, 2026
9bf224a
Add trusted fact classes and trust-aware memory review flow
samrusani Apr 10, 2026
41ca734
Document trust-aware memory in README
redacted Apr 10, 2026
032d38e
Separate continuity lifecycle states
redacted Apr 10, 2026
6354d93
Merge pull request #124 from samrusani/codex/separate-lifecycle-states
samrusani Apr 10, 2026
7aeea18
Document lifecycle controls in README
redacted Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
46 changes: 46 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
APP_ENV=development
APP_HOST=127.0.0.1
APP_PORT=8000
# Development-only local credentials. Override for any shared or remote environment.
DATABASE_URL=postgresql://alicebot_app:alicebot_app@localhost:5432/alicebot
DATABASE_ADMIN_URL=postgresql://alicebot_admin:alicebot_admin@localhost:5432/alicebot
REDIS_URL=redis://localhost:6379/0
S3_ENDPOINT_URL=http://localhost:9000
S3_ACCESS_KEY=alicebot
S3_SECRET_KEY=alicebot-secret
S3_BUCKET=alicebot-local
HEALTHCHECK_TIMEOUT_SECONDS=2
TASK_WORKSPACE_ROOT=/tmp/alicebot/task-workspaces
# Server-side authenticated user binding for /v0 requests.
ALICEBOT_AUTH_USER_ID=00000000-0000-0000-0000-000000000001
# Default sample-data fixture consumed by ./scripts/load_sample_data.sh.
PUBLIC_SAMPLE_DATA_PATH=fixtures/public_sample_data/continuity_v1.json
# Per-user response generation throttle (POST /v0/responses).
RESPONSE_RATE_LIMIT_WINDOW_SECONDS=60
RESPONSE_RATE_LIMIT_MAX_REQUESTS=20
# Hosted auth and webhook ingress throttles.
MAGIC_LINK_START_RATE_LIMIT_WINDOW_SECONDS=300
MAGIC_LINK_START_RATE_LIMIT_MAX_REQUESTS=5
MAGIC_LINK_VERIFY_RATE_LIMIT_WINDOW_SECONDS=300
MAGIC_LINK_VERIFY_RATE_LIMIT_MAX_REQUESTS=10
TELEGRAM_WEBHOOK_RATE_LIMIT_WINDOW_SECONDS=60
TELEGRAM_WEBHOOK_RATE_LIMIT_MAX_REQUESTS=120
# Telegram transport defaults.
TELEGRAM_LINK_TTL_SECONDS=600
TELEGRAM_BOT_USERNAME=alicebot
TELEGRAM_WEBHOOK_SECRET=
TELEGRAM_BOT_TOKEN=
# Browser security posture.
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
CORS_ALLOWED_METHODS=GET,POST,PUT,PATCH,DELETE,OPTIONS
CORS_ALLOWED_HEADERS=Authorization,Content-Type,X-AliceBot-User-Id,X-Telegram-Bot-Api-Secret-Token
CORS_ALLOW_CREDENTIALS=false
CORS_PREFLIGHT_MAX_AGE_SECONDS=600
SECURITY_HEADERS_ENABLED=true
SECURITY_HEADERS_HSTS_MAX_AGE_SECONDS=31536000
SECURITY_HEADERS_HSTS_INCLUDE_SUBDOMAINS=true
# Proxy and ingress trust boundaries.
TRUST_PROXY_HEADERS=false
TRUSTED_PROXY_IPS=
# Entrypoint abuse-control backend.
ENTRYPOINT_RATE_LIMIT_BACKEND=redis
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly

- package-ecosystem: pip
directory: /
schedule:
interval: weekly

- package-ecosystem: npm
directory: /packages/alice-core
schedule:
interval: weekly

- package-ecosystem: npm
directory: /packages/alice-cli
schedule:
interval: weekly
113 changes: 113 additions & 0 deletions .github/workflows/publish-npm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: Publish NPM Packages

on:
push:
tags:
- "v*"

permissions:
contents: read

concurrency:
group: publish-npm-${{ github.ref }}
cancel-in-progress: false

jobs:
publish-core:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org

- name: Resolve core version
id: core_meta
working-directory: packages/alice-core
run: |
version=$(npm pkg get version --json | tr -d '"' | tr -d '\n')
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Validate core version output
run: |
if [ -z "${{ steps.core_meta.outputs.version }}" ]; then
echo "Core version output is empty."
exit 1
fi

- name: Check if core version is already published
id: core_exists
run: |
if npm view @aliceos/alice-core@${{ steps.core_meta.outputs.version }} version >/dev/null 2>&1; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
fi

- name: Publish @aliceos/alice-core
if: steps.core_exists.outputs.exists == 'false'
working-directory: packages/alice-core
run: npm publish --access public --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Skip core publish (already exists)
if: steps.core_exists.outputs.exists == 'true'
run: echo "@aliceos/alice-core@${{ steps.core_meta.outputs.version }} already published; skipping."

publish-cli:
runs-on: ubuntu-latest
needs: publish-core
permissions:
contents: read
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org

- name: Resolve cli version
id: cli_meta
working-directory: packages/alice-cli
run: |
version=$(npm pkg get version --json | tr -d '"' | tr -d '\n')
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: Validate cli version output
run: |
if [ -z "${{ steps.cli_meta.outputs.version }}" ]; then
echo "CLI version output is empty."
exit 1
fi

- name: Check if cli version is already published
id: cli_exists
run: |
if npm view @aliceos/alice-cli@${{ steps.cli_meta.outputs.version }} version >/dev/null 2>&1; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
fi

- name: Publish @aliceos/alice-cli
if: steps.cli_exists.outputs.exists == 'false'
working-directory: packages/alice-cli
run: npm publish --access public --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Skip cli publish (already exists)
if: steps.cli_exists.outputs.exists == 'true'
run: echo "@aliceos/alice-cli@${{ steps.cli_meta.outputs.version }} already published; skipping."
57 changes: 57 additions & 0 deletions .github/workflows/security-scans.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Security Scans

on:
pull_request:
push:
branches:
- main
schedule:
- cron: "23 3 * * 1"

permissions:
contents: read

jobs:
secrets:
name: Secrets Scan (Gitleaks)
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Run gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

codeql:
name: CodeQL (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language:
- python
- javascript
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Autobuild
uses: github/codeql-action/autobuild@v3

- name: Analyze
uses: github/codeql-action/analyze@v3
23 changes: 23 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.DS_Store
.env
.pytest_cache/
.venv/
*.egg-info/
__pycache__/
*.pyc
apps/web/.next/
apps/web/node_modules/
artifacts/

# Internal operating docs (keep local, exclude from public repo)
.ai/
BUILD_REPORT.md
REVIEW_REPORT.md
ARCHIVE_RECOMMENDATIONS.md
RECOMMENDED_ADRS.md

# Internal planning/process docs (keep local, exclude from public repo)
docs/archive/planning/
docs/archive/sprints/
docs/phase5-sprint-17-20-plan.md
docs/phase8-sprint-29-32-plan.md
Loading
Loading