instar 0.9.0 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/commands/init.js +110 -13
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/commands/server.d.ts.map +1 -1
  5. package/dist/commands/server.js +202 -71
  6. package/dist/commands/server.js.map +1 -1
  7. package/dist/commands/setup.d.ts.map +1 -1
  8. package/dist/commands/setup.js +38 -4
  9. package/dist/commands/setup.js.map +1 -1
  10. package/dist/core/AgentConnector.d.ts +76 -0
  11. package/dist/core/AgentConnector.d.ts.map +1 -0
  12. package/dist/core/AgentConnector.js +323 -0
  13. package/dist/core/AgentConnector.js.map +1 -0
  14. package/dist/core/AutoUpdater.d.ts +7 -0
  15. package/dist/core/AutoUpdater.d.ts.map +1 -1
  16. package/dist/core/AutoUpdater.js +31 -3
  17. package/dist/core/AutoUpdater.js.map +1 -1
  18. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  19. package/dist/core/PostUpdateMigrator.js +196 -18
  20. package/dist/core/PostUpdateMigrator.js.map +1 -1
  21. package/dist/core/StateWriteAuthority.d.ts +101 -0
  22. package/dist/core/StateWriteAuthority.d.ts.map +1 -0
  23. package/dist/core/StateWriteAuthority.js +167 -0
  24. package/dist/core/StateWriteAuthority.js.map +1 -0
  25. package/dist/core/types.d.ts +104 -0
  26. package/dist/core/types.d.ts.map +1 -1
  27. package/dist/index.d.ts +2 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/memory/TopicMemory.d.ts +167 -0
  32. package/dist/memory/TopicMemory.d.ts.map +1 -0
  33. package/dist/memory/TopicMemory.js +494 -0
  34. package/dist/memory/TopicMemory.js.map +1 -0
  35. package/dist/memory/TopicSummarizer.d.ts +58 -0
  36. package/dist/memory/TopicSummarizer.d.ts.map +1 -0
  37. package/dist/memory/TopicSummarizer.js +140 -0
  38. package/dist/memory/TopicSummarizer.js.map +1 -0
  39. package/dist/messaging/TelegramAdapter.d.ts +35 -0
  40. package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
  41. package/dist/messaging/TelegramAdapter.js +136 -2
  42. package/dist/messaging/TelegramAdapter.js.map +1 -1
  43. package/dist/server/AgentServer.d.ts +2 -0
  44. package/dist/server/AgentServer.d.ts.map +1 -1
  45. package/dist/server/AgentServer.js +1 -0
  46. package/dist/server/AgentServer.js.map +1 -1
  47. package/dist/server/routes.d.ts +2 -0
  48. package/dist/server/routes.d.ts.map +1 -1
  49. package/dist/server/routes.js +340 -1
  50. package/dist/server/routes.js.map +1 -1
  51. package/dist/users/UserManager.d.ts +21 -0
  52. package/dist/users/UserManager.d.ts.map +1 -1
  53. package/dist/users/UserManager.js +32 -0
  54. package/dist/users/UserManager.js.map +1 -1
  55. package/dist/users/UserOnboarding.d.ts +116 -0
  56. package/dist/users/UserOnboarding.d.ts.map +1 -0
  57. package/dist/users/UserOnboarding.js +365 -0
  58. package/dist/users/UserOnboarding.js.map +1 -0
  59. package/package.json +2 -1
  60. package/upgrades/0.8.23.md +106 -0
  61. package/upgrades/0.9.1.md +91 -0
@@ -448,6 +448,47 @@ fi
448
448
  # For startup/resume/clear — output a compact orientation
449
449
  echo "=== SESSION START ==="
450
450
 
