Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
446 commits
Select commit Hold shift + click to select a range
f97efb8
SimpleChatTC:SimpleProxy:Pdf2Text: js side initial plumbing
hanishkvc Nov 1, 2025
dfeb94d
SimpleChatTC:Pdf2Text: cleanup initial go
hanishkvc Nov 1, 2025
21544ea
SimpleChatTC:ResultMaxDataLength, Desc
hanishkvc Nov 1, 2025
e077f23
SimpleChatTC:Pdf2Text: Refine desc and MaxResultDataLength
hanishkvc Nov 1, 2025
61064ba
SimpleChatTC:Pdf2Text and otherwise readme update
hanishkvc Nov 1, 2025
63a8ddf
SimpleChatTC:SimpleProxyHS: make helper work with any num of args
hanishkvc Nov 1, 2025
8bc7de4
SimpleChatTC:TC Result truncating only if needed
hanishkvc Nov 1, 2025
dd0a7ec
SimpleChatTC:Pdf2Text: Make it work with a subset of pages
hanishkvc Nov 1, 2025
c21bef4
SimpleChatTC:Fixup auto toolcall wrt newer ChatShow flow
hanishkvc Nov 1, 2025
d3a893c
SimpleChatTC:Update notes
hanishkvc Nov 2, 2025
c8407a1
SimpleChatTC:SimpleProxy:UrlValidator module initial skeleton
hanishkvc Nov 2, 2025
6cab956
SimpleChatTC:SimpleProxy:UrlValidator initial go
hanishkvc Nov 2, 2025
c597572
SimpleChatTC:SimpleProxy: Use urlvalidator
hanishkvc Nov 2, 2025
b18aed4
SimpleChatTC:SimpleProxy: AuthAndRun hlpr for paths that check auth
hanishkvc Nov 2, 2025
a7de002
SimpleChatTC:SimpleProxy:Move pdf logic into its own module
hanishkvc Nov 2, 2025
350d7d7
SimpleChatTC:SimpleProxy: Move web requests to its own module
hanishkvc Nov 2, 2025
d012d12
SimpleChatTC:SimpleProxy: Avoid circular deps wrt Type Checking
hanishkvc Nov 2, 2025
a3beacf
SimpleChatTC:SimpleProxy:Pdf2Text cleanup page number handling
hanishkvc Nov 2, 2025
494d063
SimpleChatTC:SimpleProxy: getting local / web file module ++
hanishkvc Nov 2, 2025
e1cf2ba
SimpleChatTC:SimpleProxy:Pdf2Text update /cleanup readme
hanishkvc Nov 2, 2025
3b929f9
SimpleChatTC:SimpleProxy:Switch web flow to use file helpers
hanishkvc Nov 2, 2025
9efab62
SimpleChatTC:SimpleProxy:Add generic arxiv.org entry to allowed
hanishkvc Nov 2, 2025
e10a826
SimpleChatTC: Cleanup - remove older now unused show chat logic
hanishkvc Nov 2, 2025
a4483e3
SimpleChatTC:Cleanup Usage Note and its presentation a bit
hanishkvc Nov 2, 2025
8501759
SimpleChatTC:Cleanup:UsageNote, Initial SettingsInfo shown
hanishkvc Nov 3, 2025
1d1894a
SimpleChatTC:PdfText:Cleanup rename to follow a common convention
hanishkvc Nov 3, 2025
e6fd0ed
SimpleChatTC: ToolCalling enabled, Sliding window adjust
hanishkvc Nov 3, 2025
2cdf3f5
SimpleChatTC:SimpleProxy: Validate deps wrt enabled service paths
hanishkvc Nov 3, 2025
7fce3ee
SimpleChatTC:SettingsDefault:Enable cache prompt api option
hanishkvc Nov 3, 2025
f75bdb0
SimpleChatTC:WebTools And Search - headers and search drops - js
hanishkvc Nov 3, 2025
06fd41a
SimpleChatTC:WebTools: urltext-tag-drops python side - skel
hanishkvc Nov 3, 2025
c316f5a
SimpleChatTC:WebTools:UrlText:HtmlParser: tag drops - refine
hanishkvc Nov 3, 2025
c5ff065
SimpleChatTC:Cleanup in general
hanishkvc Nov 3, 2025
2394d38
SimpleChatTC:Cleanup: General T2
hanishkvc Nov 4, 2025
0fcb132
SimpleChatTC:UI:ClearChat, Unicode icons for Clear, settings
hanishkvc Nov 4, 2025
d6fd4ea
SimpleChatTC:FetchPdfAsText: Renamed function call
hanishkvc Nov 5, 2025
83a4b1a
SimpleChatTC:System Date and Time
hanishkvc Nov 5, 2025
d56a4a0
SimpleChatTC:Cleanup:Make main chat related classes importable
hanishkvc Nov 5, 2025
85c2779
SimpleChatTC:Cleanup:MeInTools: update tools, toolweb
hanishkvc Nov 5, 2025
0e7fe8b
SimpleChatTC:MeInTools: WebWorkers in Me
hanishkvc Nov 5, 2025
2534af8
SimpleChatTC:Rather bring in Tools Class
hanishkvc Nov 5, 2025
4d71ded
SimpleChatTC:ToolsManager: Instantiate in Me and Use
hanishkvc Nov 5, 2025
b2e7f5f
SimpleChatTC:ToolsManager: Cleanup inc delayed direct posting
hanishkvc Nov 5, 2025
313b5f6
SimpleChatTC:TrackToolCalls:helps ignor delayed response, if reqd
hanishkvc Nov 6, 2025
f7cff82
SimpleChatTC:TCPending: Clear pending in unhappy paths
hanishkvc Nov 6, 2025
899dff4
SimpleChatTC:IndexHTML:Fix a oversight with new module added
hanishkvc Nov 6, 2025
92b0dd7
SimpleChatTC:SimpleProxy:XMLText: initial go
hanishkvc Nov 6, 2025
fbe9b23
SimpleChatTC:XmlText: Add plumbing on web client ui ie js side
hanishkvc Nov 6, 2025
b8bb258
SimpleChatTC:XmlText: Cleanup initial go
hanishkvc Nov 6, 2025
9ed1cf9
SimpleChatTC:XMLFiltered: Retain xml tags with selective dropping
hanishkvc Nov 7, 2025
9f5c3d7
SimpleChatTC:XmlFiltered: Use re with heirarchy of tags to filter
hanishkvc Nov 7, 2025
c0f7c86
SimpleChatTC:ShowToolCall: Trap invalid args generated by GenAi
hanishkvc Nov 7, 2025
143f9c0
SimpleChatTC:Rename fetch_web_url_text to fetch_html_text
hanishkvc Nov 7, 2025
0628226
SimpleChatTC:XmlFiltered: Avoid showing skipped tags as no content
hanishkvc Nov 7, 2025
272e268
SimpleChatTC:Get body also for Not Ok responses from ai server
hanishkvc Nov 7, 2025
51707b5
SimpleChatTC:PdfText:Add initial skeleton for outline
hanishkvc Nov 7, 2025
bd60437
SimpleChatTC:PdfText: Numbering T1 - Diff Scheme needed
hanishkvc Nov 7, 2025
15e9984
SimpleChatTC:PdfText:Numbering T2 - Need diff scheme
hanishkvc Nov 7, 2025
9484bea
SimpleChatTC:PdfText:Basic Outline and its Numbering done
hanishkvc Nov 7, 2025
b2d53c1
SimpleChatTC:ChatMessage undefined driven
hanishkvc Nov 8, 2025
70b754c
SimpleChatTC:NSChatMessage class driven wrt ChatMessageEx
hanishkvc Nov 8, 2025
9bd754d
SimpleChatTC:NSChatMessage: Update SimpleChat to use same
hanishkvc Nov 8, 2025
7a61ca6
SimpleChatTC:NSChatMessage: MultiChatUI and beyond updated for same
hanishkvc Nov 8, 2025
b251f7d
SimpleChatTC:NSChatMessage with tool response/result fields
hanishkvc Nov 8, 2025
3d4f849
SimpleChatTC:NSChatMessage:ToolResponse show handling
hanishkvc Nov 8, 2025
b9defe2
SimpleChatTC:NSChatMessage: Handle edits by user wrt tool response
hanishkvc Nov 8, 2025
b4aaf5b
SimpleChatTC:NSChatMessage:Tool role newFromOld and load fixup
hanishkvc Nov 8, 2025
fe0cc8b
SimpleChatTC:NSChatMessage: fix up initial go
hanishkvc Nov 8, 2025
eaffdf3
SimpleChatTC:NSChatMessage:ToolResult User Input Background color
hanishkvc Nov 8, 2025
8079618
SimpleChatTC:Alert end user in case emtpy message to ai
hanishkvc Nov 9, 2025
5db6f92
SimpleChatTC:Vision: Prepare NSChatMessage for Text &| Image
hanishkvc Nov 9, 2025
72f62ee
SimpleChatTC:Vision: take care of image_url wrt newFrom & load
hanishkvc Nov 9, 2025
dfba64e
SimpleChatTCRV:Vision: Create needed MixedContent b4 nw handshake
hanishkvc Nov 9, 2025
da75564
SimpleChatTCRV:Vision: Add file input to get hold of img file
hanishkvc Nov 9, 2025
930fd65
SimpleChatTCRV:Basic skeleton to load a dataUrl
hanishkvc Nov 10, 2025
a6b5555
SimpleChatTCRV:Submit: Remember to include image, if available
hanishkvc Nov 10, 2025
8d762fc
SimpleChatTCRV:Vision:Show images as part of the message
hanishkvc Nov 10, 2025
4ee6e27
SimpleChatTCRV:Vision:Show user image selection in btn
hanishkvc Nov 10, 2025
4e4dc30
SimpleChatTCRV:Vision:HandleUserSubmit: Ensure cleanup even early
hanishkvc Nov 10, 2025
13c1c9d
SimpleChatTCRV:Vision: DataUrl helpers
hanishkvc Nov 10, 2025
29c2baf
SimpleChatTCRV:HandleUserSubmit:details of internaly caught exc
hanishkvc Nov 10, 2025
c94471a
SimpleChatTCRV:UI Cleanup: scrollOnlyIf, Tool HR, Msg Margin
hanishkvc Nov 11, 2025
dac97c1
SimpleChatTCRV:UI Cleanup: DetailsNotDiv Current settings info
hanishkvc Nov 11, 2025
f8af792
SimpleChatTCRV:UICleanup: ObjInfo dClassNames
hanishkvc Nov 11, 2025
f8c0fe6
SimpleChatTCRV:UICleanup: gradient wrt heading
hanishkvc Nov 11, 2025
52cce3e
SimpleChatTC:IDBHelper: Move core indexedDB helper as a module
hanishkvc Nov 11, 2025
5701319
SimpleChatTCRV:iDB:Add Put/Get; SimpleChat Save/Load using iDB
hanishkvc Nov 11, 2025
ca8e6ab
SimpleChatTCRV:iDB:GetKeys: helps decide whether restore btn shown
hanishkvc Nov 11, 2025
18b9448
SimpleChatTCRV:InputFileDialog:AcceptList:Images:Jpeg and Png
hanishkvc Nov 11, 2025
a2a0a37
SimpleChatTCRV: Response handling try catch, update errors
hanishkvc Nov 12, 2025
dc71a9b
SimpleChatTCRV:Remember to reset the Input File type value
hanishkvc Nov 12, 2025
1d2ef9d
SimpleChatTCRV:ChatMessage: UniqId, Delete logic, edit popover ui
hanishkvc Nov 13, 2025
62fb992
SimpleChatTCRV:CMPopOver: show within chatmessage, del logic
hanishkvc Nov 13, 2025
70a163f
SimpleChatTCRV:CMPopOver:Relative positioning - P1
hanishkvc Nov 13, 2025
6a67d00
SimpleChatTCRV:CMPopOver:Relative positioning - P2
hanishkvc Nov 13, 2025
c0dbc1d
SimpleChatTCRV:ChatMessage:Copy using PopOver menu & navigator
hanishkvc Nov 13, 2025
e731d29
SimpleChatTCRV:Cleanup:Delete keeps view around adjacent messages
hanishkvc Nov 14, 2025
67b9c68
SimpleChatTCRV: Update readme a bit, need to cleanup later
hanishkvc Nov 14, 2025
efcd81a
SimpleChatTCRV:SimpleProxy:DumpHeaders
hanishkvc Nov 14, 2025
95f79eb
SimpleChatTCRV:CleanUp: Refresh chat ui, if user empty submits
hanishkvc Nov 14, 2025
f3424d3
SimpleChatTCRV:Cleanup: Efficient ChatMessage Ui Delete
hanishkvc Nov 14, 2025
926b5cd
SimpleChatTCRV:Cleanup:Delete and Chat UI suitable update
hanishkvc Nov 14, 2025
1b4e1aa
SimpleChatTCRV:MCUI:ChatMsgAddShow, Use4 toolresp nonhappy paths
hanishkvc Nov 14, 2025
3e20b5c
SimpleChatTCRV:MCUI:CMAddShow:tool response happy path
hanishkvc Nov 15, 2025
a2698d0
SimpleChatTCRV:CMOptimisedShow: User respones
hanishkvc Nov 15, 2025
d29201b
SimpleChatTCRV:Cleanup:Distinguish btw uiremove & del_uiupdate
hanishkvc Nov 15, 2025
d18745d
SimpleChatTCRV:CMUI: remove live element, uidelete all matching
hanishkvc Nov 15, 2025
161714f
SimpleChatTCRV:CMUI:Scroll into view in optimized ui flows
hanishkvc Nov 15, 2025
9ddd923
SimpleChatTCRV:UI Flow cleanup plus
hanishkvc Nov 16, 2025
dda9f81
SimpleChatTCRV:UICleanupPlus: Fix oversights with initial go
hanishkvc Nov 16, 2025
511fcb0
SimpleChatTCRV:UICleanup: Use chat_uirefresh not chat_show
hanishkvc Nov 16, 2025
c84ec53
SimpleChatTCRV:UICleanup: loading message wrt restoring session
hanishkvc Nov 16, 2025
c4cbeba
SimpleChatTCRV:Cleanup:MouseEvents demote, UIRefreshy almost all
hanishkvc Nov 16, 2025
735a8b3
SimpleChatTCRV:Cleanup: Starting flow, cleanup description, readme
hanishkvc Nov 16, 2025
a497748
SimpleChatTCRV:UICleanup: User Input area one bunch of clenaup
hanishkvc Nov 16, 2025
08d84ec
SimpleChatTCRV:UI Cleanup
hanishkvc Nov 17, 2025
9baece7
SimpleChatTCRV:UI theme simple cleanup
hanishkvc Nov 17, 2025
9f782d7
SimpleChatTCRV:UI theme simple cleanup - css round 2
hanishkvc Nov 17, 2025
92bd355
SimpleChatTCRV:UI theme cleanup - html+css r3
hanishkvc Nov 18, 2025
ab9e9c9
SimpleChatTCRV:UICleanup: PopOverTO, buttonBorder, Restore, Usage
hanishkvc Nov 18, 2025
7b4afc8
SimpleChatTCRV:UICleanup: Scrollbar, role gradiants, textarea, ...
hanishkvc Nov 18, 2025
bf39338
SimpleChatTCRV:UICleanup: limit border-radius, SlidingWindow info
hanishkvc Nov 18, 2025
c039447
SimpleChatTCRV:UiCleanup: Switch to icon only buttons and title
hanishkvc Nov 18, 2025
e2bd57d
SimpleChatTCRV:UICleanup+: Fix oversight wrt Auto ObjPropsEdit
hanishkvc Nov 18, 2025
a3da445
SimpleChatTCRV:UICleanup: Sessions button take one popover
hanishkvc Nov 18, 2025
519cc46
SimpleChatTCRV:Sessions++ button take two: normal html + js + css
hanishkvc Nov 18, 2025
087fd93
SimpleChatTCRV:SysDateTime: Follow unix date format markers
hanishkvc Nov 18, 2025
72a780e
SimpleChatTCRV:UICleanup: ToolCall trigger and UserInput block
hanishkvc Nov 19, 2025
9e720e7
SimpleChatTCRV:UICleanup:Popover Firefox work around
hanishkvc Nov 19, 2025
d242e70
SimpleChatTCRV:UICleanup: Full chat messages ui refresh when needed
hanishkvc Nov 19, 2025
96f94b8
SimpleChatTCRV:UICleanup: PopOver, Reasoning bubble
hanishkvc Nov 19, 2025
ae68ee1
SimpleChatTCRV:UIClean:Free up vertical space
hanishkvc Nov 20, 2025
1b9190d
SimpleChatTCRV:MultipleImages:UI: Load track multiple images
hanishkvc Nov 20, 2025
08ea5c3
SimpleChatTCRV:MultipleImages: Icon only buttons
hanishkvc Nov 20, 2025
122c96e
SimpleChatTCRV:MultipleImages:Update ChatMessage++ wrt same
hanishkvc Nov 20, 2025
ae3d4fa
SimpleChatTCRV:UICleanup: Icon samples
hanishkvc Nov 20, 2025
720818f
SimpleChatTCRV:UICleanup: new icons short texts, tighter buttons
hanishkvc Nov 20, 2025
15dcd4a
SimpleChatTCRV:ImagePopOver: To view and if reqd del before submit
hanishkvc Nov 20, 2025
9d1c7b5
SimpleChatTCRV:AnveshikaSallap, Color cleanup
hanishkvc Nov 21, 2025
ae552a9
SimpleChatTCRV:UIClean: Avoid wip popover anchor position mech
hanishkvc Nov 21, 2025
1852944
SimpleChatTCRV:ToolCall:ExternalAi: initial go
hanishkvc Nov 21, 2025
5025001
SimpleChatTCRV:ToolCall Ai - Decouple SimpleChat from Me a bit
hanishkvc Nov 21, 2025
08d1654
SimpleChatTCRV:DivStream: Allow predetermined div for streamd resp
hanishkvc Nov 21, 2025
17de6d4
SimpleChatTCRV:DivStreams: Have sep div for each chat session
hanishkvc Nov 21, 2025
5a1eaf9
SimpleChatTCRV:DivStreams: Why missing - still a mystry
hanishkvc Nov 21, 2025
d5e5d58
SimpleChatTCRV:DivStreams: Prepared for switching in middle
hanishkvc Nov 21, 2025
2d141a4
SimpleChatTCRV:DivStreams: Enhanced Object using JSDoc++
hanishkvc Nov 22, 2025
97ba0cb
SimpleChatTCRV:DivStream: Make it a class
hanishkvc Nov 22, 2025
fe0e118
SimpleChatTCRV:ToolCall:ExternalAi: Show its response live
hanishkvc Nov 22, 2025
631d9ce
SimpleChatTCRV:ToolCalls Cleanup
hanishkvc Nov 22, 2025
f3f6589
SimpleChatTCRV:Config:WIP: Move config fields into a Config class
hanishkvc Nov 23, 2025
68e4285
SimpleChatTCRV:Config:WIP:Switch SimpleChat to Config from Me
hanishkvc Nov 23, 2025
d07e16a
SimpleChatTCRV:Config+:WIP:CleanUp: Have sensible chatIds
hanishkvc Nov 23, 2025
9e65261
SimpleChatTCRV:Config:WIP:Temporary updated starting flow
hanishkvc Nov 23, 2025
8e39afb
SimpleChatTCRV:Config:Tools: Adapt for SimpleChat with Config
hanishkvc Nov 23, 2025
7d6971a
SimpleChatTCRV:Config++: ValidatedToolCall UI updated
hanishkvc Nov 23, 2025
f7e9bde
SimpleChatTCRV:Config++:Cleanup: Hide/Show UserIn and ValidateTC
hanishkvc Nov 23, 2025
57cf87b
SimpleChatTCRV:Config++:Save/Load Configs
hanishkvc Nov 23, 2025
a4e023d
SimpleChatTCRV:Config++:Cleanup the initial go
hanishkvc Nov 23, 2025
856f403
SimpleChatTCRV:AnveshikaSallap: cleanup in general
hanishkvc Nov 24, 2025
4bca1f6
SimpleChatTCRV:UIRefresh cleanup: Show only msgs in sliding window
hanishkvc Nov 24, 2025
b7b9109
SimpleChatTCRV:Cleanup
hanishkvc Nov 24, 2025
b1cfeda
SimpleChatTCRV:Misc cleanup continues...
hanishkvc Nov 24, 2025
214ca2e
SimpleChatTCRV: Documentation cleanup
hanishkvc Nov 24, 2025
ba6c787
SimpleChatTCRV: split changelog from details into separate file
hanishkvc Nov 24, 2025
ec41001
SimpleChatTCRV: Add simple readme in place of detailed one
hanishkvc Nov 24, 2025
143237a
SimpleChatTCRV: Update/Cleanup the new readme
hanishkvc Nov 24, 2025
1751ed1
SimpleChatTCRV:Cleanup importmap
hanishkvc Nov 24, 2025
073c570
SimpleChatTCRV:AiCallingAi ToolCall: flow cleanup and flexibility
hanishkvc Nov 24, 2025
3cd2e3f
SimpleChatTCRV:UI:Cleanup: Have common div+label+el logic
hanishkvc Nov 25, 2025
c5eb783
SimpleChatTCRV:Ui:Cleanup: Extended Type annotations
hanishkvc Nov 25, 2025
d3f1a39
SimpleChatTCRV:Markdown:Initial skeleton
hanishkvc Nov 25, 2025
c9ddb90
SimpleChatTCRV:MarkDown:Headings, Pre initial cleanup
hanishkvc Nov 25, 2025
be528bc
SimpleChatTCRV:Markdown:Unordered list initial go
hanishkvc Nov 25, 2025
c420f16
SimpleChatTCRV:MarkDown:Cleanup Unordered list initial go
hanishkvc Nov 25, 2025
781f86f
SimpleChatTCRV:Markdown: Remove unordered list marker
hanishkvc Nov 25, 2025
924bb6c
SimpleChatTCRV:MarkDown:HorizLine and Unordered list
hanishkvc Nov 25, 2025
95c8cd6
SimpleChatTCRV:MarkDown: Better Fenced Pre
hanishkvc Nov 25, 2025
03220d4
SimpleChatTCRV:Markdown: Allow fixed spaces b4 fenced pre marker
hanishkvc Nov 25, 2025
3cc5bd0
SimpleChatTCRV:MarkDown:Tables initial skeleton
hanishkvc Nov 25, 2025
2f85d44
SimpleChatTCRV:MarkDown:Tables initial go
hanishkvc Nov 25, 2025
edf4c65
SimpleChatTCRV:MarkDown:Table cleanup initial go
hanishkvc Nov 25, 2025
654e234
SimpleChatTCRV:Markdown:User configurable per session
hanishkvc Nov 25, 2025
a1dc72b
SimpleChatTCRV:MarkDown:Cleanup overall initial go
hanishkvc Nov 25, 2025
9453a81
SimpleChatTCRV:Markdown:Ordered and Unordered
hanishkvc Nov 26, 2025
908ca17
SimpleChatTCRV:Markdown:OrderedUnOrdered: list.offsets
hanishkvc Nov 26, 2025
e7b8fc1
SimpleChatTCRV:Markdown:OrderedUnOrdered: rename to semantic
hanishkvc Nov 26, 2025
9b75e49
SimpleChatTCRV:Markdown:OrderedUnOrderd: Simplify flow
hanishkvc Nov 26, 2025
2788752
SimpleChatTCRV:Markdown:OrdUnOrded: EndType tracker initial go
hanishkvc Nov 26, 2025
b4be1cb
SimpleChatTCRV:Markdown: Ordered Ya Unordered
hanishkvc Nov 26, 2025
226dc79
SimpleChatTCRV:Markdown:Lists - handle split lines to an extent
hanishkvc Nov 26, 2025
1129ab5
SimpleChatTCRV:Markdown:Basic List (ordered/unordered) handling
hanishkvc Nov 26, 2025
2242ad4
SimpleChatTCRV:Markdown:List: Allow split line items
hanishkvc Nov 26, 2025
b3645a1
SimpleChatTCRV:ToolCall:ExtAi: Task decomposition/planning
hanishkvc Nov 26, 2025
1d26453
SimpleChatTCRV:Markdown: CommonLogic listitem & para extend/append
hanishkvc Nov 26, 2025
edba012
SimpleChatTCRV:Markdown:BlockQuote support
hanishkvc Nov 26, 2025
0f5be05
SimpleChatTCRV:Markdown: Move Pre Fenced handling into func
hanishkvc Nov 26, 2025
707b719
SimpleChatTCRV:Markdown:ReEnable Sanitize, lineRaw
hanishkvc Nov 26, 2025
67f9715
SimpleChatTCRV:Markdown:Process headline and horizline
hanishkvc Nov 26, 2025
11eab92
SimpleChatTCRV:TC:FetchUrlRaw: Rename to avoid confusion
hanishkvc Nov 26, 2025
82d436b
SimpleChatTCRV:Markdown: flexible unwind list
hanishkvc Nov 27, 2025
6358a20
SimpleChatTCRV:Markdown:List items without list marker cleanup
hanishkvc Nov 27, 2025
e954616
SimpleChatTCRV:Markdown:OrderedLists - allow only number markers
hanishkvc Nov 27, 2025
d971475
SimpleChatTCRV:Markdown: Usage flow cleanup
hanishkvc Nov 27, 2025
701ebca
SimpleChatTCRV:CMContentTextFormat: towards user fine adjustable
hanishkvc Nov 28, 2025
c68316b
SimpleChatTCRV:CMTextFormat: PopOver & Message UI adjust
hanishkvc Nov 28, 2025
afd6365
SimpleChatTCRV:CMTextFormat: Common flow accounting User and Auto
hanishkvc Nov 28, 2025
29f9abe
SimpleChatTCRV:UICleanup: Show own divstream mostly, ShowInfo all
hanishkvc Nov 28, 2025
2981033
SimpleChatTCRV:UICleanup:Ai Reasoning/Live response
hanishkvc Nov 28, 2025
593e831
SimpleSallap:Cleanup notes
hanishkvc Dec 4, 2025
c4e0c03
SimpleSallap:SimpleProxy: Enable https mode
hanishkvc Dec 4, 2025
e52a7aa
SimpleSallap:SimpleProxy: MultiThreading
hanishkvc Dec 4, 2025
05697af
SimpleSallap:SimpleProxy:Trap all GET request handling
hanishkvc Dec 4, 2025
4e7c737
SimpleSallap:SimpleProxy:Make Config dataclass driven - p1
hanishkvc Dec 5, 2025
5560840
SimpleSallap:SimpleProxy:DataclassDict driven Config - p2
hanishkvc Dec 5, 2025
4f790cb
SimpleSallap:SimpleProxy:DataClass Config - P3
hanishkvc Dec 5, 2025
277225d
SimpleSallap:SimpleProxy:DataClass Config - p4
hanishkvc Dec 5, 2025
d470d7e
SimpleSallap:SimpleProxy:DataClass Config simpleproxy updated
hanishkvc Dec 5, 2025
a52ac5d
SimpleSallap:SimpleProxy:use RequestHandler's setup after ssl hs
hanishkvc Dec 5, 2025
452e610
SimpleSallap:SimpleMCP:Skeletons for a toolcall class
hanishkvc Dec 5, 2025
47bd2bb
SimpleSallap:SimpleMCP:Update toolcall to suite calls needed
hanishkvc Dec 5, 2025
cbb632e
SimpleSallap:SimpleMCP:TCWeb: Duplicate webmagic starting point
hanishkvc Dec 5, 2025
b17cd18
SimpleSallap:SimpleMCP:TCWeb:Update TCUrlRaw + Helper
hanishkvc Dec 5, 2025
5bf608d
SimpleSallap:SimpleMCP:TCWeb:HtmlText updated for new flow
hanishkvc Dec 5, 2025
66038f9
SimpleSallap:SimpleMCP:TCWeb:XMLFiltered initial go wrt new flow
hanishkvc Dec 5, 2025
01a7800
SimpleSallap:SimpleMCP:TCPdf: Duplicate pdfmagic
hanishkvc Dec 6, 2025
4ce55eb
SimpleSallap:SimpleMCP:TCPdf: update
hanishkvc Dec 6, 2025
cb1d919
SimpleSallap:SimpleMCP:FileMagic switch to TCOutResponse
hanishkvc Dec 6, 2025
1db3a80
SimpleSallap:SimpleMCP:Duplicate simpleproxy for mcpish handshake
hanishkvc Dec 6, 2025
0a445c8
SimpleSallap:SimpleMCP:Move towards post json based flow
hanishkvc Dec 6, 2025
8700d52
SimpleSallap:SimpleMCP:ToolCalls beyond initial go
hanishkvc Dec 6, 2025
69be7f2
SimpleSallap:SimpleMCP: Use ToolManager for some of needed logics
hanishkvc Dec 6, 2025
fac947f
SimpleSallap:SimpleMCP:tools/list
hanishkvc Dec 6, 2025
9d6daae
SimpleSallap:SimpleMCP:Body Bytes to Json within mcp_run
hanishkvc Dec 6, 2025
79cfbbf
SimpleSallap:SimpleMCP:Allow auth check to be bypassed, if needed
hanishkvc Dec 6, 2025
e9dbe21
SimpleSallap:SimpleMCP:Cleanup initial go by running and seeing
hanishkvc Dec 6, 2025
bc9dd58
SimpleSallap:SimpleMCP:InitalGoCleanup Limit read to ContentLength
hanishkvc Dec 7, 2025
f75f93f
SimpleSallap:SimpleMCP:SendMcp expects dataclass and uses asdict
hanishkvc Dec 7, 2025
37651dc
SimpleSallap:SimpleMCP:Cleanup, rename; TestMcpCmdline helper
hanishkvc Dec 7, 2025
5f895b8
SimpleSallap:SimpleMCP:duplicate toolweb.mjs for mcpish client
hanishkvc Dec 7, 2025
091262d
SimpleSallap:ToolMCP: Initial skeletons at mcpish client
hanishkvc Dec 7, 2025
00adebe
SimpleSallap:ToolMCP:McpishClient:P2:Initial go wrt tools/call
hanishkvc Dec 7, 2025
631aa7f
SimpleSallap:SimpleMCP/ToolMCP: bring in wrt tools manager
hanishkvc Dec 7, 2025
728202b
SimpleSallap:SimpleMCP:TCWeb:SearchWeb tool call
hanishkvc Dec 7, 2025
fffa6a8
SimpleSallap:SimpleMCP:Cleanup in general
hanishkvc Dec 7, 2025
ff71090
SimpleSallap:SimpleMCP:Move out simpleproxy and its helpers
hanishkvc Dec 7, 2025
9039a91
SimpleSallap:SimpleMCP: Cleanup, Readme updates
hanishkvc Dec 7, 2025
9d895b0
SimpleSallap:SimpleMCP:Fix cmdline arg oversight, cleanup space
hanishkvc Dec 8, 2025
e04afaa
SimpleSallap:SimpleMCP: Require auth line only for https
hanishkvc Dec 9, 2025
e67734f
SimpleSallap:SimpleMCP:Try identify https in http mode early
hanishkvc Dec 9, 2025
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
94 changes: 94 additions & 0 deletions tools/server/public_simplechat/MOVED/local.tools/pdfmagic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Helper to manage pdf related requests
# by Humans for All

