iranti 0.3.39 → 0.3.40
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.
- package/dist/scripts/iranti-cli.js +40 -0
- package/dist/scripts/iranti-mcp.js +201 -4
- package/dist/src/api/server.js +1 -1
- package/dist/src/lib/cliHelpCatalog.d.ts.map +1 -1
- package/dist/src/lib/cliHelpCatalog.js +6 -0
- package/dist/src/lib/cliHelpCatalog.js.map +1 -1
- package/dist/src/lib/cliHelpRenderer.d.ts +1 -0
- package/dist/src/lib/cliHelpRenderer.d.ts.map +1 -1
- package/dist/src/lib/cliHelpRenderer.js +4 -0
- package/dist/src/lib/cliHelpRenderer.js.map +1 -1
- package/dist/src/lib/feedbackCollector.d.ts +68 -0
- package/dist/src/lib/feedbackCollector.d.ts.map +1 -0
- package/dist/src/lib/feedbackCollector.js +331 -0
- package/dist/src/lib/feedbackCollector.js.map +1 -0
- package/package.json +1 -1
|
@@ -55,6 +55,7 @@ const semanticFactTags_1 = require("../src/lib/semanticFactTags");
|
|
|
55
55
|
const staffEventRegistry_1 = require("../src/lib/staffEventRegistry");
|
|
56
56
|
const scaffoldCloseout_1 = require("../src/lib/scaffoldCloseout");
|
|
57
57
|
const projectLearning_1 = require("../src/lib/projectLearning");
|
|
58
|
+
const feedbackCollector_1 = require("../src/lib/feedbackCollector");
|
|
58
59
|
class CliError extends Error {
|
|
59
60
|
constructor(code, message, hints = [], details) {
|
|
60
61
|
super(message);
|
|
@@ -8587,6 +8588,9 @@ function printResolveHelp() {
|
|
|
8587
8588
|
function printProviderKeyHelp() {
|
|
8588
8589
|
(0, cliHelpRenderer_1.printProviderKeyHelp)({ sectionTitle, commandText });
|
|
8589
8590
|
}
|
|
8591
|
+
function printFeedbackHelp() {
|
|
8592
|
+
(0, cliHelpRenderer_1.printFeedbackHelp)({ sectionTitle, commandText });
|
|
8593
|
+
}
|
|
8590
8594
|
function printMcpHelp() {
|
|
8591
8595
|
console.log([
|
|
8592
8596
|
'MCP server and maintenance commands.',
|
|
@@ -9628,6 +9632,34 @@ async function revertAutowriteCommand(args) {
|
|
|
9628
9632
|
await (0, client_1.disconnectDb)().catch(() => undefined);
|
|
9629
9633
|
}
|
|
9630
9634
|
}
|
|
9635
|
+
/**
|
|
9636
|
+
* `iranti feedback` — collect a one-keypress satisfaction signal.
|
|
9637
|
+
*
|
|
9638
|
+
* No DB required. Reads .iranti/session-stats.json for passive usage context,
|
|
9639
|
+
* maintains a throttle record in .iranti/feedback-sent.json, and falls back
|
|
9640
|
+
* to .iranti/pending-feedback.json when the endpoint is unreachable.
|
|
9641
|
+
*/
|
|
9642
|
+
async function feedbackCommand(args) {
|
|
9643
|
+
const ratingStr = getFlag(args, 'rating');
|
|
9644
|
+
const rating = ratingStr !== undefined ? Number(ratingStr) : undefined;
|
|
9645
|
+
const comment = getFlag(args, 'comment');
|
|
9646
|
+
const typeStr = getFlag(args, 'type') ?? 'general';
|
|
9647
|
+
const dryRun = hasFlag(args, 'dry-run');
|
|
9648
|
+
const offline = hasFlag(args, 'offline');
|
|
9649
|
+
const milestoneContext = getFlag(args, 'milestone') ?? null;
|
|
9650
|
+
const type = typeStr;
|
|
9651
|
+
const opts = {
|
|
9652
|
+
rating,
|
|
9653
|
+
comment: comment ?? undefined,
|
|
9654
|
+
type,
|
|
9655
|
+
dryRun,
|
|
9656
|
+
offline,
|
|
9657
|
+
milestoneContext,
|
|
9658
|
+
factCount: null,
|
|
9659
|
+
version: getPackageVersion(),
|
|
9660
|
+
};
|
|
9661
|
+
await (0, feedbackCollector_1.runFeedbackCommand)(opts);
|
|
9662
|
+
}
|
|
9631
9663
|
async function main() {
|
|
9632
9664
|
const args = parseArgs(process.argv.slice(2));
|
|
9633
9665
|
ACTIVE_PARSED_ARGS = args;
|
|
@@ -9962,6 +9994,14 @@ async function main() {
|
|
|
9962
9994
|
await revertAutowriteCommand(args);
|
|
9963
9995
|
return;
|
|
9964
9996
|
}
|
|
9997
|
+
if (args.command === 'feedback' || args.command === 'fb') {
|
|
9998
|
+
if (hasFlag(args, 'help')) {
|
|
9999
|
+
printFeedbackHelp();
|
|
10000
|
+
return;
|
|
10001
|
+
}
|
|
10002
|
+
await feedbackCommand(args);
|
|
10003
|
+
return;
|
|
10004
|
+
}
|
|
9965
10005
|
if (args.command === 'claude-setup') {
|
|
9966
10006
|
await claudeSetupCommand(args);
|
|
9967
10007
|
return;
|
|
@@ -47,6 +47,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
47
47
|
* IRANTI_PROJECT_ENV, IRANTI_INSTANCE_ENV, IRANTI_MCP_AGENT_NAME.
|
|
48
48
|
*/
|
|
49
49
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
50
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
50
51
|
const node_path_1 = __importDefault(require("node:path"));
|
|
51
52
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
52
53
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
@@ -92,6 +93,11 @@ let _activeWatcher = null;
|
|
|
92
93
|
let _watchedCwd = null;
|
|
93
94
|
let _watchDebounceTimer = null;
|
|
94
95
|
const _watchPendingChanges = new Set();
|
|
96
|
+
// ── Feedback friction detector (Phase 5) ─────────────────────────────────────
|
|
97
|
+
// Counts how many times the write-debt gate has blocked attend this session.
|
|
98
|
+
// After 3 blocks, the next successful attend includes a frictionNudge field.
|
|
99
|
+
let _writeDebtFireCount = 0;
|
|
100
|
+
let _frictionNudgeSentThisSession = false;
|
|
95
101
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
96
102
|
async function dbStartup() {
|
|
97
103
|
if (_dbStartupDone)
|
|
@@ -500,6 +506,170 @@ function protocolViolationResult(error) {
|
|
|
500
506
|
},
|
|
501
507
|
};
|
|
502
508
|
}
|
|
509
|
+
function resolveIrantiDirForCwd(cwd) {
|
|
510
|
+
const local = node_path_1.default.join(cwd, '.iranti');
|
|
511
|
+
if (node_fs_1.default.existsSync(local))
|
|
512
|
+
return local;
|
|
513
|
+
const home = process.env.HOME ?? process.env.USERPROFILE ?? '';
|
|
514
|
+
return node_path_1.default.join(home, '.iranti');
|
|
515
|
+
}
|
|
516
|
+
async function readSessionStatsFile(irantiDir) {
|
|
517
|
+
try {
|
|
518
|
+
const raw = await promises_1.default.readFile(node_path_1.default.join(irantiDir, 'session-stats.json'), 'utf8');
|
|
519
|
+
return JSON.parse(raw);
|
|
520
|
+
}
|
|
521
|
+
catch {
|
|
522
|
+
return null;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
async function updateSessionStats(cwd, host) {
|
|
526
|
+
const irantiDir = resolveIrantiDirForCwd(cwd);
|
|
527
|
+
const existing = (await readSessionStatsFile(irantiDir)) ?? {};
|
|
528
|
+
const now = new Date().toISOString();
|
|
529
|
+
const uniqueHosts = existing.uniqueHosts ?? [];
|
|
530
|
+
if (host && !uniqueHosts.includes(host)) {
|
|
531
|
+
uniqueHosts.push(host);
|
|
532
|
+
}
|
|
533
|
+
const updated = {
|
|
534
|
+
totalSessions: (existing.totalSessions ?? 0) + 1,
|
|
535
|
+
totalWrites: existing.totalWrites ?? 0,
|
|
536
|
+
totalAttends: existing.totalAttends ?? 0,
|
|
537
|
+
totalValueDeliveries: existing.totalValueDeliveries ?? 0,
|
|
538
|
+
uniqueHosts,
|
|
539
|
+
firstSessionAt: existing.firstSessionAt ?? now,
|
|
540
|
+
lastSessionAt: now,
|
|
541
|
+
feedbackMilestonesSeen: existing.feedbackMilestonesSeen ?? [],
|
|
542
|
+
};
|
|
543
|
+
try {
|
|
544
|
+
await promises_1.default.mkdir(irantiDir, { recursive: true });
|
|
545
|
+
await promises_1.default.writeFile(node_path_1.default.join(irantiDir, 'session-stats.json'), JSON.stringify(updated, null, 2) + '\n', 'utf8');
|
|
546
|
+
}
|
|
547
|
+
catch {
|
|
548
|
+
// Non-fatal: session stats are best-effort
|
|
549
|
+
}
|
|
550
|
+
return updated;
|
|
551
|
+
}
|
|
552
|
+
const FEEDBACK_MILESTONES = [
|
|
553
|
+
{
|
|
554
|
+
key: 'first_run',
|
|
555
|
+
check: (s) => s.totalSessions === 1,
|
|
556
|
+
message: "You've just used Iranti for the first time. Got 10 seconds to tell us how it went?",
|
|
557
|
+
trigger: 'first_session',
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
key: 'sessions_10',
|
|
561
|
+
check: (s) => s.totalSessions >= 10,
|
|
562
|
+
message: "10 sessions in — how's Iranti working for you?",
|
|
563
|
+
trigger: 'sessions_milestone',
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
key: 'sessions_25',
|
|
567
|
+
check: (s) => s.totalSessions >= 25,
|
|
568
|
+
message: "25 sessions with Iranti. We'd love your feedback.",
|
|
569
|
+
trigger: 'sessions_milestone',
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
key: 'sessions_50',
|
|
573
|
+
check: (s) => s.totalSessions >= 50,
|
|
574
|
+
message: "50 sessions — you're a power user. Tell us what's working (and what isn't).",
|
|
575
|
+
trigger: 'sessions_milestone',
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
key: 'cross_host_2',
|
|
579
|
+
check: (s) => s.uniqueHosts.length >= 2,
|
|
580
|
+
message: "You're using Iranti across multiple environments. How's the experience?",
|
|
581
|
+
trigger: 'cross_host',
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
key: 'cross_host_3',
|
|
585
|
+
check: (s) => s.uniqueHosts.length >= 3,
|
|
586
|
+
message: "Three different hosts — Iranti is following you around. Feedback welcome.",
|
|
587
|
+
trigger: 'cross_host',
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
key: 'facts_25',
|
|
591
|
+
check: (_s, fc) => fc >= 25,
|
|
592
|
+
message: "You've saved 25+ facts with Iranti. Quick rating?",
|
|
593
|
+
trigger: 'facts_milestone',
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
key: 'facts_50',
|
|
597
|
+
check: (_s, fc) => fc >= 50,
|
|
598
|
+
message: "50 facts saved — Iranti is working for you. Would love your thoughts.",
|
|
599
|
+
trigger: 'facts_milestone',
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
key: 'facts_100',
|
|
603
|
+
check: (_s, fc) => fc >= 100,
|
|
604
|
+
message: "100 facts in memory. How's it going?",
|
|
605
|
+
trigger: 'facts_milestone',
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
key: 'facts_250',
|
|
609
|
+
check: (_s, fc) => fc >= 250,
|
|
610
|
+
message: "250 facts saved. Iranti is earning its keep — got a minute to share?",
|
|
611
|
+
trigger: 'facts_milestone',
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
key: 'facts_500',
|
|
615
|
+
check: (_s, fc) => fc >= 500,
|
|
616
|
+
message: "500 facts! That's a lot of context saved. How does Iranti feel after all this use?",
|
|
617
|
+
trigger: 'facts_milestone',
|
|
618
|
+
},
|
|
619
|
+
];
|
|
620
|
+
async function computeFeedbackNudge(cwd, factCount) {
|
|
621
|
+
try {
|
|
622
|
+
const irantiDir = resolveIrantiDirForCwd(cwd);
|
|
623
|
+
const stats = await readSessionStatsFile(irantiDir);
|
|
624
|
+
if (!stats)
|
|
625
|
+
return null;
|
|
626
|
+
// Suppress if feedback was sent within the last 30 days
|
|
627
|
+
try {
|
|
628
|
+
const throttleFile = node_path_1.default.join(irantiDir, 'feedback-sent.json');
|
|
629
|
+
if (node_fs_1.default.existsSync(throttleFile)) {
|
|
630
|
+
const throttle = JSON.parse(node_fs_1.default.readFileSync(throttleFile, 'utf8'));
|
|
631
|
+
if (throttle.lastSentAt) {
|
|
632
|
+
const daysSince = (Date.now() - new Date(throttle.lastSentAt).getTime()) / 86400000;
|
|
633
|
+
if (daysSince < 30)
|
|
634
|
+
return null;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
catch {
|
|
639
|
+
// Non-fatal: proceed without suppression check
|
|
640
|
+
}
|
|
641
|
+
const seen = new Set(stats.feedbackMilestonesSeen ?? []);
|
|
642
|
+
for (const milestone of FEEDBACK_MILESTONES) {
|
|
643
|
+
if (seen.has(milestone.key))
|
|
644
|
+
continue;
|
|
645
|
+
if (!milestone.check(stats, factCount))
|
|
646
|
+
continue;
|
|
647
|
+
// Mark as seen immediately so it never fires twice
|
|
648
|
+
const updatedStats = {
|
|
649
|
+
...stats,
|
|
650
|
+
feedbackMilestonesSeen: [...seen, milestone.key],
|
|
651
|
+
};
|
|
652
|
+
try {
|
|
653
|
+
await promises_1.default.writeFile(node_path_1.default.join(irantiDir, 'session-stats.json'), JSON.stringify(updatedStats, null, 2) + '\n', 'utf8');
|
|
654
|
+
}
|
|
655
|
+
catch {
|
|
656
|
+
// Non-fatal
|
|
657
|
+
}
|
|
658
|
+
return {
|
|
659
|
+
command: 'iranti feedback',
|
|
660
|
+
message: milestone.message,
|
|
661
|
+
trigger: milestone.trigger,
|
|
662
|
+
milestone: milestone.key,
|
|
663
|
+
suppressUntil: new Date(Date.now() + 30 * 86400000).toISOString(),
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
return null;
|
|
667
|
+
}
|
|
668
|
+
catch {
|
|
669
|
+
return null; // Never fail handshake due to nudge logic
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
503
673
|
function normalizeRecentMessages(messages) {
|
|
504
674
|
if (!Array.isArray(messages))
|
|
505
675
|
return [];
|
|
@@ -631,7 +801,7 @@ async function main() {
|
|
|
631
801
|
// DB startup is deferred to first tool call via dbStartup() — see above.
|
|
632
802
|
const server = new mcp_js_1.McpServer({
|
|
633
803
|
name: 'iranti-mcp',
|
|
634
|
-
version: '0.3.
|
|
804
|
+
version: '0.3.40',
|
|
635
805
|
});
|
|
636
806
|
server.registerTool('iranti_handshake', {
|
|
637
807
|
description: `Initialize or refresh an agent's working-memory brief for the current task.
|
|
@@ -669,10 +839,22 @@ Do not use this as a per-turn retrieval tool; use iranti_attend.`,
|
|
|
669
839
|
if (resolvedHost !== 'claude_code') {
|
|
670
840
|
startFileWatcher(process.cwd());
|
|
671
841
|
}
|
|
842
|
+
// Phase 3: increment session stats and compute milestone nudge.
|
|
843
|
+
await updateSessionStats(process.cwd(), resolvedHost ?? '');
|
|
844
|
+
let factCount = 0;
|
|
845
|
+
try {
|
|
846
|
+
factCount = await (0, client_1.getDb)().knowledgeEntry.count({
|
|
847
|
+
where: { NOT: [{ entityType: 'system' }, { entityType: 'agent' }] },
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
catch {
|
|
851
|
+
// Non-fatal: factCount milestones degrade gracefully to 0
|
|
852
|
+
}
|
|
853
|
+
const feedbackNudge = await computeFeedbackNudge(process.cwd(), factCount);
|
|
672
854
|
if (setupWarnings.length > 0) {
|
|
673
|
-
return textResult({ ...result, setupWarnings });
|
|
855
|
+
return textResult({ ...result, ...(feedbackNudge ? { feedbackNudge } : {}), setupWarnings });
|
|
674
856
|
}
|
|
675
|
-
return textResult(result);
|
|
857
|
+
return textResult(feedbackNudge ? { ...result, feedbackNudge } : result);
|
|
676
858
|
});
|
|
677
859
|
server.registerTool('iranti_attend', {
|
|
678
860
|
description: `Ask Iranti whether memory should be injected before the next LLM turn.
|
|
@@ -728,8 +910,10 @@ checkpoint state before closing the turn.`,
|
|
|
728
910
|
// write-debt comes from its PostToolUse hook; other hosts use the watcher.
|
|
729
911
|
if (!phase || phase === 'pre-response' || phase === 'mid-turn') {
|
|
730
912
|
const debtBlock = checkWriteDebtForAttend(process.cwd());
|
|
731
|
-
if (debtBlock)
|
|
913
|
+
if (debtBlock) {
|
|
914
|
+
_writeDebtFireCount++;
|
|
732
915
|
return debtBlock;
|
|
916
|
+
}
|
|
733
917
|
}
|
|
734
918
|
// ─────────────────────────────────────────────────────────────────────
|
|
735
919
|
const resolvedLatestMessage = resolveAttendLatestMessage({ latestMessage, message });
|
|
@@ -797,11 +981,24 @@ checkpoint state before closing the turn.`,
|
|
|
797
981
|
const injectionBlock = factsBlock || rulesBlock
|
|
798
982
|
? `${factsBlock}${rulesBlock}`
|
|
799
983
|
: '';
|
|
984
|
+
// Phase 5: friction nudge after 3+ write-debt gate fires this session.
|
|
985
|
+
let frictionNudge = null;
|
|
986
|
+
if (!_frictionNudgeSentThisSession && _writeDebtFireCount >= 3) {
|
|
987
|
+
_frictionNudgeSentThisSession = true;
|
|
988
|
+
frictionNudge = {
|
|
989
|
+
command: 'iranti feedback',
|
|
990
|
+
message: "You've hit the write-debt gate a few times this session. Something feeling off? Would love to hear it.",
|
|
991
|
+
trigger: 'friction',
|
|
992
|
+
milestone: 'friction_write_debt',
|
|
993
|
+
suppressUntil: new Date(Date.now() + 7 * 86400000).toISOString(),
|
|
994
|
+
};
|
|
995
|
+
}
|
|
800
996
|
return textResult({
|
|
801
997
|
...result,
|
|
802
998
|
facts: sanitizeFacts(result.facts),
|
|
803
999
|
injectionBlock,
|
|
804
1000
|
...(postResponseCapture ? { postResponseCapture } : {}),
|
|
1001
|
+
...(frictionNudge ? { frictionNudge } : {}),
|
|
805
1002
|
});
|
|
806
1003
|
}
|
|
807
1004
|
catch (error) {
|
package/dist/src/api/server.js
CHANGED
|
@@ -71,7 +71,7 @@ const RUNTIME_AUTHORITY = (0, runtimeLifecycle_1.resolveRuntimeAuthorityFromEnv)
|
|
|
71
71
|
const INSTANCE_DIR = RUNTIME_AUTHORITY.instanceDir;
|
|
72
72
|
const INSTANCE_RUNTIME_FILE = RUNTIME_AUTHORITY.runtimeFile;
|
|
73
73
|
const INSTANCE_NAME = process.env.IRANTI_INSTANCE_NAME?.trim() || (INSTANCE_DIR ? path_1.default.basename(INSTANCE_DIR) : 'adhoc');
|
|
74
|
-
const VERSION = '0.3.
|
|
74
|
+
const VERSION = '0.3.40';
|
|
75
75
|
const PORT_RAW = (process.env.IRANTI_PORT ?? '3001').trim();
|
|
76
76
|
const PORT = Number.parseInt(PORT_RAW, 10);
|
|
77
77
|
const runtimeMetadataHealth = (0, healthChecks_1.createHealthCheckState)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliHelpCatalog.d.ts","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,SAAS,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,EAyBtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,SAAS,EA2C7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAyBzC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,SAAS,EA2C/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"cliHelpCatalog.d.ts","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,SAAS,GAAG;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,EAyBtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,SAAS,EA2C7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAyBzC,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,SAAS,EA2C/B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,EAiGvC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAAS,EAOnC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAmExC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,EAOzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAkBhD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,EAOrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,EAMpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAAS,EAyBpC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,EAarC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,EAmBhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,EAyBrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAyBxC,CAAC;AAEF,eAAO,MAAM,YAAY;;;;CAcxB,CAAC"}
|
|
@@ -248,6 +248,12 @@ exports.DIAGNOSTICS_HELP = [
|
|
|
248
248
|
useWhen: 'an attend() call extracted bad or low-quality facts from a tool result and you need to roll them back cleanly.',
|
|
249
249
|
scenario: 'After a noisy Read/Grep autowrite batch, run with --since 15m to preview, then add --commit to delete.',
|
|
250
250
|
},
|
|
251
|
+
{
|
|
252
|
+
command: 'iranti feedback [--rating <1-5>] [--comment <text>] [--type bug|praise|suggestion|general] [--dry-run] [--offline]',
|
|
253
|
+
description: 'Send a one-keypress satisfaction signal to the Iranti team.',
|
|
254
|
+
useWhen: 'something feels off, you want to share praise, or you have a suggestion — and you have ten seconds.',
|
|
255
|
+
scenario: 'Running `iranti feedback --type bug` immediately after hitting a frustrating edge case.',
|
|
256
|
+
},
|
|
251
257
|
];
|
|
252
258
|
exports.CONNECT_HELP = [
|
|
253
259
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliHelpCatalog.js","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cliHelpCatalog.js","sourceRoot":"","sources":["../../../src/lib/cliHelpCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,5 +56,6 @@ export declare function printHandoffHelp(style: CliHelpStyle): void;
|
|
|
56
56
|
export declare function printChatHelp(style: CliHelpStyle): void;
|
|
57
57
|
export declare function printResolveHelp(style: CliHelpStyle): void;
|
|
58
58
|
export declare function printProviderKeyHelp(style: CliHelpStyle): void;
|
|
59
|
+
export declare function printFeedbackHelp(style: CliHelpStyle): void;
|
|
59
60
|
export { printChoiceGuide };
|
|
60
61
|
//# sourceMappingURL=cliHelpRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliHelpRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/cliHelpRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAwBH,KAAK,gBAAgB,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC,CAAC;AAuCF,iBAAS,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAQ/F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAM1F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAkCvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAGxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMtD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAG5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE5D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMpE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMhE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM/D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM9D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAOzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAOzD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM5D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMzD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAI9D;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cliHelpRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/cliHelpRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ exports.printHandoffHelp = printHandoffHelp;
|
|
|
48
48
|
exports.printChatHelp = printChatHelp;
|
|
49
49
|
exports.printResolveHelp = printResolveHelp;
|
|
50
50
|
exports.printProviderKeyHelp = printProviderKeyHelp;
|
|
51
|
+
exports.printFeedbackHelp = printFeedbackHelp;
|
|
51
52
|
exports.printChoiceGuide = printChoiceGuide;
|
|
52
53
|
const cliHelpCatalog_1 = require("./cliHelpCatalog");
|
|
53
54
|
function printHelpEntries(style, title, entries) {
|
|
@@ -215,4 +216,7 @@ function printProviderKeyHelp(style) {
|
|
|
215
216
|
console.log(' Target either an instance env or a project binding. If neither is supplied, the CLI will try the current project first.');
|
|
216
217
|
console.log(' Use instance targeting for shared runtime configuration. Use project targeting when the command should follow a specific `.env.iranti` binding.');
|
|
217
218
|
}
|
|
219
|
+
function printFeedbackHelp(style) {
|
|
220
|
+
printSingleHelpEntry(style, 'Feedback Command', requireHelpEntry(cliHelpCatalog_1.DIAGNOSTICS_HELP, 'iranti feedback '));
|
|
221
|
+
}
|
|
218
222
|
//# sourceMappingURL=cliHelpRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliHelpRenderer.js","sourceRoot":"","sources":["../../../src/lib/cliHelpRenderer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;AAkFH,4CAMC;AAED,sCAkCC;AAED,wCAGC;AAED,4CAMC;AAED,oCAMC;AAED,gDAGC;AAED,8CAEC;AAED,gDAEC;AAED,gEAMC;AAED,8DAMC;AAED,sCAEC;AAED,wDAMC;AAED,sDAMC;AAED,wDAMC;AAED,gDAEC;AAED,4CAEC;AAED,oDAMC;AAED,wDAMC;AAED,0CAOC;AAED,0CAOC;AAED,4CAMC;AAED,gDAMC;AAED,0CAMC;AAED,0CAMC;AAED,4CAMC;AAED,sCAMC;AAED,4CAMC;AAED,oDAIC;AAEQ,4CAAgB;
|
|
1
|
+
{"version":3,"file":"cliHelpRenderer.js","sourceRoot":"","sources":["../../../src/lib/cliHelpRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback collection module for the iranti CLI.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces satisfaction signals via the `iranti feedback` command:
|
|
5
|
+
* single-keypress rating, optional free-text comment, anonymous persistent
|
|
6
|
+
* UUID, local throttle, and offline fallback queue. No DB required — relies
|
|
7
|
+
* only on .iranti/ local files and the telemetry endpoint.
|
|
8
|
+
*
|
|
9
|
+
* Passive usage signals (session-stats.json) are read here so that Phase 3
|
|
10
|
+
* (milestone nudges in iranti_handshake) has rich data without any active
|
|
11
|
+
* user action. The MCP server writes that file; this module only reads it.
|
|
12
|
+
*
|
|
13
|
+
* Exported types are also used by the MCP nudge system (Phase 3) which reads
|
|
14
|
+
* SessionStats and calls recordMilestoneNudgeSeen() to prevent repeat nudges.
|
|
15
|
+
*/
|
|
16
|
+
export type FeedbackType = 'bug' | 'praise' | 'suggestion' | 'general';
|
|
17
|
+
export type FeedbackPayload = {
|
|
18
|
+
feedbackId: string;
|
|
19
|
+
rating: number;
|
|
20
|
+
comment: string | null;
|
|
21
|
+
type: FeedbackType;
|
|
22
|
+
version: string;
|
|
23
|
+
os: string;
|
|
24
|
+
arch: string;
|
|
25
|
+
nodeVersion: string;
|
|
26
|
+
sessionCount: number | null;
|
|
27
|
+
factCount: number | null;
|
|
28
|
+
instanceId: string;
|
|
29
|
+
milestoneContext: string | null;
|
|
30
|
+
submittedAt: string;
|
|
31
|
+
};
|
|
32
|
+
/** Passive usage stats written by the MCP server at each session. */
|
|
33
|
+
export type SessionStats = {
|
|
34
|
+
totalSessions: number;
|
|
35
|
+
totalWrites: number;
|
|
36
|
+
totalAttends: number;
|
|
37
|
+
totalValueDeliveries: number;
|
|
38
|
+
uniqueHosts: string[];
|
|
39
|
+
firstSessionAt: string;
|
|
40
|
+
lastSessionAt: string;
|
|
41
|
+
feedbackMilestonesSeen: string[];
|
|
42
|
+
};
|
|
43
|
+
export type FeedbackRunOptions = {
|
|
44
|
+
rating?: number;
|
|
45
|
+
comment?: string;
|
|
46
|
+
type?: FeedbackType;
|
|
47
|
+
dryRun?: boolean;
|
|
48
|
+
offline?: boolean;
|
|
49
|
+
milestoneContext?: string | null;
|
|
50
|
+
factCount?: number | null;
|
|
51
|
+
version: string;
|
|
52
|
+
};
|
|
53
|
+
/** Read passive usage stats accumulated by the MCP server. Returns null if absent. */
|
|
54
|
+
export declare function readSessionStats(irantiDir: string): Promise<SessionStats | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Record that a milestone nudge key was shown so it doesn't repeat.
|
|
57
|
+
* Used by the MCP nudge system (Phase 3).
|
|
58
|
+
*/
|
|
59
|
+
export declare function recordMilestoneNudgeSeen(irantiDir: string, milestoneKey: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Run the full feedback collection flow.
|
|
62
|
+
*
|
|
63
|
+
* Respects user's time: throttled by default (7 days), bugs by 1 day.
|
|
64
|
+
* If the endpoint is unreachable, saves to .iranti/pending-feedback.json
|
|
65
|
+
* for silent retry on the next run.
|
|
66
|
+
*/
|
|
67
|
+
export declare function runFeedbackCommand(opts: FeedbackRunOptions): Promise<void>;
|
|
68
|
+
//# sourceMappingURL=feedbackCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbackCollector.d.ts","sourceRoot":"","sources":["../../../src/lib/feedbackCollector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AA2DF,sFAAsF;AACtF,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAOtF;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrG;AAkKD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEhF"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Feedback collection module for the iranti CLI.
|
|
4
|
+
*
|
|
5
|
+
* Surfaces satisfaction signals via the `iranti feedback` command:
|
|
6
|
+
* single-keypress rating, optional free-text comment, anonymous persistent
|
|
7
|
+
* UUID, local throttle, and offline fallback queue. No DB required — relies
|
|
8
|
+
* only on .iranti/ local files and the telemetry endpoint.
|
|
9
|
+
*
|
|
10
|
+
* Passive usage signals (session-stats.json) are read here so that Phase 3
|
|
11
|
+
* (milestone nudges in iranti_handshake) has rich data without any active
|
|
12
|
+
* user action. The MCP server writes that file; this module only reads it.
|
|
13
|
+
*
|
|
14
|
+
* Exported types are also used by the MCP nudge system (Phase 3) which reads
|
|
15
|
+
* SessionStats and calls recordMilestoneNudgeSeen() to prevent repeat nudges.
|
|
16
|
+
*/
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.readSessionStats = readSessionStats;
|
|
22
|
+
exports.recordMilestoneNudgeSeen = recordMilestoneNudgeSeen;
|
|
23
|
+
exports.runFeedbackCommand = runFeedbackCommand;
|
|
24
|
+
const fs_1 = __importDefault(require("fs"));
|
|
25
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
26
|
+
const https_1 = __importDefault(require("https"));
|
|
27
|
+
const os_1 = __importDefault(require("os"));
|
|
28
|
+
const path_1 = __importDefault(require("path"));
|
|
29
|
+
const readline_1 = __importDefault(require("readline"));
|
|
30
|
+
const crypto_1 = require("crypto");
|
|
31
|
+
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
32
|
+
const ENDPOINT = 'https://api.iranti.dev/feedback';
|
|
33
|
+
const TIMEOUT_MS = 5000;
|
|
34
|
+
const THROTTLE_DAYS = 7;
|
|
35
|
+
const BUG_THROTTLE_DAYS = 1;
|
|
36
|
+
const RATING_LABELS = {
|
|
37
|
+
1: 'Great',
|
|
38
|
+
2: 'OK',
|
|
39
|
+
3: 'Not great',
|
|
40
|
+
4: 'Good',
|
|
41
|
+
5: 'Excellent',
|
|
42
|
+
};
|
|
43
|
+
// ── File path helpers ─────────────────────────────────────────────────────────
|
|
44
|
+
/** Resolve the .iranti/ directory. Prefer cwd/.iranti if it exists. */
|
|
45
|
+
function resolveIrantiDir() {
|
|
46
|
+
const local = path_1.default.join(process.cwd(), '.iranti');
|
|
47
|
+
return fs_1.default.existsSync(local) ? local : path_1.default.join(os_1.default.homedir(), '.iranti');
|
|
48
|
+
}
|
|
49
|
+
async function ensureDir(dir) {
|
|
50
|
+
await promises_1.default.mkdir(dir, { recursive: true });
|
|
51
|
+
}
|
|
52
|
+
// ── Instance ID ───────────────────────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* Return the persistent anonymous instance UUID, creating it if absent.
|
|
55
|
+
* Stored at .iranti/instance-id. Never contains PII.
|
|
56
|
+
*/
|
|
57
|
+
async function getOrCreateInstanceId(irantiDir) {
|
|
58
|
+
const file = path_1.default.join(irantiDir, 'instance-id');
|
|
59
|
+
try {
|
|
60
|
+
return (await promises_1.default.readFile(file, 'utf8')).trim();
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
const id = (0, crypto_1.randomUUID)();
|
|
64
|
+
await ensureDir(irantiDir);
|
|
65
|
+
await promises_1.default.writeFile(file, id, 'utf8');
|
|
66
|
+
return id;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ── Session stats (passive signal) ───────────────────────────────────────────
|
|
70
|
+
/** Read passive usage stats accumulated by the MCP server. Returns null if absent. */
|
|
71
|
+
async function readSessionStats(irantiDir) {
|
|
72
|
+
try {
|
|
73
|
+
const raw = await promises_1.default.readFile(path_1.default.join(irantiDir, 'session-stats.json'), 'utf8');
|
|
74
|
+
return JSON.parse(raw);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Record that a milestone nudge key was shown so it doesn't repeat.
|
|
82
|
+
* Used by the MCP nudge system (Phase 3).
|
|
83
|
+
*/
|
|
84
|
+
async function recordMilestoneNudgeSeen(irantiDir, milestoneKey) {
|
|
85
|
+
const file = path_1.default.join(irantiDir, 'session-stats.json');
|
|
86
|
+
const stats = (await readSessionStats(irantiDir)) ?? {};
|
|
87
|
+
const seen = stats.feedbackMilestonesSeen ?? [];
|
|
88
|
+
if (!seen.includes(milestoneKey)) {
|
|
89
|
+
seen.push(milestoneKey);
|
|
90
|
+
const updated = {
|
|
91
|
+
totalSessions: stats.totalSessions ?? 0,
|
|
92
|
+
totalWrites: stats.totalWrites ?? 0,
|
|
93
|
+
totalAttends: stats.totalAttends ?? 0,
|
|
94
|
+
totalValueDeliveries: stats.totalValueDeliveries ?? 0,
|
|
95
|
+
uniqueHosts: stats.uniqueHosts ?? [],
|
|
96
|
+
firstSessionAt: stats.firstSessionAt ?? new Date().toISOString(),
|
|
97
|
+
lastSessionAt: stats.lastSessionAt ?? new Date().toISOString(),
|
|
98
|
+
feedbackMilestonesSeen: seen,
|
|
99
|
+
};
|
|
100
|
+
await ensureDir(irantiDir);
|
|
101
|
+
await promises_1.default.writeFile(file, JSON.stringify(updated, null, 2) + '\n', 'utf8');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// ── Throttle ──────────────────────────────────────────────────────────────────
|
|
105
|
+
async function isThrottled(irantiDir, type) {
|
|
106
|
+
try {
|
|
107
|
+
const raw = await promises_1.default.readFile(path_1.default.join(irantiDir, 'feedback-sent.json'), 'utf8');
|
|
108
|
+
const record = JSON.parse(raw);
|
|
109
|
+
const lastSent = new Date(record.lastSentAt).getTime();
|
|
110
|
+
const cooldownDays = type === 'bug' ? BUG_THROTTLE_DAYS : THROTTLE_DAYS;
|
|
111
|
+
return Date.now() - lastSent < cooldownDays * 86400000;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async function recordSent(irantiDir, rating) {
|
|
118
|
+
const file = path_1.default.join(irantiDir, 'feedback-sent.json');
|
|
119
|
+
let existing = {};
|
|
120
|
+
try {
|
|
121
|
+
existing = JSON.parse(await promises_1.default.readFile(file, 'utf8'));
|
|
122
|
+
}
|
|
123
|
+
catch { /* ok */ }
|
|
124
|
+
const updated = {
|
|
125
|
+
count: (existing.count ?? 0) + 1,
|
|
126
|
+
lastRating: rating,
|
|
127
|
+
lastSentAt: new Date().toISOString(),
|
|
128
|
+
};
|
|
129
|
+
await ensureDir(irantiDir);
|
|
130
|
+
await promises_1.default.writeFile(file, JSON.stringify(updated, null, 2) + '\n', 'utf8');
|
|
131
|
+
}
|
|
132
|
+
// ── Offline queue ─────────────────────────────────────────────────────────────
|
|
133
|
+
async function writePending(irantiDir, payload) {
|
|
134
|
+
const file = path_1.default.join(irantiDir, 'pending-feedback.json');
|
|
135
|
+
let pending = [];
|
|
136
|
+
try {
|
|
137
|
+
pending = JSON.parse(await promises_1.default.readFile(file, 'utf8'));
|
|
138
|
+
}
|
|
139
|
+
catch { /* ok */ }
|
|
140
|
+
pending.push({ ...payload, retryable: true });
|
|
141
|
+
await ensureDir(irantiDir);
|
|
142
|
+
await promises_1.default.writeFile(file, JSON.stringify(pending, null, 2) + '\n', 'utf8');
|
|
143
|
+
}
|
|
144
|
+
// ── HTTP submission ───────────────────────────────────────────────────────────
|
|
145
|
+
function postFeedback(payload) {
|
|
146
|
+
return new Promise((resolve, reject) => {
|
|
147
|
+
const body = JSON.stringify(payload);
|
|
148
|
+
const url = new URL(ENDPOINT);
|
|
149
|
+
const req = https_1.default.request({
|
|
150
|
+
hostname: url.hostname,
|
|
151
|
+
path: url.pathname,
|
|
152
|
+
method: 'POST',
|
|
153
|
+
headers: {
|
|
154
|
+
'Content-Type': 'application/json',
|
|
155
|
+
'Content-Length': Buffer.byteLength(body),
|
|
156
|
+
},
|
|
157
|
+
timeout: TIMEOUT_MS,
|
|
158
|
+
}, (res) => {
|
|
159
|
+
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
|
|
160
|
+
resolve();
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
reject(new Error(`HTTP ${res.statusCode}`));
|
|
164
|
+
}
|
|
165
|
+
res.resume();
|
|
166
|
+
});
|
|
167
|
+
req.on('timeout', () => {
|
|
168
|
+
req.destroy();
|
|
169
|
+
reject(new Error('timeout'));
|
|
170
|
+
});
|
|
171
|
+
req.on('error', reject);
|
|
172
|
+
req.write(body);
|
|
173
|
+
req.end();
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// ── Interactive prompts ───────────────────────────────────────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Read a single keypress without requiring Enter. Uses raw mode.
|
|
179
|
+
* Returns the key pressed, or throws 'ctrl_c' / 'not_tty'.
|
|
180
|
+
*/
|
|
181
|
+
function readSingleKey() {
|
|
182
|
+
return new Promise((resolve, reject) => {
|
|
183
|
+
const stdin = process.stdin;
|
|
184
|
+
if (!stdin.isTTY) {
|
|
185
|
+
reject(new Error('not_tty'));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const wasRaw = stdin.isRaw ?? false;
|
|
189
|
+
try {
|
|
190
|
+
stdin.setRawMode(true);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
reject(new Error('not_tty'));
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
stdin.resume();
|
|
197
|
+
stdin.setEncoding('utf8');
|
|
198
|
+
const onData = (key) => {
|
|
199
|
+
stdin.removeListener('data', onData);
|
|
200
|
+
stdin.pause();
|
|
201
|
+
try {
|
|
202
|
+
stdin.setRawMode(wasRaw);
|
|
203
|
+
}
|
|
204
|
+
catch { /* ok */ }
|
|
205
|
+
if (key === '\u0003')
|
|
206
|
+
reject(new Error('ctrl_c'));
|
|
207
|
+
else
|
|
208
|
+
resolve(key);
|
|
209
|
+
};
|
|
210
|
+
stdin.on('data', onData);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Show the rating prompt and wait for a single keypress (1/2/3).
|
|
215
|
+
* Returns the chosen rating or null on cancellation/invalid input.
|
|
216
|
+
*/
|
|
217
|
+
async function promptRating() {
|
|
218
|
+
process.stdout.write('\n How\'s Iranti working for you?\n\n');
|
|
219
|
+
process.stdout.write(' \uD83D\uDE0A Great (1) \uD83D\uDE10 OK (2) \uD83D\uDE1E Not great (3)\n\n');
|
|
220
|
+
process.stdout.write(' Press 1, 2, or 3: ');
|
|
221
|
+
let key;
|
|
222
|
+
try {
|
|
223
|
+
key = await readSingleKey();
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
227
|
+
if (msg === 'ctrl_c')
|
|
228
|
+
process.stdout.write('\n');
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
if (!['1', '2', '3'].includes(key)) {
|
|
232
|
+
process.stdout.write('\n (invalid key — type 1, 2, or 3)\n');
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
process.stdout.write(`${key}\n`);
|
|
236
|
+
return Number(key);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Prompt for an optional free-text comment. Enter submits, empty string skips.
|
|
240
|
+
*/
|
|
241
|
+
async function promptComment() {
|
|
242
|
+
process.stdout.write('\n Anything specific? (Enter to skip)\n > ');
|
|
243
|
+
return new Promise((resolve) => {
|
|
244
|
+
const rl = readline_1.default.createInterface({
|
|
245
|
+
input: process.stdin,
|
|
246
|
+
output: process.stdout,
|
|
247
|
+
terminal: process.stdout.isTTY,
|
|
248
|
+
});
|
|
249
|
+
rl.question('', (answer) => {
|
|
250
|
+
rl.close();
|
|
251
|
+
const trimmed = answer.trim();
|
|
252
|
+
resolve(trimmed.length > 0 ? trimmed : null);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
// ── Main entrypoint ───────────────────────────────────────────────────────────
|
|
257
|
+
/**
|
|
258
|
+
* Run the full feedback collection flow.
|
|
259
|
+
*
|
|
260
|
+
* Respects user's time: throttled by default (7 days), bugs by 1 day.
|
|
261
|
+
* If the endpoint is unreachable, saves to .iranti/pending-feedback.json
|
|
262
|
+
* for silent retry on the next run.
|
|
263
|
+
*/
|
|
264
|
+
async function runFeedbackCommand(opts) {
|
|
265
|
+
const irantiDir = resolveIrantiDir();
|
|
266
|
+
const type = opts.type ?? 'general';
|
|
267
|
+
if (!opts.dryRun && !opts.offline) {
|
|
268
|
+
if (await isThrottled(irantiDir, type)) {
|
|
269
|
+
const days = type === 'bug' ? BUG_THROTTLE_DAYS : THROTTLE_DAYS;
|
|
270
|
+
console.log(` Feedback already submitted recently. You can send again after ${days} day${days === 1 ? '' : 's'}.`);
|
|
271
|
+
if (type !== 'bug')
|
|
272
|
+
console.log(' To report a bug sooner: iranti feedback --type bug');
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
let rating;
|
|
277
|
+
if (opts.rating !== undefined) {
|
|
278
|
+
rating = opts.rating;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
const interactive = await promptRating();
|
|
282
|
+
if (interactive === null)
|
|
283
|
+
return;
|
|
284
|
+
rating = interactive;
|
|
285
|
+
}
|
|
286
|
+
let comment;
|
|
287
|
+
if (opts.comment !== undefined) {
|
|
288
|
+
comment = opts.comment;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
comment = await promptComment();
|
|
292
|
+
}
|
|
293
|
+
const stats = await readSessionStats(irantiDir);
|
|
294
|
+
const instanceId = await getOrCreateInstanceId(irantiDir);
|
|
295
|
+
const payload = {
|
|
296
|
+
feedbackId: (0, crypto_1.randomUUID)(),
|
|
297
|
+
rating,
|
|
298
|
+
comment,
|
|
299
|
+
type,
|
|
300
|
+
version: opts.version,
|
|
301
|
+
os: process.platform,
|
|
302
|
+
arch: process.arch,
|
|
303
|
+
nodeVersion: process.version,
|
|
304
|
+
sessionCount: stats?.totalSessions ?? null,
|
|
305
|
+
factCount: opts.factCount ?? null,
|
|
306
|
+
instanceId,
|
|
307
|
+
milestoneContext: opts.milestoneContext ?? null,
|
|
308
|
+
submittedAt: new Date().toISOString(),
|
|
309
|
+
};
|
|
310
|
+
if (opts.dryRun) {
|
|
311
|
+
console.log('\n [dry-run] Payload that would be sent:\n');
|
|
312
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (opts.offline) {
|
|
316
|
+
await writePending(irantiDir, payload);
|
|
317
|
+
console.log('\n Saved locally \u2014 will retry next time.');
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
try {
|
|
321
|
+
await postFeedback(payload);
|
|
322
|
+
await recordSent(irantiDir, rating);
|
|
323
|
+
const label = RATING_LABELS[rating] ?? String(rating);
|
|
324
|
+
process.stdout.write(`\n \u2713 Sent (${label}). Thanks for helping shape Iranti.\n\n`);
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
await writePending(irantiDir, payload);
|
|
328
|
+
process.stdout.write('\n Saved locally \u2014 will retry next time.\n\n');
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=feedbackCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbackCollector.js","sourceRoot":"","sources":["../../../src/lib/feedbackCollector.ts"],"names":[],"mappings":"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"}
|