451
+ # TOPIC CONTEXT (loaded FIRST — highest priority context)
452
+ if [ -n "\$INSTAR_TELEGRAM_TOPIC" ]; then
453
+ TOPIC_ID="\$INSTAR_TELEGRAM_TOPIC"
454
+ CONFIG_FILE="$INSTAR_DIR/config.json"
455
+ if [ -f "\$CONFIG_FILE" ]; then
456
+ PORT=\$(grep -o '"port":[0-9]*' "\$CONFIG_FILE" | head -1 | cut -d':' -f2)
457
+ if [ -n "\$PORT" ]; then
458
+ TOPIC_CTX=\$(curl -s "http://localhost:\${PORT}/topic/context/\${TOPIC_ID}?recent=30" 2>/dev/null)
459
+ if [ -n "\$TOPIC_CTX" ] && echo "\$TOPIC_CTX" | grep -q '"totalMessages"'; then
460
+ TOTAL=\$(echo "\$TOPIC_CTX" | grep -o '"totalMessages":[0-9]*' | cut -d':' -f2)
461
+ TOPIC_NAME=\$(echo "\$TOPIC_CTX" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('topicName') or 'Unknown')" 2>/dev/null || echo "Unknown")
462
+ echo ""
463
+ echo "--- CONVERSATION CONTEXT (Topic: \${TOPIC_NAME}, \${TOTAL} total messages) ---"
464
+ echo ""
465
+ SUMMARY=\$(echo "\$TOPIC_CTX" | python3 -c "import sys,json; d=json.load(sys.stdin); s=d.get('summary'); print(s if s else '')" 2>/dev/null)
466
+ if [ -n "\$SUMMARY" ]; then
467
+ echo "SUMMARY OF CONVERSATION SO FAR:"
468
+ echo "\$SUMMARY"
469
+ echo ""
470
+ fi
471
+ echo "RECENT MESSAGES:"
472
+ echo "\$TOPIC_CTX" | python3 -c "
473
+ import sys, json
474
+ d = json.load(sys.stdin)
475
+ for m in d.get('recentMessages', []):
476
+ sender = 'User' if m.get('fromUser') else 'Agent'
477
+ ts = m.get('timestamp', '')[:16].replace('T', ' ')
478
+ text = m.get('text', '')
479
+ if len(text) > 500:
480
+ text = text[:500] + '...'
481
+ print(f'[{ts}] {sender}: {text}')
482
+ " 2>/dev/null
483
+ echo ""
484
+ echo "Search past conversations: curl http://localhost:\${PORT}/topic/search?topic=\${TOPIC_ID}&q=QUERY"
485
+ echo "--- END CONVERSATION CONTEXT ---"
486
+ echo ""
487
+ fi
488
+ fi
489
+ fi
490
+ fi
491
+
451
492
  # Identity summary (first 20 lines of AGENT.md — enough for name + role)
452
493
  if [ -f "$INSTAR_DIR/AGENT.md" ]; then
453
494
  echo ""
@@ -470,18 +511,36 @@ if [ -d "$INSTAR_DIR/relationships" ]; then
470
511
  [ "\$REL_COUNT" -gt "0" ] && echo " \${REL_COUNT} tracked relationships in .instar/relationships/"
471
512
  fi
472
513
 
473
- # Server status + self-discovery
514
+ # Server status + self-discovery + feature awareness
474
515
  if [ -f "$INSTAR_DIR/config.json" ]; then
475
516
  PORT=\$(python3 -c "import json; print(json.load(open('$INSTAR_DIR/config.json')).get('port', 4040))" 2>/dev/null || echo "4040")
476
517
  HEALTH=\$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:\${PORT}/health" 2>/dev/null)
477
518
  if [ "\$HEALTH" = "200" ]; then
478
519
  echo ""
479
520
  echo "Instar server: RUNNING on port \${PORT}"
480
- echo "Capabilities: curl http://localhost:\${PORT}/capabilities"
481
- # Check for tunnel
521
+ # Load full capabilities for tunnel + feature guide
482
522
  CAPS=\$(curl -s "http://localhost:\${PORT}/capabilities" 2>/dev/null)
483
523
  TUNNEL_URL=\$(echo "\$CAPS" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('tunnel',{}).get('url',''))" 2>/dev/null)
484
524
  [ -n "\$TUNNEL_URL" ] && echo "Cloudflare Tunnel active: \$TUNNEL_URL"