import urllib.parse
import urlvalidator as uv

Check failure on line 5 in tools/server/public_simplechat/MOVED/local.tools/pdfmagic.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Import "urlvalidator" could not be resolved (reportMissingImports)
import filemagic as mFile

Check failure on line 6 in tools/server/public_simplechat/MOVED/local.tools/pdfmagic.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Import "filemagic" could not be resolved (reportMissingImports)
from typing import TYPE_CHECKING, Any

if TYPE_CHECKING:
from simpleproxy import ProxyHandler


PDFOUTLINE_MAXDEPTH=4


def extract_pdfoutline(ol: Any, prefix: list[int]):
"""
Helps extract the pdf outline recursively, along with its numbering.
"""
if (len(prefix) > PDFOUTLINE_MAXDEPTH):
return ""
if type(ol).__name__ != type([]).__name__:
prefix[-1] += 1
return f"{".".join(map(str,prefix))}:{ol['/Title']}\n"

Check failure on line 24 in tools/server/public_simplechat/MOVED/local.tools/pdfmagic.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Strings nested within an f-string cannot use the same quote character as the f-string prior to Python 3.12 (reportGeneralTypeIssues)
olText = ""
prefix.append(0)
for (i,iol) in enumerate(ol):
olText += extract_pdfoutline(iol, prefix)
prefix.pop()
return olText