525
+ # Inject feature guide — proactive capability awareness at every session start
526
+ if echo "\$CAPS" | grep -q '"featureGuide"'; then
527
+ echo ""
528
+ echo "--- YOUR CAPABILITIES (use these proactively when context matches) ---"
529
+ echo "\$CAPS" | python3 -c "
530
+ import sys, json
531
+ try:
532
+ d = json.load(sys.stdin)
533
+ guide = d.get('featureGuide', {})
534
+ triggers = guide.get('triggers', [])
535
+ if triggers:
536
+ for t in triggers:
537
+ print(f' When: {t[\"context\"]}')
538
+ print(f' Do: {t[\"action\"]}')
539
+ print()
540
+ except: pass
541
+ " 2>/dev/null
542
+ echo "--- END CAPABILITIES ---"
543
+ fi
485
544
  else
486
545
  echo ""
487
546
  echo "Instar server: NOT RUNNING (port \${PORT})"
@@ -490,7 +549,23 @@ fi
490
549
 
491
550
  echo ""
492
551
  echo "IMPORTANT: To report bugs or request features, use POST /feedback on your local server."
493
- echo "IMPORTANT: Before claiming you lack a capability, check /capabilities first."
552
+
553
+ # Telegram relay instructions (structural — ensures EVERY Telegram session knows how to respond)
554
+ if [ -n "\$INSTAR_TELEGRAM_TOPIC" ]; then
555
+ TOPIC_ID="\$INSTAR_TELEGRAM_TOPIC"
556
+ RELAY_SCRIPT=""
557
+ [ -f "$INSTAR_DIR/scripts/telegram-reply.sh" ] && RELAY_SCRIPT=".instar/scripts/telegram-reply.sh"
558
+ [ -z "\$RELAY_SCRIPT" ] && [ -f "\${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/telegram-reply.sh" ] && RELAY_SCRIPT=".claude/scripts/telegram-reply.sh"
559
+ echo ""
560
+ echo "--- TELEGRAM SESSION (topic \${TOPIC_ID}) ---"
561
+ echo "MANDATORY: After EVERY response, relay conversational text back to Telegram:"
562
+ echo " cat <<'EOF' | \${RELAY_SCRIPT:-'.instar/scripts/telegram-reply.sh'} \${TOPIC_ID}"
563
+ echo " Your response text here"
564
+ echo " EOF"
565
+ echo "Strip the [telegram:\${TOPIC_ID}] prefix before interpreting messages."
566
+ echo "If a thread history file is referenced, READ IT FIRST before responding."
567
+ echo "--- END TELEGRAM SESSION ---"
568
+ fi
494
569
 
495
570
  # Pending upgrade guide — inject knowledge from the latest update
496
571
  GUIDE_FILE="$INSTAR_DIR/state/pending-upgrade-guide.md"
@@ -514,7 +589,13 @@ if [ -f "\$GUIDE_FILE" ]; then
514
589
  echo " - NEVER send updates to Agent Attention — that's for critical/blocking items only"
515
590
  echo " - Use your knowledge of your user to personalize — you know their"
516
591
  echo " workflow, their priorities, what they care about"
517
- echo "4. After messaging the user, run: instar upgrade-ack"
592
+ echo "4. UPDATE YOUR MEMORY with the new capabilities:"
593
+ echo " - Read the upgrade guide's 'Summary of New Capabilities' section"
594
+ echo " - Add the relevant capabilities to your .instar/MEMORY.md file"
595
+ echo " - Focus on WHAT you can now do and HOW to use it"
596
+ echo " - If similar notes exist in MEMORY.md, update rather than duplicate"
597
+ echo " - This ensures you KNOW about these capabilities in every future session"
598
+ echo "5. After messaging the user and updating memory, run: instar upgrade-ack"
518
599
  echo ""
519
600
  echo "--- UPGRADE GUIDE CONTENT ---"
520
601
  echo ""
@@ -585,45 +666,142 @@ fi
585
666
  }