def process_pdftext(url: str, startPN: int, endPN: int):
"""
Extract textual content from given pdf.

* Validate the got url.
* Get the pdf file.
* Extract textual contents of the pdf from given start page number to end page number (inclusive).
* if -1 | 0 is specified wrt startPN, the actual starting page number (rather 1) will be used.
* if -1 | 0 is specified wrt endPN, the actual ending page number will be used.

NOTE: Page numbers start from 1, while the underlying list data structure index starts from 0
"""
import pypdf

Check failure on line 45 in tools/server/public_simplechat/MOVED/local.tools/pdfmagic.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Import "pypdf" could not be resolved (reportMissingImports)
import io
gotVU = uv.validate_url(url, "HandlePdfText")
if not gotVU.callOk:
return { 'status': gotVU.statusCode, 'msg': gotVU.statusMsg }
gotFile = mFile.get_file(url, "ProcessPdfText", "application/pdf", {})
if not gotFile.callOk:
return { 'status': gotFile.statusCode, 'msg': gotFile.statusMsg, 'data': gotFile.contentData}
tPdf = ""
oPdf = pypdf.PdfReader(io.BytesIO(gotFile.contentData))
if (startPN <= 0):
startPN = 1
if (endPN <= 0) or (endPN > len(oPdf.pages)):
endPN = len(oPdf.pages)
# Add the pdf outline, if available
outlineGot = extract_pdfoutline(oPdf.outline, [])
if outlineGot:
tPdf += f"\n\nOutline Start\n\n{outlineGot}\n\nOutline End\n\n"
# Add the pdf page contents
for i in range(startPN, endPN+1):
pd = oPdf.pages[i-1]
tPdf = tPdf + pd.extract_text()
return { 'status': 200, 'msg': "PdfText Response follows", 'data': tPdf }


def handle_pdftext(ph: 'ProxyHandler', pr: urllib.parse.ParseResult):
"""
Handle requests to pdftext path, which is used to extract plain text
from the specified pdf file.
"""
queryParams = urllib.parse.parse_qs(pr.query)
url = queryParams['url'][0]
startP = queryParams.get('startPageNumber', -1)
if isinstance(startP, list):
startP = int(startP[0])
endP = queryParams.get('endPageNumber', -1)
if isinstance(endP, list):
endP = int(endP[0])
print(f"INFO:HandlePdfText:Processing:{url}:{startP}:{endP}...")
gotP2T = process_pdftext(url, startP, endP)
if (gotP2T['status'] != 200):
ph.send_error(gotP2T['status'], gotP2T['msg'] )
return
ph.send_response(gotP2T['status'], gotP2T['msg'])
ph.send_header('Content-Type', 'text/text')
# Add CORS for browser fetch, just in case
ph.send_header('Access-Control-Allow-Origin', '*')
ph.end_headers()
print(f"INFO:HandlePdfText:ExtractedText:{url}...")
ph.wfile.write(gotP2T['data'].encode('utf-8'))
242 changes: 242 additions & 0 deletions tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
# A simple proxy server
# by Humans for All
#
# Listens on the specified port (defaults to squids 3128)
# * if a url query is got wrt urlraw path
# http://localhost:3128/urlraw?url=http://site.of.interest/path/of/interest
# fetches the contents of the specified url and returns the same to the requester
# * if a url query is got wrt urltext path
# http://localhost:3128/urltext?url=http://site.of.interest/path/of/interest
# fetches the contents of the specified url and returns the same to the requester
# after removing html tags in general as well as contents of tags like style
# script, header, footer, nav ...
# * any request to aum path is used to respond with a predefined text response
# which can help identify this server, in a simple way.
#
# Expects a Bearer authorization line in the http header of the requests got.
# HOWEVER DO KEEP IN MIND THAT ITS A VERY INSECURE IMPLEMENTATION, AT BEST
#