586
667
  getCompactionRecovery() {
587
668
  return `#!/bin/bash
588
- # Compaction recovery — re-injects identity when Claude's context compresses.
669
+ # Compaction recovery — re-injects identity AND topic context when Claude's context compresses.
589
670
  # Born from Dawn's 164th Lesson: "Advisory hooks get ignored. Automatic content
590
671
  # injection removes the compliance gap entirely."
591
672
  #
592
673
  # This hook OUTPUTS identity content directly into context rather than just
593
- # pointing to files. After compaction, the agent needs to KNOW who it is,
594
- # not be told where to look.
674
+ # pointing to files. After compaction, the agent needs to KNOW who it is
675
+ # AND what conversation it's in — not be told where to look.
676
+ #
677
+ # Context priority (same as session-start):
678
+ # 1. Topic context (summary + recent messages) — what are we working on?
679
+ # 2. Identity (AGENT.md) — who am I?
680
+ # 3. Memory (MEMORY.md) — what have I learned?
681
+ # 4. Telegram relay — how do I respond?
682
+ # 5. Capabilities — what can I do?
595
683
  INSTAR_DIR="\${CLAUDE_PROJECT_DIR:-.}/.instar"
596
684
 
597
685
  echo "=== IDENTITY RECOVERY (post-compaction) ==="
598
686
 
599
- # Inject AGENT.md content directlythis is the critical fix
600
- if [ -f "$INSTAR_DIR/AGENT.md" ]; then
687
+ # ── 1. TOPIC CONTEXT (highest priority what are we working on?) ──
688
+ # After compaction, the conversation history is lost. Re-inject it from TopicMemory.
689
+ if [ -n "\$INSTAR_TELEGRAM_TOPIC" ]; then
690
+ TOPIC_ID="\$INSTAR_TELEGRAM_TOPIC"
691
+ CONFIG_FILE="\$INSTAR_DIR/config.json"
692
+ if [ -f "\$CONFIG_FILE" ]; then
693
+ PORT=\$(grep -o '"port":[0-9]*' "\$CONFIG_FILE" | head -1 | cut -d':' -f2)
694
+ if [ -n "\$PORT" ]; then
695
+ TOPIC_CTX=\$(curl -s "http://localhost:\${PORT}/topic/context/\${TOPIC_ID}?recent=20" 2>/dev/null)
696
+ if [ -n "\$TOPIC_CTX" ] && echo "\$TOPIC_CTX" | grep -q '"totalMessages"'; then
697
+ TOTAL=\$(echo "\$TOPIC_CTX" | grep -o '"totalMessages":[0-9]*' | cut -d':' -f2)
698
+ TOPIC_NAME=\$(echo "\$TOPIC_CTX" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('topicName') or 'Unknown')" 2>/dev/null || echo "Unknown")
699
+
700
+ echo ""
701
+ echo "--- CONVERSATION CONTEXT (Topic: \${TOPIC_NAME}, \${TOTAL} total messages) ---"
702
+ echo ""
703
+
704
+ SUMMARY=\$(echo "\$TOPIC_CTX" | python3 -c "import sys,json; d=json.load(sys.stdin); s=d.get('summary'); print(s if s else '')" 2>/dev/null)
705
+ if [ -n "\$SUMMARY" ]; then
706
+ echo "SUMMARY OF CONVERSATION SO FAR:"
707
+ echo "\$SUMMARY"
708
+ echo ""
709
+ fi
710
+
711
+ echo "RECENT MESSAGES:"
712
+ echo "\$TOPIC_CTX" | python3 -c "
713
+ import sys, json
714
+ d = json.load(sys.stdin)
715
+ for m in d.get('recentMessages', []):
716
+ sender = 'User' if m.get('fromUser') else 'Agent'
717
+ ts = m.get('timestamp', '')[:16].replace('T', ' ')
718
+ text = m.get('text', '')
719
+ if len(text) > 500:
720
+ text = text[:500] + '...'
721
+ print(f'[{ts}] {sender}: {text}')
722
+ " 2>/dev/null
723
+ echo ""
724
+ echo "Search past conversations: curl http://localhost:\${PORT}/topic/search?topic=\${TOPIC_ID}&q=QUERY"
725
+ echo "--- END CONVERSATION CONTEXT ---"
726
+ echo ""
727
+ fi
728
+ fi
729
+ fi
730
+ fi
731
+
732
+ # ── 2. IDENTITY (full AGENT.md — who am I?) ──
733
+ if [ -f "\$INSTAR_DIR/AGENT.md" ]; then
601
734
  echo ""
602
735
  echo "--- Your Identity (from .instar/AGENT.md) ---"
603
- cat "$INSTAR_DIR/AGENT.md"
736
+ cat "\$INSTAR_DIR/AGENT.md"
604
737
  echo ""
605
738
  echo "--- End Identity ---"
606
739
  fi
607
740
 
608
- # Inject memory summary (first 50 lines — enough for orientation)
609
- if [ -f "$INSTAR_DIR/MEMORY.md" ]; then
610
- LINES=\$(wc -l < "$INSTAR_DIR/MEMORY.md" | tr -d ' ')
741
+ # ── 3. MEMORY (first 50 lines — what have I learned?) ──
742
+ if [ -f "\$INSTAR_DIR/MEMORY.md" ]; then
743
+ LINES=\$(wc -l < "\$INSTAR_DIR/MEMORY.md" | tr -d ' ')
611
744
  echo ""
612
745
  echo "--- Your Memory (.instar/MEMORY.md — \${LINES} lines, showing first 50) ---"
613
- head -50 "$INSTAR_DIR/MEMORY.md"
746
+ head -50 "\$INSTAR_DIR/MEMORY.md"
614
747
  if [ "\$LINES" -gt 50 ]; then
615
748
  echo "... (\$((LINES - 50)) more lines — read full file if needed)"
616
749
  fi
617
750
  echo "--- End Memory ---"
618
751
  fi
619
752
 
620
- # Check server status
621
- if [ -f "$INSTAR_DIR/config.json" ]; then
622
- PORT=\$(python3 -c "import json; print(json.load(open('$INSTAR_DIR/config.json')).get('port', 4040))" 2>/dev/null || echo "4040")
753
+ # ── 4. TELEGRAM RELAY (how do I respond?) ──
754
+ if [ -n "\$INSTAR_TELEGRAM_TOPIC" ]; then
755
+ TOPIC_ID="\$INSTAR_TELEGRAM_TOPIC"
756
+ RELAY_SCRIPT=""
757
+ if [ -f "\$INSTAR_DIR/scripts/telegram-reply.sh" ]; then
758
+ RELAY_SCRIPT=".instar/scripts/telegram-reply.sh"
759
+ elif [ -f "\${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/telegram-reply.sh" ]; then
760
+ RELAY_SCRIPT=".claude/scripts/telegram-reply.sh"
761
+ fi
762
+
763
+ echo ""
764
+ echo "--- TELEGRAM SESSION (topic \${TOPIC_ID}) ---"
765
+ echo "This session is connected to Telegram topic \${TOPIC_ID}."
766
+ echo "Messages arrive prefixed with [telegram:\${TOPIC_ID}]. Strip prefix before interpreting."
767
+ echo "After EVERY response, relay your text back:"
768
+ if [ -n "\$RELAY_SCRIPT" ]; then
769
+ echo " cat <<'EOF' | \${RELAY_SCRIPT} \${TOPIC_ID}"
770
+ else
771
+ echo " cat <<'EOF' | .instar/scripts/telegram-reply.sh \${TOPIC_ID}"
772
+ fi
773
+ echo " Your response text here"
774
+ echo " EOF"
775
+ echo "--- END TELEGRAM SESSION ---"
776
+ fi
777
+
778
+ # ── 5. SERVER STATUS + CAPABILITIES ──
779
+ CONFIG_FILE="\$INSTAR_DIR/config.json"
780
+ if [ -f "\$CONFIG_FILE" ]; then
781
+ PORT=\$(python3 -c "import json; print(json.load(open('\$CONFIG_FILE')).get('port', 4040))" 2>/dev/null || echo "4040")
623
782
  HEALTH=\$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:\${PORT}/health" 2>/dev/null)
624
783
  if [ "\$HEALTH" = "200" ]; then
784
+ echo ""
625
785
  echo "Instar server: RUNNING on port \${PORT}"
786
+ CAPS=\$(curl -s "http://localhost:\${PORT}/capabilities" 2>/dev/null)
787
+ if echo "\$CAPS" | grep -q '"featureGuide"' 2>/dev/null; then
788
+ echo ""
789
+ echo "--- YOUR CAPABILITIES ---"
790
+ echo "\$CAPS" | python3 -c "
791
+ import sys, json
792
+ try:
793
+ d = json.load(sys.stdin)
794
+ guide = d.get('featureGuide', {})
795
+ for t in guide.get('triggers', []):
796
+ print(f' When: {t[\"context\"]}')
797
+ print(f' Do: {t[\"action\"]}')
798
+ print()
799
+ except: pass
800
+ " 2>/dev/null
801
+ echo "--- END CAPABILITIES ---"
802
+ fi
626
803
  else
804
+ echo ""
627
805
  echo "Instar server: NOT RUNNING (port \${PORT})"
628
806
  fi
629
807
  fi
@@ -1 +1 @@
1
- {"version":3,"file":"PostUpdateMigrator.js","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostUpdateMigrator.js","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * State Write Authority — enforces primary-machine-writes-only model.
3
+ *
4
+ * In multi-machine setups:
5
+ * - The primary machine is the canonical writer for agent state files
6
+ * - Secondary machines submit changes via API to the primary
7
+ * - If primary is offline, secondaries queue changes locally
8
+ * - Write-tokens are scoped to non-escalating operations
9
+ *
10
+ * Project files (source code) are unaffected — normal git workflow.
11
+ */
12
+ import type { AgentAutonomyConfig } from './types.js';
13
+ export type WriteOperation = 'addMemory' | 'updateProfile' | 'heartbeat' | 'modifyUser' | 'modifyPermissions' | 'transferPrimary';
14
+ export interface WriteToken {
15
+ /** 32-byte random token */
16
+ token: string;
17
+ /** Machine ID this token was issued to */
18
+ machineId: string;
19
+ /** ISO timestamp of issuance */
20
+ issuedAt: string;
21
+ /** Whether this token has been revoked */
22
+ revoked: boolean;
23
+ }
24
+ export interface OfflineQueueEntry {
25
+ /** ISO timestamp of the queued operation */
26
+ timestamp: string;
27
+ /** Operation type */
28
+ operation: WriteOperation;
29
+ /** Operation payload */
30
+ payload: Record<string, unknown>;
31
+ /** Number of replay attempts */
32
+ retryCount: number;
33
+ /** Machine that queued this operation */
34
+ sourceMachineId: string;
35
+ }
36
+ /**
37
+ * Generate a new write token for a machine.
38
+ */
39
+ export declare function generateWriteToken(machineId: string): WriteToken;
40
+ /**
41
+ * Validate a write token.
42
+ */
43
+ export declare function validateWriteToken(token: string, storedTokens: WriteToken[]): {
44
+ valid: boolean;
45
+ machineId?: string;
46
+ error?: string;
47
+ };
48
+ /**
49
+ * Check if an operation can be performed by a secondary machine.
50
+ * Escalating operations require interactive confirmation from primary admin.
51
+ */
52
+ export declare function canPerformOperation(operation: WriteOperation): {
53
+ allowed: boolean;
54
+ requiresConfirmation: boolean;
55
+ reason?: string;
56
+ };
57
+ /**
58
+ * Manages the offline queue for secondary machines.
59
+ * When the primary is unreachable, changes are queued locally.
60
+ */
61
+ export declare class OfflineQueue {
62
+ private queueDir;
63
+ private queueFile;
64
+ constructor(stateDir: string, agentId: string);
65
+ /**
66
+ * Add an operation to the offline queue.
67
+ * Only non-escalating operations can be queued.
68
+ */
69
+ enqueue(operation: WriteOperation, payload: Record<string, unknown>, machineId: string): boolean;
70
+ /**
71
+ * Read and drain the offline queue (for replay on reconnect).
72
+ * Returns entries in order. Expired entries (>7 days) are skipped.
73
+ */
74
+ drain(): OfflineQueueEntry[];
75
+ /**
76
+ * Get the count of queued operations.
77
+ */
78
+ count(): number;
79
+ }
80
+ export interface ConflictResolution {
81
+ file: string;
82
+ machineA: {
83
+ machineId: string;
84
+ change: string;
85
+ };
86
+ machineB: {
87
+ machineId: string;
88
+ change: string;
89
+ };
90
+ agentRecommendation?: string;
91
+ autoResolvable: boolean;
92
+ }
93
+ /**
94
+ * Assess a merge conflict and determine if it can be auto-resolved.
95
+ * users.json additions can be merged; config.json always escalates.
96
+ */
97
+ export declare function assessConflict(file: string, autonomy?: AgentAutonomyConfig): {
98
+ autoResolvable: boolean;
99
+ reason: string;
100
+ };
101
+ //# sourceMappingURL=StateWriteAuthority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateWriteAuthority.d.ts","sourceRoot":"","sources":["../../src/core/StateWriteAuthority.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAmB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIvE,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,eAAe,GACf,WAAW,GACX,YAAY,GACZ,mBAAmB,GACnB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;CACzB;AAoBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAOhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,UAAU,EAAE,GACzB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAMxD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CASA;AAID;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAU7C;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAiBhG;;;OAGG;IACH,KAAK,IAAI,iBAAiB,EAAE;IAoC5B;;OAEG;IACH,KAAK,IAAI,MAAM;CAMhB;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,mBAAmB,GAC7B;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAqB7C"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * State Write Authority — enforces primary-machine-writes-only model.
3
+ *
4
+ * In multi-machine setups:
5
+ * - The primary machine is the canonical writer for agent state files
6
+ * - Secondary machines submit changes via API to the primary
7
+ * - If primary is offline, secondaries queue changes locally
8
+ * - Write-tokens are scoped to non-escalating operations
9
+ *
10
+ * Project files (source code) are unaffected — normal git workflow.
11
+ */
12
+ import crypto from 'node:crypto';
13
+ import fs from 'node:fs';
14
+ import path from 'node:path';
15
+ /** Operations that can never be queued or replayed */
16
+ const ESCALATING_OPERATIONS = [
17
+ 'modifyUser',
18
+ 'modifyPermissions',
19
+ 'transferPrimary',
20
+ ];
21
+ /** Operations that can be queued for offline replay */
22
+ const NON_ESCALATING_OPERATIONS = [
23
+ 'addMemory',
24
+ 'updateProfile',
25
+ 'heartbeat',
26
+ ];
27
+ const OFFLINE_QUEUE_TTL_DAYS = 7;
28
+ // ── Write Token Management ───────────────────────────────────────────
29
+ /**
30
+ * Generate a new write token for a machine.
31
+ */
32
+ export function generateWriteToken(machineId) {
33
+ return {
34
+ token: crypto.randomBytes(32).toString('hex'),
35
+ machineId,
36
+ issuedAt: new Date().toISOString(),
37
+ revoked: false,
38
+ };
39
+ }
40
+ /**
41
+ * Validate a write token.
42
+ */
43
+ export function validateWriteToken(token, storedTokens) {
44
+ const match = storedTokens.find(t => t.token === token && !t.revoked);
45
+ if (!match) {
46
+ return { valid: false, error: 'Invalid or revoked write token' };
47
+ }
48
+ return { valid: true, machineId: match.machineId };
49
+ }
50
+ // ── Operation Authorization ──────────────────────────────────────────
51
+ /**
52
+ * Check if an operation can be performed by a secondary machine.
53
+ * Escalating operations require interactive confirmation from primary admin.
54
+ */
55
+ export function canPerformOperation(operation) {
56
+ if (ESCALATING_OPERATIONS.includes(operation)) {
57
+ return {
58
+ allowed: false,
59
+ requiresConfirmation: true,
60
+ reason: `${operation} requires interactive confirmation from the primary machine's admin`,
61
+ };
62
+ }
63
+ return { allowed: true, requiresConfirmation: false };
64
+ }
65
+ // ── Offline Queue ────────────────────────────────────────────────────
66
+ /**
67
+ * Manages the offline queue for secondary machines.
68
+ * When the primary is unreachable, changes are queued locally.
69
+ */
70
+ export class OfflineQueue {
71
+ queueDir;
72
+ queueFile;
73
+ constructor(stateDir, agentId) {
74
+ this.queueDir = path.join(process.env.HOME || process.env.USERPROFILE || '/tmp', '.instar', 'offline-queue');
75
+ fs.mkdirSync(this.queueDir, { recursive: true });
76
+ this.queueFile = path.join(this.queueDir, `${agentId}.jsonl`);
77
+ }
78
+ /**
79
+ * Add an operation to the offline queue.
80
+ * Only non-escalating operations can be queued.
81
+ */
82
+ enqueue(operation, payload, machineId) {
83
+ if (ESCALATING_OPERATIONS.includes(operation)) {
84
+ return false; // Cannot queue escalating operations
85
+ }
86
+ const entry = {
87
+ timestamp: new Date().toISOString(),
88
+ operation,
89
+ payload,
90
+ retryCount: 0,
91
+ sourceMachineId: machineId,
92
+ };
93
+ fs.appendFileSync(this.queueFile, JSON.stringify(entry) + '\n');
94
+ return true;
95
+ }
96
+ /**
97
+ * Read and drain the offline queue (for replay on reconnect).
98
+ * Returns entries in order. Expired entries (>7 days) are skipped.
99
+ */
100
+ drain() {
101
+ if (!fs.existsSync(this.queueFile))
102
+ return [];
103
+ const content = fs.readFileSync(this.queueFile, 'utf-8').trim();
104
+ if (!content)
105
+ return [];
106
+ const now = Date.now();
107
+ const ttlMs = OFFLINE_QUEUE_TTL_DAYS * 24 * 60 * 60 * 1000;
108
+ const entries = [];
109
+ const expired = [];
110
+ for (const line of content.split('\n')) {
111
+ try {
112
+ const entry = JSON.parse(line);
113
+ const age = now - new Date(entry.timestamp).getTime();
114
+ if (age > ttlMs) {
115
+ expired.push(entry);
116
+ }
117
+ else {
118
+ entries.push(entry);
119
+ }
120
+ }
121
+ catch {
122
+ // Skip malformed lines
123
+ }
124
+ }
125
+ // Clear the queue file
126
+ fs.writeFileSync(this.queueFile, '');
127
+ if (expired.length > 0) {
128
+ console.warn(`[OfflineQueue] ${expired.length} entries expired (>7 days)`);
129
+ }
130
+ return entries;
131
+ }
132
+ /**
133
+ * Get the count of queued operations.
134
+ */
135
+ count() {
136
+ if (!fs.existsSync(this.queueFile))
137
+ return 0;
138
+ const content = fs.readFileSync(this.queueFile, 'utf-8').trim();
139
+ if (!content)
140
+ return 0;
141
+ return content.split('\n').filter(l => l.trim()).length;
142
+ }
143
+ }
144
+ /**
145
+ * Assess a merge conflict and determine if it can be auto-resolved.
146
+ * users.json additions can be merged; config.json always escalates.
147
+ */
148
+ export function assessConflict(file, autonomy) {
149
+ // config.json always requires human judgment
150
+ if (file === 'config.json') {
151
+ return { autoResolvable: false, reason: 'Config conflicts always require human judgment' };
152
+ }
153
+ // users.json: additions can be auto-merged
154
+ if (file === 'users.json') {
155
+ // At collaborative+, propose resolution
156
+ if (autonomy && autonomy.level !== 'supervised') {
157
+ return { autoResolvable: true, reason: 'User additions can be merged automatically' };
158
+ }
159
+ return { autoResolvable: false, reason: 'Escalated per supervised autonomy level' };
160
+ }
161
+ // Other files: auto-resolve at autonomous level
162
+ if (autonomy?.level === 'autonomous' && autonomy.capabilities.proposeConflictResolution) {
163
+ return { autoResolvable: true, reason: 'Auto-resolved per autonomous autonomy level' };
164
+ }
165
+ return { autoResolvable: false, reason: 'Requires manual resolution' };
166
+ }
167
+ //# sourceMappingURL=StateWriteAuthority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateWriteAuthority.js","sourceRoot":"","sources":["../../src/core/StateWriteAuthority.ts"],"names":[],"mappings":"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"}