import sys
import http.server
import urllib.parse
import time
import ssl
import traceback
from typing import Callable
import pdfmagic as mPdf
import webmagic as mWeb
import config as mConfig

Check failure on line 30 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Import "config" could not be resolved (reportMissingImports)


gMe = mConfig.Config()


gAllowedCalls = {
"xmlfiltered": [],
"htmltext": [],
"urlraw": [],
"pdftext": [ "pypdf" ]
}


def bearer_transform():
"""
Transform the raw bearer token to the network handshaked token,
if and when needed.
"""
global gMe
year = str(time.gmtime().tm_year)
if gMe.op.bearerTransformedYear == year:
return
import hashlib
s256 = hashlib.sha256(year.encode('utf-8'))
s256.update(gMe.sec.bearerAuth.encode('utf-8'))
gMe.op.bearerTransformed = s256.hexdigest()
gMe.op.bearerTransformedYear = year


class ProxyHandler(http.server.BaseHTTPRequestHandler):
"""
Implements the logic for handling requests sent to this server.
"""

def send_headers_common(self):
"""
Common headers to include in responses from this server
"""
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', 'GET, OPTIONS')
self.send_header('Access-Control-Allow-Headers', '*')
self.end_headers()

def send_error(self, code: int, message: str | None = None, explain: str | None = None) -> None:

Check failure on line 74 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Alternative syntax for unions requires Python 3.10 or newer (reportGeneralTypeIssues)

Check failure on line 74 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Alternative syntax for unions requires Python 3.10 or newer (reportGeneralTypeIssues)
"""
Overrides the SendError helper
so that the common headers mentioned above can get added to them
else CORS failure will be triggered by the browser on fetch from browser.
"""
print(f"WARN:PH:SendError:{code}:{message}")
self.send_response(code, message)
self.send_headers_common()

def auth_check(self):
"""
Simple Bearer authorization
ALERT: For multiple reasons, this is a very insecure implementation.
"""
bearer_transform()
authline = self.headers['Authorization']
if authline == None:
return { 'AllOk': False, 'Msg': "No auth line" }
authlineA = authline.strip().split(' ')
if len(authlineA) != 2:
return { 'AllOk': False, 'Msg': "Invalid auth line" }
if authlineA[0] != 'Bearer':
return { 'AllOk': False, 'Msg': "Invalid auth type" }
if authlineA[1] != gMe.op.bearerTransformed:
return { 'AllOk': False, 'Msg': "Invalid auth" }
return { 'AllOk': True, 'Msg': "Auth Ok" }

def auth_and_run(self, pr:urllib.parse.ParseResult, handler:Callable[['ProxyHandler', urllib.parse.ParseResult], None]):
"""
If authorisation is ok for the request, run the specified handler.
"""
acGot = self.auth_check()
if not acGot['AllOk']:
self.send_error(400, f"WARN:{acGot['Msg']}")
else:
try:
handler(self, pr)
except Exception as e:
self.send_error(400, f"ERRR:ProxyHandler:{e}")

def _do_GET(self):
"""
Handle GET requests
"""
print(f"DBUG:ProxyHandler:GET:{self.address_string()}:{self.path}")
print(f"DBUG:PH:Get:Headers:{self.headers}")
pr = urllib.parse.urlparse(self.path)
print(f"DBUG:ProxyHandler:GET:{pr}")
match pr.path:

Check failure on line 123 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Match statements require Python 3.10 or newer
case '/urlraw':
self.auth_and_run(pr, mWeb.handle_urlraw)
case '/htmltext':
self.auth_and_run(pr, mWeb.handle_htmltext)
case '/xmlfiltered':
self.auth_and_run(pr, mWeb.handle_xmlfiltered)
case '/pdftext':
self.auth_and_run(pr, mPdf.handle_pdftext)
case '/aum':
handle_aum(self, pr)
case _:
print(f"WARN:ProxyHandler:GET:UnknownPath{pr.path}")
self.send_error(400, f"WARN:UnknownPath:{pr.path}")

def do_GET(self):
"""
Catch all / trap any exceptions wrt actual get based request handling.
"""
try:
self._do_GET()
except:
print(f"ERRR:PH:TheGET:{traceback.format_exception_only(sys.exception())}")

Check failure on line 145 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

"exception" is not a known attribute of module "sys" (reportAttributeAccessIssue)

Check failure on line 145 in tools/server/public_simplechat/MOVED/local.tools/simpleproxy.py

View workflow job for this annotation

GitHub Actions / pyright type-check

Argument missing for parameter "value" (reportCallIssue)
self.send_error(500, f"ERRR: handling request")

def do_OPTIONS(self):
"""
Handle OPTIONS for CORS preflights (just in case from browser)
"""
print(f"DBUG:ProxyHandler:OPTIONS:{self.path}")
self.send_response(200)
self.send_headers_common()

def handle(self) -> None:
"""
Helps handle ssl setup in the client specific thread, if in https mode
"""
print(f"\n\n\nDBUG:ProxyHandler:Handle:RequestFrom:{self.client_address}")
try:
if (gMe.op.sslContext):
self.request = gMe.op.sslContext.wrap_socket(self.request, server_side=True)
self.setup()
#self.rfile = self.request.makefile('rb', self.rbufsize)
#self.wfile = self.request.makefile('wb', self.wbufsize)
except:
print(f"ERRR:ProxyHandler:SSLHS:{traceback.format_exception_only(sys.exception())}")
return
return super().handle()


def handle_aum(ph: ProxyHandler, pr: urllib.parse.ParseResult):
"""
Handle requests to aum path, which is used in a simple way to
verify that one is communicating with this proxy server
"""
import importlib
queryParams = urllib.parse.parse_qs(pr.query)
url = queryParams['url']
print(f"DBUG:HandleAUM:Url:{url}")
url = url[0]
if (not url) or (len(url) == 0):
ph.send_error(400, f"WARN:HandleAUM:MissingUrl/UnknownQuery?!")
return
urlParts = url.split('.',1)
if gAllowedCalls.get(urlParts[0], None) == None:
ph.send_error(403, f"WARN:HandleAUM:Forbidden:{urlParts[0]}")
return
for dep in gAllowedCalls[urlParts[0]]:
try:
importlib.import_module(dep)
except ImportError as exc:
ph.send_error(400, f"WARN:HandleAUM:{urlParts[0]}:Support module [{dep}] missing or has issues")
return
print(f"INFO:HandleAUM:Availability ok for:{urlParts[0]}")
ph.send_response_only(200, "bharatavarshe")
ph.send_header('Access-Control-Allow-Origin', '*')
ph.end_headers()


def setup_server():
"""
Helps setup a http/https server
"""
try:
gMe.op.server = http.server.ThreadingHTTPServer(gMe.nw.server_address(), ProxyHandler)
if gMe.sec.get('keyFile') and gMe.sec.get('certFile'):
sslCtxt = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
sslCtxt.load_cert_chain(certfile=gMe.sec.certFile, keyfile=gMe.sec.keyFile)
sslCtxt.minimum_version = ssl.TLSVersion.MAXIMUM_SUPPORTED
sslCtxt.maximum_version = ssl.TLSVersion.MAXIMUM_SUPPORTED
gMe.op.sslContext = sslCtxt
print(f"INFO:SetupServer:Starting on {gMe.nw.server_address()}:Https mode")
else:
print(f"INFO:SetupServer:Starting on {gMe.nw.server_address()}:Http mode")
except Exception as exc:
print(f"ERRR:SetupServer:{traceback.format_exc()}")
raise RuntimeError(f"SetupServer:{exc}") from exc


def run():
try:
setup_server()
if not gMe.op.server:
raise RuntimeError("Server missing!!!")
gMe.op.server.serve_forever()
except KeyboardInterrupt:
print("INFO:Run:Shuting down...")
if gMe.op.server:
gMe.op.server.server_close()
sys.exit(0)
except Exception as exc:
print(f"ERRR:Run:Exiting:Exception:{exc}")
if gMe.op.server:
gMe.op.server.server_close()
sys.exit(1)


if __name__ == "__main__":
gMe.process_args(sys.argv)
run()
Loading
Loading